<?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>121637</bug_id>
          
          <creation_ts>2013-09-19 14:21:59 -0700</creation_ts>
          <short_desc>Move CCallHelpers and AssemblyHelpers into jit/ and have JSInterfaceJIT use them</short_desc>
          <delta_ts>2013-09-20 12:53:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>121651</dependson>
          <blocked>121641</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>931075</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-19 14:21:59 -0700</bug_when>
    <thetext>rs=msaboff, will post for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931086</commentid>
    <comment_count>1</comment_count>
      <attachid>212099</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-19 14:39:35 -0700</bug_when>
    <thetext>Created attachment 212099
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931093</commentid>
    <comment_count>2</comment_count>
      <attachid>212101</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-19 14:48:25 -0700</bug_when>
    <thetext>Created attachment 212101
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931095</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-19 14:50:11 -0700</bug_when>
    <thetext>Attachment 212101 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/bytecode/ValueRecovery.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAssemblyHelpers.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGBinarySwitch.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCCallHelpers.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDisassembler.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFPRInfo.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGPRInfo.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCompiler.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExit.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExit.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGRegisterBank.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGRegisterSet.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGRepatch.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSilentRegisterSavePlan.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGThunks.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVariableEvent.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCArgumentGetter.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCompile.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLExitThunkGenerator.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLink.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLThunks.cpp&apos;, u&apos;Source/JavaScriptCore/jit/AssemblyHelpers.cpp&apos;, u&apos;Source/JavaScriptCore/jit/AssemblyHelpers.h&apos;, u&apos;Source/JavaScriptCore/jit/CCallHelpers.h&apos;, u&apos;Source/JavaScriptCore/jit/FPRInfo.h&apos;, u&apos;Source/JavaScriptCore/jit/GPRInfo.h&apos;, u&apos;Source/JavaScriptCore/jit/JIT.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JIT.h&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JSInterfaceJIT.h&apos;, u&apos;Source/JavaScriptCore/jit/SpecializedThunkJIT.h&apos;, u&apos;Source/JavaScriptCore/jit/ThunkGenerators.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntThunks.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValue.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGJITCompiler.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/dfg/DFGJITCompiler.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/jit/AssemblyHelpers.h:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/jit/AssemblyHelpers.h:364:  The parameter name &quot;codeOrigin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/GPRInfo.h:123:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/GPRInfo.h:272:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/GPRInfo.h:372:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/jit/GPRInfo.h:373:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/ftl/FTLLink.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/dfg/DFGThunks.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/ftl/FTLCompile.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/jit/FPRInfo.h:65:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/jit/FPRInfo.h:136:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/bytecode/ValueRecovery.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/dfg/DFGRegisterBank.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/dfg/DFGRegisterBank.h:363:  gpr_iterator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/JavaScriptCore/dfg/DFGRegisterBank.h:364:  fpr_iterator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/JavaScriptCore/jit/JSInterfaceJIT.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/dfg/DFGGraph.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/dfg/DFGOSRExit.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/ftl/FTLThunks.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/dfg/DFGRepatch.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 22 in 41 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>931105</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-19 15:10:35 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/156120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931152</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-19 18:20:00 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 121651</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931182</commentid>
    <comment_count>6</comment_count>
      <attachid>212123</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-19 21:34:45 -0700</bug_when>
    <thetext>Created attachment 212123
patch for relanding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931186</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-19 21:37:25 -0700</bug_when>
    <thetext>Attachment 212123 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.h&apos;, u&apos;Source/JavaScriptCore/bytecode/ValueRecovery.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAssemblyHelpers.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGBinarySwitch.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCCallHelpers.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDisassembler.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFPRInfo.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGPRInfo.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCompiler.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExit.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExit.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGRegisterBank.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGRegisterSet.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGRepatch.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSilentRegisterSavePlan.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGThunks.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVariableEvent.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCArgumentGetter.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCompile.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLExitThunkGenerator.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLink.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLThunks.cpp&apos;, u&apos;Source/JavaScriptCore/jit/AssemblyHelpers.cpp&apos;, u&apos;Source/JavaScriptCore/jit/AssemblyHelpers.h&apos;, u&apos;Source/JavaScriptCore/jit/CCallHelpers.h&apos;, u&apos;Source/JavaScriptCore/jit/FPRInfo.h&apos;, u&apos;Source/JavaScriptCore/jit/GPRInfo.h&apos;, u&apos;Source/JavaScriptCore/jit/JIT.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JIT.h&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JSInterfaceJIT.h&apos;, u&apos;Source/JavaScriptCore/jit/SpecializedThunkJIT.h&apos;, u&apos;Source/JavaScriptCore/jit/ThunkGenerators.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntThunks.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValue.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/jit/AssemblyHelpers.h:364:  The parameter name &quot;codeOrigin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/GPRInfo.h:123:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/GPRInfo.h:272:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/GPRInfo.h:372:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/jit/GPRInfo.h:373:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/ftl/FTLCompile.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/jit/FPRInfo.h:65:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/jit/FPRInfo.h:136:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/bytecode/ValueRecovery.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/dfg/DFGRegisterBank.h:363:  gpr_iterator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/JavaScriptCore/dfg/DFGRegisterBank.h:364:  fpr_iterator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/JavaScriptCore/jit/JSInterfaceJIT.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 12 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931407</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-20 09:38:23 -0700</bug_when>
    <thetext>The latest patch appears to work perfectly on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931483</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-20 11:26:22 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; The latest patch appears to work perfectly on Windows.

Excellent.  Will reland then!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931535</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-20 12:53:24 -0700</bug_when>
    <thetext>Relanded in http://trac.webkit.org/changeset/156184</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212099</attachid>
            <date>2013-09-19 14:39:35 -0700</date>
            <delta_ts>2013-09-19 14:48:25 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>262457</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2MTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBA
CisyMDEzLTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBDQ2FsbEhlbHBlcnMgYW5kIEFzc2VtYmx5SGVscGVycyBpbnRvIGppdC8gYW5kIGhhdmUg
SlNJbnRlcmZhY2VKSVQgdXNlIHRoZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMTYzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICAKKyAgICAgICAgQWxzbyBtb3ZlZCBHUFJJbmZvL0ZQUkluZm8gaW50byBq
aXQvLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVj
b3ZlcnkuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6ZHVtcEluQ29udGV4dCk6Cisg
ICAgICAgICogZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
ZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdCaW5h
cnlTd2l0Y2guaDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBkZmcvREZHRGlz
YXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHRlBSSW5mby5oOiBSZW1vdmVkLgorICAg
ICAgICAqIGRmZy9ERkdHUFJJbmZvLmg6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgICogZGZnL0RG
R09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmg6CisgICAgICAg
ICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdSZWdp
c3RlckJhbmsuaDoKKyAgICAgICAgKiBkZmcvREZHUmVnaXN0ZXJTZXQuaDoKKyAgICAgICAgKiBk
ZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgICogZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBs
YW4uaDoKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFy
aWFibGVFdmVudC5jcHA6CisgICAgICAgICogZnRsL0ZUTENBcmd1bWVudEdldHRlci5oOgorICAg
ICAgICAoSlNDOjpGVEw6OkNBcmd1bWVudEdldHRlcjo6Q0FyZ3VtZW50R2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpDQXJndW1lbnRHZXR0ZXI6OmxvYWROZXh0OCk6CisgICAgICAgIChKU0M6
OkZUTDo6Q0FyZ3VtZW50R2V0dGVyOjpsb2FkTmV4dDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpD
QXJndW1lbnRHZXR0ZXI6OmxvYWROZXh0NjQpOgorICAgICAgICAoSlNDOjpGVEw6OkNBcmd1bWVu
dEdldHRlcjo6bG9hZE5leHRQdHIpOgorICAgICAgICAoSlNDOjpGVEw6OkNBcmd1bWVudEdldHRl
cjo6bG9hZE5leHREb3VibGUpOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAg
ICAgKiBmdGwvRlRMRXhpdFRodW5rR2VuZXJhdG9yLmg6CisgICAgICAgICogZnRsL0ZUTExpbmsu
Y3BwOgorICAgICAgICAqIGZ0bC9GVExUaHVua3MuY3BwOgorICAgICAgICAqIGppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5jcHAuCisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oLgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkFzc2VtYmx5SGVscGVycyk6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAgICAgKiBqaXQvQ0NhbGxI
ZWxwZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxI
ZWxwZXJzLmguCisgICAgICAgICogaml0L0ZQUkluZm8uaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmguCisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR1BSSW5mby5oLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpKSVQpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnN0cmlu
Z0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6
CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjpKU0ludGVyZmFjZUpJVCk6CisgICAgICAg
ICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRU
aHVua0pJVDo6U3BlY2lhbGl6ZWRUaHVua0pJVCk6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVk
VGh1bmtKSVQ6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoK
KyAgICAgICAgKEpTQzo6bGlua0ZvckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnZpcnR1YWxG
b3JHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpzdHJpbmdMZW5ndGhUcmFtcG9saW5lR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
YXJpdHlGaXh1cCk6CisgICAgICAgIChKU0M6OmNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OmNoYXJBdFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6ZnJvbUNo
YXJDb2RlVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpzcXJ0VGh1bmtHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpmbG9vclRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y2Vp
bFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cm91bmRUaHVua0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OmV4cFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bG9nVGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphYnNUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OnBvd1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6aW11bFRodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
Lmg6CisKIDIwMTMtMDktMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdIFN1YnN0aXR1dGUgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCkgZm9yIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNiBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAogICAgIGRmZy9ERkdB
cmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdBcnJheU1vZGUuY3Bw
Ci0gICAgZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKICAgICBkZmcvREZHQXRUYWlsQWJzdHJh
Y3RTdGF0ZS5jcHAKICAgICBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKICAg
ICBkZmcvREZHQmFzaWNCbG9jay5jcHAKQEAgLTIwOSw2ICsyMDgsNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKICAgICBpbnRl
cnByZXRlci9WTUluc3BlY3Rvci5jcHAKIAorICAgIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCiAg
ICAgaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwCiAgICAgaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
NTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtMTkyLDggKzE5Miw2IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggXAotCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgXApAQCAtMjA4LDcgKzIwNiw2IEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QnJhbmNoRGlyZWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQ
YXRoR2VuZXJhdG9yLmggXApAQCAtMjYxLDcgKzI1OCw2IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdFZGdlVXNlc1N0cnVjdHVyZS5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZQUkluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGYWls
ZWRGaW5hbGl6ZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZhaWxlZEZp
bmFsaXplci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpbHRyYXRpb25SZXN1
bHQuaCBcCkBAIC0yNzQsNyArMjcwLDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaExpdmVuZXNzQW5hbHlzaXNQaGFzZS5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hMaXZlbmVzc0FuYWx5c2lz
UGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5o
IFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oIFwKQEAgLTYwNCwxNCArNTk5LDE5IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVQcmVmaXguaCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ND
YWxsSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NvbXBhY3RKSVRDb2Rl
TWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGlu
ZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGlu
ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wu
Y3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dQUkluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0
Q2FsbFJldHVyblZhbHVlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2Fs
bFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRp
YzMyXzY0LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTU2
MDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkK
QEAgLTExNyw3ICsxMTcsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBkZmcvREZHQWJzdHJhY3RWYWx1
ZS5jcHAgXAogICAgIGRmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBcCiAg
ICAgZGZnL0RGR0FycmF5TW9kZS5jcHAgXAotICAgIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3Bw
IFwKICAgICBkZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAgXAogICAgIGRmZy9ERkdCYWNr
d2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0Jhc2ljQmxvY2suY3BwIFwK
QEAgLTIwNiw2ICsyMDUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAgXAogICAgIGludGVycHJldGVyL0pTU3RhY2suY3BwIFwKICAgICBpbnRlcnByZXRl
ci9TdGFja1Zpc2l0b3IuY3BwIFwKKyAgICBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBcCiAgICAg
aml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwIFwKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9j
YXRvckZpeGVkVk1Qb29sLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTU2
MDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2Miw3IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxKU1N0YWNrLmNwcCIgLz4NCiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxTdGFja1Zpc2l0b3IuY3BwIiAv
Pg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXFZNSW5zcGVjdG9yLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcQXNzZW1ibHlIZWxwZXJzLmNw
cCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcQ2xvc3VyZUNhbGxTdHViUm91
dGluZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEV4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxHQ0F3YXJl
SklUU3R1YlJvdXRpbmUuY3BwIiAvPg0KQEAgLTc1MSwxMCArNzUyLDE0IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxSZWdpc3Rlci5oIiAvPg0KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXFN0YWNrVmlzaXRvci5oIiAvPg0KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXFZNSW5zcGVjdG9yLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEFzc2VtYmx5SGVscGVycy5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxDQ2FsbEhlbHBlcnMuaCIgLz4NCiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxqaXRcQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIiAvPg0KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxDb21wYWN0SklUQ29kZU1hcC5oIiAvPg0KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxFeGVjdXRhYmxlQWxsb2NhdG9yLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEZQUkluZm8uaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxqaXRcR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caml0XEdQUkluZm8uaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxqaXRcSG9zdENhbGxSZXR1cm5WYWx1ZS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGppdFxKSVQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcSklU
Q29kZS5oIiAvPg0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxMSBAQAogCQkw
RjIzNUJFRDE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkU5MTcxNzhF
NzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwICovOyB9OwogCQkwRjIzNUJF
RTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIzNUJFQTE3MTc4RTczMDA2OTBD
N0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtS
ZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVz
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEYyNEU1NDAxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTUzQjE3RUE5RjU5MDBB
QkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCAqLzsgfTsKKwkJMEYyNEU1NDExN0VBOUY1OTAw
QUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1M0MxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVs
cGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGMjRFNTQyMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTNEMTdFQTlGNTkwMEFCQjIx
NyAvKiBDQ2FsbEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjI0RTU0MzE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1M0UxN0VBOUY1
OTAwQUJCMjE3IC8qIEZQUkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjI0RTU0NDE3RUE5RjU5MDBBQkIyMTcgLyogR1BSSW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1M0YxN0VB
OUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFy
cmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjU2QzM0MTYyN0IwQUEwMDdGMjc4MyAvKiBERkdDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBH
Q0luY29taW5nUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQjY2QTgxN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3Vu
dGVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyQjY2QUQxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QTkx
N0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjIsNyArMjY3LDYg
QEAKIAkJMEY3NjZENDQxNUIyQTNDMDAwOEYzNjNFIC8qIERGR1JlZ2lzdGVyU2V0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQ0MjE1QjJBM0JE
MDA4RjM2M0UgLyogREZHUmVnaXN0ZXJTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjc2NkQ0NjE1QjM3MDFGMDA4RjM2M0UgLyogREZHU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjc2NkQ0NTE1QjM3MDFEMDA4RjM2M0UgLyogREZHU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA5MTE0
MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLzsgfTsKLQkJMEY3QjI5NEEx
NEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8qIERG
R0NDYWxsSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTFGMTQx
NzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyog
REZHQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29tbW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MDIzRUExNjEzODMyQjAwQTBC
QTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNDAsOCArMzQ0LDYg
QEAKIAkJMEZCRTBGNzYxNkMxREIwRjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRTBGNkYx
NkMxREIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuY3BwICovOyB9OwogCQkwRkJF
MEY3NzE2QzFEQjEyMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRTBGNzAxNkMxREIwMTAwODJD
NUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NS
RXhpdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
MDk3NjgxNDY4QTZFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkMwOTc2RDE0NjhBQjRFMDBDRjI0NDIg
LyogREZHQXNzZW1ibHlIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkMwOTc2QzE0NjhBQjRBMDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxw
ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MEZDMDk3NkUxNDY4QUI1MTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc2QjE0NjhBQjRB
MDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxwZXJzLmNwcCAqLzsgfTsKIAkJMEZDMDk3NzExNDY5
M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3NkYxNDY5M0FFRjAwQ0YyNDQyIC8qIERG
R09TUkV4aXRDb21waWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGls
ZXI2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkMwOTc3MDE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwICovOyB9
OwogCQkwRkMwOTc3NjE0Njk0M0IwMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3
NzUxNDY5NDNBRDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcCAqLzsgfTsK
QEAgLTcyNSw4ICs3MjcsNiBAQAogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9B
c3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkFFNjRB
OTEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE2MTM1RTVFMUMwMDk2MzAxMiAv
KiBNYWNyb0Fzc2VtYmxlclNINC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2QUU2NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE3
MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4NkFFNkM0RDEzNkExMUU0MDA5NjMwMTIgLyog
REZHRlBSSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZBRTZDNEIxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4NkFFNkM0RTEzNkExMUU0MDA5
NjMwMTIgLyogREZHR1BSSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZBRTZDNEMxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0dQUkluZm8uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkI1ODI2NzE0
RDI3OTZDMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCNTgyMkUxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQ
cm9maWxlLmNwcCAqLzsgfTsKIAkJODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENvZGVQcm9m
aWxpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODYwM0NFRjIxNEM3NTQ2NDAwQUU1OUUzIC8qIENvZGVQcm9maWxpbmcuY3BwICovOyB9OwogCQk4
NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYg
LyogREZHUmVwYXRjaC5jcHAgKi87IH07CkBAIC0xMzEzLDYgKzEzMTMsMTEgQEAKIAkJMEYyMzVC
RTkxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwOyBw
YXRoID0gZGZnL0RGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMjM1QkVBMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdFByZXBhcmF0
aW9uLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdFByZXBhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVu
Y2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyNEU1M0IxN0VB
OUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBc3NlbWJseUhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VtYmx5SGVscGVycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTUzRDE3RUE5RjU5MDBBQkIyMTcgLyogQ0Nh
bGxIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENDYWxsSGVscGVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTUzRTE3RUE5RjU5MDBBQkIy
MTcgLyogRlBSSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGUFJJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjRFNTNGMTdFQTlGNTkwMEFCQjIx
NyAvKiBHUFJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQUkluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNTZDMzQxNjI3QjBBQTAwN0YyNzgz
IC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmg7IHBhdGggPSBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQjY2QTgxN0I2QjUzRDAwQTdBRTNG
IC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDSW5jb21pbmdSZWZD
b3VudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkI2NkE5MTdCNkI1M0Qw
MEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDYyLDcgKzE0NjcsNiBAQAogCQkwRjc2NkQ0NTE1QjM3MDFEMDA4RjM2M0UgLyogREZH
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oOyBwYXRoID0gZGZnL0RGR1NjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc3MDA4
RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGN0IyOTQ4MTRDM0NEMjMwMDdDM0RCMSAv
KiBERkdDQ2FsbEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
Q0NhbGxIZWxwZXJzLmg7IHBhdGggPSBkZmcvREZHQ0NhbGxIZWxwZXJzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQ5LDggKzE1NTMsNiBAQAogCQkwRkJF
MEY2RjE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdVbmlmaWNhdGlvblBoYXNlLmNwcDsgcGF0
aCA9IGRmZy9ERkdVbmlmaWNhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZCRTBGNzAxNkMxREIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVW5pZmljYXRpb25QaGFzZS5oOyBw
YXRoID0gZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZDMDk3NjgxNDY4QTZFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdC5oOyBwYXRoID0gZGZnL0RGR09TUkV4
aXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZDMDk3NkIxNDY4QUI0QTAwQ0Yy
NDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdBc3NlbWJseUhlbHBlcnMuY3BwOyBwYXRoID0gZGZnL0RGR0Fzc2VtYmx5
SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQzA5NzZDMTQ2OEFC
NEEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHQXNzZW1ibHlIZWxwZXJzLmg7IHBhdGggPSBkZmcvREZHQXNzZW1ibHlI
ZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzZGMTQ2OTNBRUYw
MENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBp
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzcwMTQ2OTNBRUYwMENG
MjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA7IHBhdGggPSBkZmcvREZHT1NS
RXhpdENvbXBpbGVyNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc3
NTE0Njk0M0FEMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3Bw
OyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE5MTcsOCArMTkxOSw2IEBACiAJCTg2QUREMTQ0MEZEREVBOTgwMDA2
RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODZBRTY0QTYxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyU0g0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3Nl
bWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU0g0QXNzZW1ibGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2QUU2QzRCMTM2QTExRTQwMDk2MzAxMiAv
KiBERkdGUFJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0ZQUklu
Zm8uaDsgcGF0aCA9IGRmZy9ERkdGUFJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg2QUU2QzRDMTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0dQUkluZm8uaDsgcGF0aCA9IGRmZy9ERkdHUFJJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjJDMTREMjJGNUYwMEE5QzMw
NiAvKiBQcm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJvZmlsZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjJF
MTREMjM3M0IwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb2RlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2QjU4MjJGMTREMjM3M0IwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjcwNCw2ICsyNzA0LDExIEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4
OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTBGMjRFNTNCMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuY3BwICovLAor
CQkJCTBGMjRFNTNDMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuaCAqLywKKwkJ
CQkwRjI0RTUzRDE3RUE5RjU5MDBBQkIyMTcgLyogQ0NhbGxIZWxwZXJzLmggKi8sCisJCQkJMEYy
NEU1M0UxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCAqLywKKwkJCQkwRjI0RTUzRjE3RUE5
RjU5MDBBQkIyMTcgLyogR1BSSW5mby5oICovLAogCQkJCTBGNzNEN0FCMTY1QTE0MkEwMEFDQUI3
MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLywKIAkJCQkwRjczRDdBQzE2NUExNDJB
MDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oICovLAogCQkJCTBGRDgyRTM3MTQx
QUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMzQ2NSw4ICszNDcw
LDYgQEAKIAkJCQkwRjA1QzNCMjE2ODNDRjhGMDBCQUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0
aEdlbmVyYXRvci5oICovLAogCQkJCTBGNjM5NDgxMTVFNDgxMTQwMDZBNTk3QyAvKiBERkdBcnJh
eU1vZGUuY3BwICovLAogCQkJCTBGNjM5NDgyMTVFNDgxMTQwMDZBNTk3QyAvKiBERkdBcnJheU1v
ZGUuaCAqLywKLQkJCQkwRkMwOTc2QjE0NjhBQjRBMDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxw
ZXJzLmNwcCAqLywKLQkJCQkwRkMwOTc2QzE0NjhBQjRBMDBDRjI0NDIgLyogREZHQXNzZW1ibHlI
ZWxwZXJzLmggKi8sCiAJCQkJQTdEOUEyOEYxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0F0VGFpbEFi
c3RyYWN0U3RhdGUuY3BwICovLAogCQkJCUE3RDlBMjkwMTdBMEJDNzQwMEVFMjYxOCAvKiBERkdB
dFRhaWxBYnN0cmFjdFN0YXRlLmggKi8sCiAJCQkJMEY3MTRDQTExNkVBOTJFRDAwRjNFQkVCIC8q
IERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwICovLApAQCAtMzQ4NCw3ICszNDg3LDYg
QEAKIAkJCQkwRjI1NkMzNDE2MjdCMEFBMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9y
U2xvd1BhdGhHZW5lcmF0b3IuaCAqLywKIAkJCQkwRkQ4MkUxRTE0MTcyQzJGMDAxNzlDOTQgLyog
REZHQ2FwYWJpbGl0aWVzLmNwcCAqLywKIAkJCQkwRkQ4MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyog
REZHQ2FwYWJpbGl0aWVzLmggKi8sCi0JCQkJMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8qIERG
R0NDYWxsSGVscGVycy5oICovLAogCQkJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdD
RkFQaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBo
YXNlLmggKi8sCiAJCQkJMEYzQjNBMjQxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZp
Y2F0aW9uUGhhc2UuY3BwICovLApAQCAtMzU0NSw5ICszNTQ3LDcgQEAKIAkJCQlBN0Q4OUNFOTE3
QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuaCAqLywKIAkJCQlBN0Q4OUNFQTE3QTBC
OENDMDA3NzNBRDggLyogREZHRmx1c2hMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwICovLAogCQkJ
CUE3RDg5Q0VCMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaExpdmVuZXNzQW5hbHlzaXNQaGFz
ZS5oICovLAotCQkJCTg2QUU2QzRCMTM2QTExRTQwMDk2MzAxMiAvKiBERkdGUFJJbmZvLmggKi8s
CiAJCQkJODZFQzlEQjYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dlbmVyYXRpb25JbmZvLmggKi8s
Ci0JCQkJODZBRTZDNEMxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0dQUkluZm8uaCAqLywKIAkJCQk4
NkVDOURCNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwICovLAogCQkJCTg2RUM5REI4
MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oICovLAogCQkJCUE3MDREOTAwMTdBMEJBQTgw
MDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgKi8sCkBAIC0zOTA5LDYgKzM5
MDksNyBAQAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTNBMzMyMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25T
bG93UGF0aHNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkUzOTE0MUFCMTRE
MDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjRF
NTQ0MTdFQTlGNTkwMEFCQjIxNyAvKiBHUFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0U1
QTNBODE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDM0Y0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb21wbGV0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkRCMkNFQTE3NDg5NkM3MDA3QjNDMUIgLyogQ29uY3VycmVudEpJVExvY2su
aCBpbiBIZWFkZXJzICovLApAQCAtMzk0OSw3ICszOTUwLDYgQEAKIAkJCQkwRjE2MDE1RTE1NjE5
OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwNUMzQjQxNjgzQ0Y5MjAwQkFGNDVCIC8qIERGR0FycmF5aWZ5U2xvd1Bh
dGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjM5NDg1MTVFNDgxMUIwMDZBNTk3
QyAvKiBERkdBcnJheU1vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGQzA5NzZEMTQ2OEFCNEUw
MENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDlB
Mjk1MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjcxNENBNTE2RUE5MkYyMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFn
YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzYxNDNGQ0QzQjAwNjhCNzdD
IC8qIERGR0Jhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovLApAQCAtMzk2MCw3ICszOTYwLDYgQEAK
IAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIx
NEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEY3QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjNCM0EyODE1NDRDOTk3MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmlj
YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyNDAxN0EwQkJGRDAwQThEQjgx
IC8qIERGR0Nsb2JiZXJpemUuaCBpbiBIZWFkZXJzICovLApAQCAtMzk5NCw5ICszOTkzLDcgQEAK
IAkJCQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdEODlDRjgxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQTE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hM
aXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTg2QUU2QzREMTM2QTEx
RTQwMDk2MzAxMiAvKiBERkdGUFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNjEz
MjhERjgyMDAyQjJBRDcgLyogREZHR2VuZXJhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJ
CTg2QUU2QzRFMTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkVDOURDODEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3MDREOTA2MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDMjExNTFFODAzQjAwQ0Q4OTEwIC8qIERGR0lu
c2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCkBAIC00MTM4LDYgKzQxMzUsNyBAQAogCQkJCUMy
NEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzJFNTI2QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjRFNTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZv
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIElu
Y3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVEOEU0NjAw
RjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQyMTIsNiArNDIx
MCw3IEBACiAJCQkJQkMxOEM0MUYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjExN0I2QjVBQjAwQTdBRTNGIC8qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjI0RTU0MTE3RUE5
RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZGMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZGNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQzODAsNiArNDM3OSw3IEBACiAJCQkJMEZCMTA1OEMx
Njc1NDgzMzAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCMTA1OEUxNjc1NDgzQTAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdFNpdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMTM5MTJDMTY3NzFDM0QwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVk
Qnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjI0RTU0MjE3RUE5RjU5MDBBQkIyMTcg
LyogQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0ZCNjEwMDEwNDBDMzhCMDAx
N0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk1NDM3
RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2MTU4QUIzMTU1QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFk
ZXJzICovLApAQCAtNDg5OSw3ICs0ODk5LDYgQEAKIAkJCQkwRjU1QzE5NDE3Mjc2RTQ2MDBDRUFC
RkQgLyogREZHQWJzdHJhY3RWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE2MDE1RDE1
NjE5OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjYzOTQ4NDE1RTQ4MTE4MDA2QTU5N0MgLyogREZHQXJyYXlNb2Rl
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGQzA5NzZFMTQ2OEFCNTEwMENGMjQ0MiAvKiBERkdB
c3NlbWJseUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEOUEyOTQxN0EwQkM3NDAw
RUUyNjE4IC8qIERGR0F0VGFpbEFic3RyYWN0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY3MTRDQTQxNkVBOTJGMDAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jh
c2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00OTYyLDYgKzQ5NjEsNyBAQAogCQkJCTBG
RUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMjM1QkVEMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0
UHJlcGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUIxNEVGOTBBRDAwQzcy
NTMyIC8qIERGR1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMjRFNTQwMTdFQTlGNTkw
MEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc4QTk3
N0ExNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZC
RTBGNzQxNkMxREIwOTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHJldmlzaW9uIDE1NjA3
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNkZWZpbmUgVmFsdWVSZWNvdmVyeV9oCiAK
ICNpbmNsdWRlICJEYXRhRm9ybWF0LmgiCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUg
IkZQUkluZm8uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTMyMywyOSArMzI1LDI5
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG91dC5wcmludGYoIihkb3VibGUpIik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgSW5HUFI6Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIlJXIlZCIsIGdwcigpKTsKKyAgICAgICAgICAgIG91dC5wcmludChncHIoKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCJpbnQzMiglJXIlZCkiLCBncHIoKSk7CisgICAgICAgICAgICBvdXQucHJp
bnQoImludDMyKCIsIGdwcigpLCAiKSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBj
YXNlIFVuYm94ZWRJbnQ1MkluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50ZigiaW50NTIoJSVy
JWQpIiwgZ3ByKCkpOworICAgICAgICAgICAgb3V0LnByaW50KCJpbnQ1MygiLCBncHIoKSwgIiki
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJ
bkdQUjoKLSAgICAgICAgICAgIG91dC5wcmludGYoInN0cmljdEludDUyKCUlciVkKSIsIGdwcigp
KTsKKyAgICAgICAgICAgIG91dC5wcmludCgic3RyaWN0SW50NTIoIiwgZ3ByKCksICIpIik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKLSAg
ICAgICAgICAgIG91dC5wcmludGYoImJvb2woJSVyJWQpIiwgZ3ByKCkpOworICAgICAgICAgICAg
b3V0LnByaW50KCJib29sKCIsIGdwcigpLCAiKSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIFVJbnQzMkluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50ZigidWludDMyKCUl
ciVkKSIsIGdwcigpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgidWludDMyKCIsIGdwcigpLCAi
KSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIEluRlBSOgotICAgICAgICAg
ICAgb3V0LnByaW50ZigiJSVmciVkIiwgZnByKCkpOworICAgICAgICAgICAgb3V0LnByaW50KGZw
cigpKTsKICAgICAgICAgICAgIHJldHVybjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAg
ICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAgIG91dC5wcmludGYoInBhaXIoJSVyJWQsICUlciVk
KSIsIHRhZ0dQUigpLCBwYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgb3V0LnByaW50KCJwYWly
KCIsIHRhZ0dQUigpLCAiLCAiLCBwYXlsb2FkR1BSKCksICIpIik7CiAgICAgICAgICAgICByZXR1
cm47CiAjZW5kaWYKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVs
cGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVycy5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLW5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotRXhlY3V0YWJsZUJhc2UqIEFzc2VtYmx5
SGVscGVyczo6ZXhlY3V0YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQotewot
ICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIHJldHVybiBtX2Nv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci0gICAgCi0gICAgcmV0dXJuIGNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpOwotfQotCi1WZWN0b3I8Qnl0ZWNvZGVB
bmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29kZU1hcEZvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBBU1NFUlQoY29kZUJsb2NrID09IGNvZGVCbG9jay0+
YmFzZWxpbmVWZXJzaW9uKCkpOwotICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+aml0Q29kZU1hcCgp
KTsKLSAgICAKLSAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hp
bmVPZmZzZXQ+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX2RlY29kZWRDb2RlTWFwcy5hZGQoY29k
ZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PigpKTsKLSAgICAKLSAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5k
ZWNvZGUocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7Ci19Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi12b2lkIEFz
c2VtYmx5SGVscGVyczo6c2V0U2FtcGxpbmdGbGFnKGludDMyX3QgZmxhZykKLXsKLSAgICBBU1NF
UlQoZmxhZyA+PSAxKTsKLSAgICBBU1NFUlQoZmxhZyA8PSAzMik7Ci0gICAgb3IzMihUcnVzdGVk
SW1tMzIoMXUgPDwgKGZsYWcgLSAxKSksIEFic29sdXRlQWRkcmVzcyhTYW1wbGluZ0ZsYWdzOjph
ZGRyZXNzT2ZGbGFncygpKSk7Ci19Ci0KLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjbGVhclNhbXBs
aW5nRmxhZyhpbnQzMl90IGZsYWcpCi17Ci0gICAgQVNTRVJUKGZsYWcgPj0gMSk7Ci0gICAgQVNT
RVJUKGZsYWcgPD0gMzIpOwotICAgIGFuZDMyKFRydXN0ZWRJbW0zMih+KDF1IDw8IChmbGFnIC0g
MSkpKSwgQWJzb2x1dGVBZGRyZXNzKFNhbXBsaW5nRmxhZ3M6OmFkZHJlc3NPZkZsYWdzKCkpKTsK
LX0KLSNlbmRpZgotCi0jaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQotI2lmIFVTRShKU1ZBTFVF
NjQpCi12b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNJbnQzMihHUFJSZWcgZ3ByKQot
ewotI2lmIENQVShYODZfNjQpCi0gICAgSnVtcCBjaGVja0ludDMyID0gYnJhbmNoNjQoQmVsb3dP
ckVxdWFsLCBncHIsIFRydXN0ZWRJbW02NChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4RkZGRkZG
RkZ1KSkpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0ludDMyLmxpbmsodGhpcyk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShncHIpOwotI2VuZGlmCi19Ci0KLXZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnIGdwcikKLXsKLSAgICBKdW1wIGNoZWNr
SlNJbnQzMiA9IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0pTSW50MzIubGluayh0
aGlzKTsKLX0KLQotdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNOdW1iZXIoR1BS
UmVnIGdwcikKLXsKLSAgICBKdW1wIGNoZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsK
LSAgICBicmVha3BvaW50KCk7Ci0gICAgY2hlY2tKU051bWJlci5saW5rKHRoaXMpOwotfQotCi12
b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcgZ3ByKQotewot
ICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgSnVtcCBjaGVja0pTTnVtYmVyID0gYnJh
bmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3Rlcik7Ci0gICAgY2hlY2tKU0ludDMyLmxpbmsodGhpcyk7Ci0gICAgYnJlYWtw
b2ludCgpOwotICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsKLX0KLQotdm9pZCBBc3NlbWJs
eUhlbHBlcnM6OmppdEFzc2VydElzQ2VsbChHUFJSZWcgZ3ByKQotewotICAgIEp1bXAgY2hlY2tD
ZWxsID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7Ci0gICAgYnJlYWtwb2ludCgpOwotICAgIGNoZWNrQ2VsbC5saW5rKHRo
aXMpOwotfQotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpq
aXRBc3NlcnRJc0ludDMyKEdQUlJlZyBncHIpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGdwcik7Ci19
Ci0KLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnIGdwcikK
LXsKLSAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDMyKEVxdWFsLCBncHIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0pT
SW50MzIubGluayh0aGlzKTsKLX0KLQotdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElz
SlNOdW1iZXIoR1BSUmVnIGdwcikKLXsKLSAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDMy
KEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIEp1bXAg
Y2hlY2tKU0RvdWJsZSA9IGJyYW5jaDMyKEJlbG93LCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpMb3dlc3RUYWcpKTsKLSAgICBicmVha3BvaW50KCk7Ci0gICAgY2hlY2tKU0ludDMyLmxpbmso
dGhpcyk7Ci0gICAgY2hlY2tKU0RvdWJsZS5saW5rKHRoaXMpOwotfQotCi12b2lkIEFzc2VtYmx5
SGVscGVyczo6aml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcgZ3ByKQotewotICAgIEp1bXAgY2hl
Y2tKU0RvdWJsZSA9IGJyYW5jaDMyKEJlbG93LCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpM
b3dlc3RUYWcpKTsKLSAgICBicmVha3BvaW50KCk7Ci0gICAgY2hlY2tKU0RvdWJsZS5saW5rKHRo
aXMpOwotfQotCi12b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNDZWxsKEdQUlJlZyBn
cHIpCi17Ci0gICAgSnVtcCBjaGVja0NlbGwgPSBicmFuY2gzMihFcXVhbCwgZ3ByLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0Nl
bGwubGluayh0aGlzKTsKLX0KLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQotCi12b2lkIEFz
c2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKQotewotICAgIEp1bXAg
Y2hlY2tDRlIgPSBicmFuY2hUZXN0UHRyKFplcm8sIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBUcnVzdGVkSW1tMzIoNykpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0NGUi5saW5r
KHRoaXMpOwotfQotI2VuZGlmIC8vIERGR19FTkFCTEUoSklUX0FTU0VSVCkKLQotfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAkocmV2aXNp
b24gMTU2MDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR0Fzc2VtYmx5SGVs
cGVyc19oCi0jZGVmaW5lIERGR0Fzc2VtYmx5SGVscGVyc19oCi0KLSNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgi
Ci0jaW5jbHVkZSAiREZHRlBSSW5mby5oIgotI2luY2x1ZGUgIkRGR0dQUkluZm8uaCIKLSNpbmNs
dWRlICJERkdKSVRDb2RlLmgiCi0jaW5jbHVkZSAiREZHTm9kZS5oIgotI2luY2x1ZGUgIlZNLmgi
Ci0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewotCi10eXBlZGVmIHZvaWQgKCpWX0RGR0RlYnVnT3BlcmF0aW9uX0VQUCkoRXhlY1N0
YXRlKiwgdm9pZCosIHZvaWQqKTsKLQotY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1h
Y3JvQXNzZW1ibGVyIHsKLXB1YmxpYzoKLSAgICBBc3NlbWJseUhlbHBlcnMoVk0qIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKLSAgICAgICAgOiBtX3ZtKHZtKQotICAgICAgICAsIG1fY29kZUJs
b2NrKGNvZGVCbG9jaykKLSAgICAgICAgLCBtX2Jhc2VsaW5lQ29kZUJsb2NrKGNvZGVCbG9jayA/
IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkgOiAwKQotICAgIHsKLSAgICAgICAgaWYgKG1f
Y29kZUJsb2NrKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9iYXNlbGluZUNvZGVCbG9jayk7Ci0g
ICAgICAgICAgICBBU1NFUlQoIW1fYmFzZWxpbmVDb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwot
ICAgICAgICAgICAgQVNTRVJUKG1fYmFzZWxpbmVDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRD
b2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2soKSB7IHJldHVybiBtX2NvZGVCbG9jazsgfQotICAgIFZNKiB2bSgpIHsgcmV0
dXJuIG1fdm07IH0KLSAgICBBc3NlbWJsZXJUeXBlX1QmIGFzc2VtYmxlcigpIHsgcmV0dXJuIG1f
YXNzZW1ibGVyOyB9Ci0gICAgCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKLSAgICB2b2lk
IHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJSZWcgcmVnKQotICAgIHsKLSAgICAg
ICAgcG9wKHJlZyk7Ci0gICAgfQotCi0gICAgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9y
ZVJldHVybihHUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgcHVzaChyZWcpOwotICAgIH0KLQot
ICAgIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNz
KQotICAgIHsKLSAgICAgICAgcHVzaChhZGRyZXNzKTsKLSAgICB9Ci0jZW5kaWYgLy8gQ1BVKFg4
Nl82NCkgfHwgQ1BVKFg4NikKLQotI2lmIENQVShBUk0pCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKLSAgICB7Ci0g
ICAgICAgIG1vdmUobGlua1JlZ2lzdGVyLCByZWcpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykK
LSAgICB7Ci0gICAgICAgIG1vdmUocmVnLCBsaW5rUmVnaXN0ZXIpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNz
IGFkZHJlc3MpCi0gICAgewotICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIGxpbmtSZWdpc3Rlcik7
Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBDUFUoTUlQUykKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAg
ICAgICAgbW92ZShyZXR1cm5BZGRyZXNzUmVnaXN0ZXIsIHJlZyk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVy
SUQgcmVnKQotICAgIHsKLSAgICAgICAgbW92ZShyZWcsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVm
b3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWRQdHIoYWRkcmVz
cywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIENQVShTSDQp
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChS
ZWdpc3RlcklEIHJlZykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c3ByKHJlZyk7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3Jl
UmV0dXJuKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRzcHIo
cmVnKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZFB0ckxp
bmtSZWcoYWRkcmVzcyk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lkIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBHUFJS
ZWcgdG8pCi0gICAgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKLSAgICB9Ci0gICAgdm9p
ZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoR1BSUmVnIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFt
ZUhlYWRlckVudHJ5IGVudHJ5KQotICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBz
dG9yZTY0KGZyb20sIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICog
c2l6ZW9mKFJlZ2lzdGVyKSkpOwotI2Vsc2UKLSAgICAgICAgc3RvcmUzMihmcm9tLCBBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsK
LSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVh
ZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKLSAg
ICB7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIodmFsdWUpLCBBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsKLSAgICB9
Ci0KLSAgICBKdW1wIGJyYW5jaElmTm90Q2VsbChHUFJSZWcgcmVnKQotICAgIHsKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCByZWcsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0jZWxzZQotICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZWcsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIEFk
ZHJlc3MgYWRkcmVzc0ZvcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZpcnR1
YWxSZWdpc3RlciAqIHNpemVvZihSZWdpc3RlcikpOwotICAgIH0KLSAgICBzdGF0aWMgQWRkcmVz
cyBhZGRyZXNzRm9yKGludCBvcGVyYW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZHJlc3NG
b3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIEFkZHJlc3MgdGFnRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCi0g
ICAgewotICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
dmlydHVhbFJlZ2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgfQotICAgIHN0YXRpYyBBZGRy
ZXNzIHRhZ0ZvcihpbnQgb3BlcmFuZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWdGb3Ioc3Rh
dGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IEFkZHJlc3MgcGF5bG9hZEZvcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZp
cnR1YWxSZWdpc3RlciAqIHNpemVvZihSZWdpc3RlcikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKLSAgICB9Ci0gICAgc3RhdGljIEFk
ZHJlc3MgcGF5bG9hZEZvcihpbnQgb3BlcmFuZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwYXls
b2FkRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpOwotICAgIH0KLQot
ICAgIEp1bXAgYnJhbmNoSWZOb3RPYmplY3QoR1BSUmVnIHN0cnVjdHVyZVJlZykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywgU3RydWN0
dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIEdQUlJlZyBzZWxlY3RTY3JhdGNoR1BSKEdQUlJlZyBwcmVzZXJ2
ZTEgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcgcHJlc2VydmUyID0gSW52YWxpZEdQUlJlZywgR1BS
UmVnIHByZXNlcnZlMyA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTQgPSBJbnZhbGlk
R1BSUmVnKQotICAgIHsKLSAgICAgICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJbmZvOjpyZWdUMCAm
JiBwcmVzZXJ2ZTIgIT0gR1BSSW5mbzo6cmVnVDAgJiYgcHJlc2VydmUzICE9IEdQUkluZm86OnJl
Z1QwICYmIHByZXNlcnZlNCAhPSBHUFJJbmZvOjpyZWdUMCkKLSAgICAgICAgICAgIHJldHVybiBH
UFJJbmZvOjpyZWdUMDsKLQotICAgICAgICBpZiAocHJlc2VydmUxICE9IEdQUkluZm86OnJlZ1Qx
ICYmIHByZXNlcnZlMiAhPSBHUFJJbmZvOjpyZWdUMSAmJiBwcmVzZXJ2ZTMgIT0gR1BSSW5mbzo6
cmVnVDEgJiYgcHJlc2VydmU0ICE9IEdQUkluZm86OnJlZ1QxKQotICAgICAgICAgICAgcmV0dXJu
IEdQUkluZm86OnJlZ1QxOwotCi0gICAgICAgIGlmIChwcmVzZXJ2ZTEgIT0gR1BSSW5mbzo6cmVn
VDIgJiYgcHJlc2VydmUyICE9IEdQUkluZm86OnJlZ1QyICYmIHByZXNlcnZlMyAhPSBHUFJJbmZv
OjpyZWdUMiAmJiBwcmVzZXJ2ZTQgIT0gR1BSSW5mbzo6cmVnVDIpCi0gICAgICAgICAgICByZXR1
cm4gR1BSSW5mbzo6cmVnVDI7Ci0KLSAgICAgICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJbmZvOjpy
ZWdUMyAmJiBwcmVzZXJ2ZTIgIT0gR1BSSW5mbzo6cmVnVDMgJiYgcHJlc2VydmUzICE9IEdQUklu
Zm86OnJlZ1QzICYmIHByZXNlcnZlNCAhPSBHUFJJbmZvOjpyZWdUMykKLSAgICAgICAgICAgIHJl
dHVybiBHUFJJbmZvOjpyZWdUMzsKLQotICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDQ7Ci0g
ICAgfQotCi0gICAgLy8gQWRkIGEgZGVidWcgY2FsbC4gVGhpcyBjYWxsIGhhcyBubyBlZmZlY3Qg
b24gSklUIGNvZGUgZXhlY3V0aW9uIHN0YXRlLgotICAgIHZvaWQgZGVidWdDYWxsKFZfREZHRGVi
dWdPcGVyYXRpb25fRVBQIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKLSAgICB7Ci0gICAgICAg
IHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgICAg
IFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSBtX3ZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6
ZShzY3JhdGNoU2l6ZSk7Ci0gICAgICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNf
Y2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0KLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
OyArK2kpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgc3RvcmU2NChHUFJJbmZv
Ojp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsKLSNlbHNlCi0gICAgICAgICAgICBzdG9yZTMy
KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2VuZGlmCi0gICAgICAgIH0K
LQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnM7ICsraSkgewotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciArIEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
ICAgIHN0b3JlRG91YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIEdQUkluZm86OnJlZ1QwKTsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0
aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBHUFJJ
bmZvOjpyZWdUMCk7Ci0KLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykg
fHwgQ1BVKFNINCkKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoID0g
c2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSNlbGlmIENQVShYODYpCi0gICAgICAgIHBv
a2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDApOwotICAgICAgICBwb2tlKFRydXN0ZWRJ
bW1QdHIoYXJndW1lbnQpLCAxKTsKLSAgICAgICAgcG9rZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciks
IDIpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IEdQUkluZm86OnJlZ1QwOwotI2Vsc2UKLSNl
cnJvciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgotI2VuZGlmCi0g
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlv
bikpLCBzY3JhdGNoKTsKLSAgICAgICAgY2FsbChzY3JhdGNoKTsKLQotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEdQUkluZm86OnJlZ1Qw
KTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgewotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciAr
IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkp
OwotICAgICAgICB9Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAg
IGxvYWQ2NChidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbHNlCi0gICAg
ICAgICAgICBsb2FkMzIoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7Ci0jZW5k
aWYKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRoZXNlIG1ldGhvZHMgSklUIGdlbmVyYXRl
IGR5bmFtaWMsIGRlYnVnLW9ubHkgY2hlY2tzIC0gYWtpbiB0byBBU1NFUlRzLgotI2lmIERGR19F
TkFCTEUoSklUX0FTU0VSVCkKLSAgICB2b2lkIGppdEFzc2VydElzSW50MzIoR1BSUmVnKTsKLSAg
ICB2b2lkIGppdEFzc2VydElzSlNJbnQzMihHUFJSZWcpOwotICAgIHZvaWQgaml0QXNzZXJ0SXNK
U051bWJlcihHUFJSZWcpOwotICAgIHZvaWQgaml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcpOwot
ICAgIHZvaWQgaml0QXNzZXJ0SXNDZWxsKEdQUlJlZyk7Ci0gICAgdm9pZCBqaXRBc3NlcnRIYXNW
YWxpZENhbGxGcmFtZSgpOwotI2Vsc2UKLSAgICB2b2lkIGppdEFzc2VydElzSW50MzIoR1BSUmVn
KSB7IH0KLSAgICB2b2lkIGppdEFzc2VydElzSlNJbnQzMihHUFJSZWcpIHsgfQotICAgIHZvaWQg
aml0QXNzZXJ0SXNKU051bWJlcihHUFJSZWcpIHsgfQotICAgIHZvaWQgaml0QXNzZXJ0SXNKU0Rv
dWJsZShHUFJSZWcpIHsgfQotICAgIHZvaWQgaml0QXNzZXJ0SXNDZWxsKEdQUlJlZykgeyB9Ci0g
ICAgdm9pZCBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpIHsgfQotI2VuZGlmCi0KLSAgICAv
LyBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiBkb3VibGVzLCBhbmQgZG91YmxlcyBib3hl
ZCBhbmQgSlNWYWx1ZXMuCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBHUFJSZWcgYm94RG91Ymxl
KEZQUlJlZyBmcHIsIEdQUlJlZyBncHIpCi0gICAgewotICAgICAgICBtb3ZlRG91YmxlVG82NChm
cHIsIGdwcik7Ci0gICAgICAgIHN1YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwg
Z3ByKTsKLSAgICAgICAgaml0QXNzZXJ0SXNKU0RvdWJsZShncHIpOwotICAgICAgICByZXR1cm4g
Z3ByOwotICAgIH0KLSAgICBGUFJSZWcgdW5ib3hEb3VibGUoR1BSUmVnIGdwciwgRlBSUmVnIGZw
cikKLSAgICB7Ci0gICAgICAgIGppdEFzc2VydElzSlNEb3VibGUoZ3ByKTsKLSAgICAgICAgYWRk
NjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOwotICAgICAgICBtb3ZlNjRU
b0RvdWJsZShncHIsIGZwcik7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAgfQotICAgIAotICAg
IHZvaWQgYm94SW50NTIoR1BSUmVnIHNvdXJjZSwgR1BSUmVnIHRhcmdldCwgR1BSUmVnIHNjcmF0
Y2gsIEZQUlJlZyBmcFNjcmF0Y2gpCi0gICAgewotICAgICAgICAvLyBJcyBpdCBhbiBpbnQzMj8K
LSAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoc291cmNlLCBzY3JhdGNoKTsKLSAgICAgICAgSnVt
cCBpc0ludDMyID0gYnJhbmNoNjQoRXF1YWwsIHNvdXJjZSwgc2NyYXRjaCk7Ci0gICAgICAgIAot
ICAgICAgICAvLyBOb3BlLCBpdCdzIG5vdCwgYnV0IHJlZ1QwIGNvbnRhaW5zIHRoZSBpbnQ2NCB2
YWx1ZS4KLSAgICAgICAgY29udmVydEludDY0VG9Eb3VibGUoc291cmNlLCBmcFNjcmF0Y2gpOwot
ICAgICAgICBib3hEb3VibGUoZnBTY3JhdGNoLCB0YXJnZXQpOwotICAgICAgICBKdW1wIGRvbmUg
PSBqdW1wKCk7Ci0gICAgICAgIAotICAgICAgICBpc0ludDMyLmxpbmsodGhpcyk7Ci0gICAgICAg
IHplcm9FeHRlbmQzMlRvUHRyKHNvdXJjZSwgdGFyZ2V0KTsKLSAgICAgICAgb3I2NChHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRhcmdldCk7Ci0gICAgICAgIAotICAgICAgICBkb25l
LmxpbmsodGhpcyk7Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAg
IHZvaWQgYm94RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2Fk
R1BSKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZVRvSW50cyhmcHIsIHBheWxvYWRHUFIsIHRh
Z0dQUik7Ci0gICAgfQotICAgIHZvaWQgdW5ib3hEb3VibGUoR1BSUmVnIHRhZ0dQUiwgR1BSUmVn
IHBheWxvYWRHUFIsIEZQUlJlZyBmcHIsIEZQUlJlZyBzY3JhdGNoRlBSKQotICAgIHsKLSAgICAg
ICAgbW92ZUludHNUb0RvdWJsZShwYXlsb2FkR1BSLCB0YWdHUFIsIGZwciwgc2NyYXRjaEZQUik7
Ci0gICAgfQotI2VuZGlmCi0gICAgCi0gICAgZW51bSBFeGNlcHRpb25DaGVja0tpbmQgeyBOb3Jt
YWxFeGNlcHRpb25DaGVjaywgSW52ZXJ0ZWRFeGNlcHRpb25DaGVjayB9OwotICAgIEp1bXAgZW1p
dEV4Y2VwdGlvbkNoZWNrKEV4Y2VwdGlvbkNoZWNrS2luZCBraW5kID0gTm9ybWFsRXhjZXB0aW9u
Q2hlY2spCi0gICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgcmV0dXJuIGJyYW5jaFRlc3Q2
NChraW5kID09IE5vcm1hbEV4Y2VwdGlvbkNoZWNrID8gTm9uWmVybyA6IFplcm8sIEFic29sdXRl
QWRkcmVzcyh2bSgpLT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkpOwotI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLSAgICByZXR1cm4gYnJhbmNoMzIoa2luZCA9PSBOb3JtYWxFeGNlcHRpb25DaGVjayA/
IE5vdEVxdWFsIDogRXF1YWwsIEFic29sdXRlQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNoYXIq
Pih2bSgpLT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMudGFnKSksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7Ci0j
ZW5kaWYKLSAgICB9Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfQ09VTlRFUlMpCi0gICAgc3RhdGlj
IHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVyJiBqaXQsIEFic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyJiBjb3VudGVyLCBpbnQzMl90IGluY3JlbWVudCA9IDEpCi0gICAgewotICAgICAgICBqaXQu
YWRkNjQoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFk
ZHJlc3NPZkNvdW50ZXIoKSkpOwotICAgIH0KLSAgICB2b2lkIGVtaXRDb3VudChBYnN0cmFjdFNh
bXBsaW5nQ291bnRlciYgY291bnRlciwgaW50MzJfdCBpbmNyZW1lbnQgPSAxKQotICAgIHsKLSAg
ICAgICAgYWRkNjQoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3Vu
dGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwotICAgIH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFNB
TVBMSU5HX0ZMQUdTKQotICAgIHZvaWQgc2V0U2FtcGxpbmdGbGFnKGludDMyX3QpOwotICAgIHZv
aWQgY2xlYXJTYW1wbGluZ0ZsYWcoaW50MzJfdCBmbGFnKTsKLSNlbmRpZgotCi0gICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdEZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewot
ICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsK
LSAgICB9Ci0gICAgCi0gICAgYm9vbCBzdHJpY3RNb2RlRm9yKENvZGVPcmlnaW4gY29kZU9yaWdp
bikKLSAgICB7Ci0gICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAg
ICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpOwotICAgICAgICByZXR1
cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5leGVjdXRhYmxlLmdldCgpKS0+aXNTdHJpY3RNb2RlKCk7Ci0gICAgfQotICAgIAotICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4p
OwotICAgIAotICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9j
a0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJs
b2NrKCkpOwotICAgIH0KLSAgICAKLSAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9y
KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQotICAgIHsKLSAgICAgICAgaWYgKCFp
bmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2soKTsK
LSAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGlu
ZUNhbGxGcmFtZSk7Ci0gICAgfQotICAgIAotICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmFzZWxpbmVDb2RlQmxvY2s7Ci0gICAgfQot
ICAgIAotICAgIGludCBhcmd1bWVudHNSZWdpc3RlckZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAgICAg
ICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5hcmd1bWVudHNSZWdpc3RlcigpOwotICAgICAgICAK
LSAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKAotICAg
ICAgICAgICAgaW5saW5lQ2FsbEZyYW1lKS0+YXJndW1lbnRzUmVnaXN0ZXIoKSArIGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQ7Ci0gICAgfQotICAgIAotICAgIGludCBhcmd1bWVudHNSZWdp
c3RlckZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFyZ3VtZW50c1JlZ2lzdGVyRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKLSAg
ICB9Ci0gICAgCi0gICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlRm9yKGNvbnN0IENv
ZGVPcmlnaW4mIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2Rl
QmxvY2tGb3IoY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCk7Ci0gICAgfQotCi0gICAgaW50IG9m
ZnNldE9mTG9jYWxzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAg
ICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KiBzaXplb2YoUmVnaXN0ZXIpOwotICAgIH0KLQotICAgIGludCBvZmZzZXRPZkFyZ3VtZW50c0lu
Y2x1ZGluZ1RoaXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAg
IGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkgKiBzaXplb2YoUmVnaXN0ZXIp
OwotICAgICAgICByZXR1cm4gKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApKSAqIHNpemVvZihS
ZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4m
IGRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayopOwotICAgIAotcHJvdGVjdGVkOgotICAgIFZN
KiBtX3ZtOwotICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgQ29kZUJsb2NrKiBtX2Jh
c2VsaW5lQ29kZUJsb2NrOwotCi0gICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNv
ZGVBbmRNYWNoaW5lT2Zmc2V0PiA+IG1fZGVjb2RlZENvZGVNYXBzOwotfTsKLQotfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRpZiAv
LyBERkdBc3NlbWJseUhlbHBlcnNfaAotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0JpbmFyeVN3aXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmluYXJ5U3dpdGNoLmgJKHJldmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmluYXJ5U3dpdGNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZHR1BSSW5mby5oIgor
I2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTU2MDc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgog
I2luY2x1ZGUgIkRGR0FycmF5TW9kZS5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgor
I2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCShyZXZpc2lv
biAxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR0NDYWxsSGVscGVyc19oCi0jZGVm
aW5lIERGR0NDYWxsSGVscGVyc19oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2lm
IEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQXNzZW1ibHlIZWxwZXJzLmgiCi0jaW5j
bHVkZSAiREZHR1BSSW5mby5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0K
LWNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewotcHVibGljOgot
ICAgIENDYWxsSGVscGVycyhWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrID0gMCkKLSAgICAg
ICAgOiBBc3NlbWJseUhlbHBlcnModm0sIGNvZGVCbG9jaykKLSAgICB7Ci0gICAgfQotCi0gICAg
Ly8gVGhlc2UgbWV0aG9kcyB1c2VkIHRvIHNvcnQgYXJndW1lbnRzIGludG8gdGhlIGNvcnJlY3Qg
cmVnaXN0ZXJzLgotICAgIC8vIE9uIFg4NiB3ZSB1c2UgY2RlY2wgY2FsbGluZyBjb252ZW50aW9u
cywgd2hpY2ggcGFzcyBhbGwgYXJndW1lbnRzIG9uIHRoZQotICAgIC8vIHN0YWNrLiBPbiBvdGhl
ciBhcmNoaXRlY3R1cmVzIHdlIG1heSBuZWVkIHRvIHNvcnQgdmFsdWVzIGludG8gdGhlCi0gICAg
Ly8gY29ycmVjdCByZWdpc3RlcnMuCi0jaWYgIU5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMK
LSAgICB1bnNpZ25lZCBtX2NhbGxBcmd1bWVudE9mZnNldDsKLSAgICB2b2lkIHJlc2V0Q2FsbEFy
Z3VtZW50cygpIHsgbV9jYWxsQXJndW1lbnRPZmZzZXQgPSAwOyB9Ci0KLSAgICAvLyBUaGVzZSBt
ZXRob2RzIGFyZSB1c2luZyBpbnRlcm5hbGx5IHRvIGltcGxlbWVudCB0aGUgY2FsbE9wZXJhdGlv
biBtZXRob2RzLgotICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEdQUlJlZyB2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIHBva2UodmFsdWUsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAgIH0KLSAg
ICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tMzIgaW1tKQotICAgIHsKLSAgICAgICAg
cG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAgIH0KLSAgICB2b2lkIGFkZENh
bGxBcmd1bWVudChUcnVzdGVkSW1tUHRyIHBvaW50ZXIpCi0gICAgewotICAgICAgICBwb2tlKHBv
aW50ZXIsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAgIH0KLSAgICB2b2lkIGFkZENhbGxB
cmd1bWVudChGUFJSZWcgdmFsdWUpCi0gICAgewotICAgICAgICBzdG9yZURvdWJsZSh2YWx1ZSwg
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgbV9jYWxsQXJndW1lbnRPZmZzZXQgKiBzaXpl
b2Yodm9pZCopKSk7Ci0gICAgICAgIG1fY2FsbEFyZ3VtZW50T2Zmc2V0ICs9IHNpemVvZihkb3Vi
bGUpIC8gc2l6ZW9mKHZvaWQqKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCi0g
ICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxKQotICAgIHsKLSAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcx
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzIpOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHMoVHJ1c3RlZEltbVB0ciBhcmcxKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRz
KCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQotICAgIHsKLSAgICAgICAgcmVz
ZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyIGFyZzEpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzEpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEpCi0gICAgewotICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKLSAgICB7Ci0g
ICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVk
SW1tMzIgYXJnMikKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIpCi0g
ICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIg
YXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKLSAg
ICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIg
YXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQotICAg
IHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIg
YXJnMykKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcy
LCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsK
LSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICB9Ci0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAg
cmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0
ciBhcmczKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFk
ZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBh
cmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKLSAg
ICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQs
IEdQUlJlZyBhcmc1KQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwot
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmc0KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICByZXNl
dENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCi0gICAgewotICAgICAgICByZXNldENh
bGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJ
bW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKLSAgICB7Ci0g
ICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKLSAgICB7
Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
MSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKLSAg
ICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUp
Ci0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmczKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCi0g
ICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgfQotI2VuZGlm
IC8vICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCi0gICAgLy8gVGhlc2UgbWV0aG9kcyBh
cmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92aWRlcyBmb3IK
LSAgICAvLyBhdCBsZWFzdCA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBYODZfNjQsIEFSTXY3
LgotI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotICAgIHRlbXBsYXRlPEdQ
UlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCPgotICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhHUFJS
ZWcgc3JjQSwgR1BSUmVnIHNyY0IpCi0gICAgewotICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNy
Y0EgIT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMg
bWF5IGJlIGluOgotICAgICAgICAvLyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywg
dGhlIHJpZ2h0IHdheSBhcm91bmQuCi0gICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGlu
IGFyZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4KLSAgICAgICAgLy8gKDMpIG5laXRoZXIg
YXJlIGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgotICAgICAgICAvLyAoNCkgc3JjQSBpbiBp
biBpdHMgY29ycmVjdCByZWcuCi0gICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJl
Y3QgcmVnLgotICAgICAgICAvLyAoNikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0gICAg
ICAgIC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAvLwotICAg
ICAgICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMs
IHRvIHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBpbgotICAgICAgICAvLyBwbGFjZSAodGhl
IE1hY3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNo
IHdpbGwgYmUgc2FmZSBpbgotICAgICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4g
Y2FzZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCi0gICAg
ICAgIC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8g
YXZvaWQgdHJhbXBsaW5nLikKLQotICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgewotICAgICAg
ICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KLSAgICAg
ICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOwotICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0Qik7
Ci0gICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0QikgewotICAgICAgICAgICAgLy8gSGFu
ZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBmaXJzdC4KLSAg
ICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOwotICAgICAgICAgICAgbW92ZShzcmNBLCBkZXN0
QSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3dhcChkZXN0QSwgZGVzdEIpOwotICAg
IH0KLSNpZiBDUFUoWDg2XzY0KQotICAgIHRlbXBsYXRlPEZQUlJlZyBkZXN0QSwgRlBSUmVnIGRl
c3RCPgotICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhGUFJSZWcgc3JjQSwgRlBSUmVnIHNyY0Ip
Ci0gICAgewotICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNyY0EgIT0gc3JjQiwgdGhlcmUgYXJl
IDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMgbWF5IGJlIGluOgotICAgICAgICAv
LyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywgdGhlIHJpZ2h0IHdheSBhcm91bmQu
Ci0gICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUgd3Jvbmcg
d2F5IGFyb3VuZC4KLSAgICAgICAgLy8gKDMpIG5laXRoZXIgYXJlIGN1cnJlbnRseSBpbiBhcmcg
cmVnaXN0ZXJzLgotICAgICAgICAvLyAoNCkgc3JjQSBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0g
ICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAvLyAo
Nikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0gICAgICAgIC8vICg3KSBzcmNCIGluIGlu
IHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAvLwotICAgICAgICAvLyBUaGUgdHJpdmlhbCBh
cHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMsIHRvIHB1dCBzcmNBIGluIHBsYWNl
IHRoZW4gc3JjQiBpbgotICAgICAgICAvLyBwbGFjZSAodGhlIE1hY3JvQXNzZW1ibGVyIHdpbGwg
b21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNoIHdpbGwgYmUgc2FmZSBpbgotICAg
ICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4gY2FzZXMgd2hlcmUgc3JjQT09c3Jj
Qi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCi0gICAgICAgIC8vIChyZXF1aXJlcyBhIHN3
YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8gYXZvaWQgdHJhbXBsaW5nLikKLQot
ICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgewotICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBl
YXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KLSAgICAgICAgICAgIG1vdmVEb3VibGUoc3Jj
QSwgZGVzdEEpOwotICAgICAgICAgICAgbW92ZURvdWJsZShzcmNCLCBkZXN0Qik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChzcmNBICE9IGRl
c3RCKSB7Ci0gICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5vbi1zd2FwIGNhc2UgLSBqdXN0IHB1
dCBzcmNCIGluIHBsYWNlIGZpcnN0LgotICAgICAgICAgICAgbW92ZURvdWJsZShzcmNCLCBkZXN0
Qik7Ci0gICAgICAgICAgICBtb3ZlRG91YmxlKHNyY0EsIGRlc3RBKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChzcmNCID09IGRlc3RBICYmIHNyY0Eg
PT0gZGVzdEIpOwotICAgICAgICAvLyBOZWVkIHRvIHN3YXA7IHBpY2sgYSB0ZW1wb3JhcnkgcmVn
aXN0ZXIuCi0gICAgICAgIEZQUlJlZyB0ZW1wOwotICAgICAgICBpZiAoZGVzdEEgIT0gRlBSSW5m
bzo6YXJndW1lbnRGUFIzICYmIGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMykKLSAgICAg
ICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjM7Ci0gICAgICAgIGVsc2UgaWYgKGRl
c3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMiAmJiBkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVu
dEZQUjIpCi0gICAgICAgICAgICB0ZW1wID0gRlBSSW5mbzo6YXJndW1lbnRGUFIyOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQ
UjEgJiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICAgICAgICAgIHRlbXAg
PSBGUFJJbmZvOjphcmd1bWVudEZQUjE7Ci0gICAgICAgIH0KLSAgICAgICAgbW92ZURvdWJsZShk
ZXN0QSwgdGVtcCk7Ci0gICAgICAgIG1vdmVEb3VibGUoZGVzdEIsIGRlc3RBKTsKLSAgICAgICAg
bW92ZURvdWJsZSh0ZW1wLCBkZXN0Qik7Ci0gICAgfQotI2VuZGlmCi0gICAgdm9pZCBzZXR1cFN0
dWJBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgc2V0
dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mj4oYXJnMSwgYXJnMik7Ci0gICAgfQotICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRzKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICAvLyBJZiBu
ZWl0aGVyIG9mIGFyZzIvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmcx
IGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdz
IHRvIGZpeCBhcmcyL2FyZzMuCi0gICAgICAgIGlmIChhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50
R1BSMSAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSkgewotICAgICAgICAgICAgbW92
ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICAgICAgc2V0dXBUd29TdHVi
QXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMiwg
YXJnMyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBu
ZWl0aGVyIG9mIGFyZzEvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmcy
IGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdz
IHRvIGZpeCBhcmcxL2FyZzMuCi0gICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFyZ3VtZW50
R1BSMiAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMikgewotICAgICAgICAgICAgbW92
ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICAgICAgc2V0dXBUd29TdHVi
QXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwg
YXJnMyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBu
ZWl0aGVyIG9mIGFyZzEvYXJnMiBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmcz
IGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdz
IHRvIGZpeCBhcmcxL2FyZzIuCi0gICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFyZ3VtZW50
R1BSMyAmJiBhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMykgewotICAgICAgICAgICAgbW92
ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICAgICAgc2V0dXBUd29TdHVi
QXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMj4oYXJnMSwg
YXJnMik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB3
ZSBnZXQgaGVyZSwgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gbW92ZSBhbnkgb2YgYXJnMS9hcmcy
L2FyZzMuCi0gICAgICAgIC8vIFNpbmNlIGFsbCB0aHJlZSBhcmUgYmxvY2tlZCwgdGhlbiBhbGwg
dGhyZWUgbXVzdCBhbHJlYWR5IGJlIGluIHRoZSBhcmd1bWVudCByZWdpc3Rlci4KLSAgICAgICAg
Ly8gQnV0IGFyZSB0aGV5IGluIHRoZSByaWdodCBvbmVzPwotCi0gICAgICAgIC8vIEZpcnN0LCBl
bnN1cmUgYXJnMSBpcyBpbiBwbGFjZS4KLSAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSB7Ci0gICAgICAgICAgICBzd2FwKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7Ci0KLSAgICAgICAgICAgIC8vIElmIGFyZzEgd2Fzbid0IGluIGFyZ3VtZW50R1BSMSwgb25l
IG9mIGFyZzIvYXJnMyBtdXN0IGJlLgotICAgICAgICAgICAgQVNTRVJUKGFyZzIgPT0gR1BSSW5m
bzo6YXJndW1lbnRHUFIxIHx8IGFyZzMgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAg
ICAgICAgIC8vIElmIGFyZzIgd2FzIGluIGFyZ3VtZW50R1BSMSBpdCBubyBsb25nZXIgaXMgKGR1
ZSB0byB0aGUgc3dhcCkuCi0gICAgICAgICAgICAvLyBPdGhlcndpc2UgYXJnMyBtdXN0IGhhdmUg
YmVlbi4gTWFyayBoaW0gYXMgbW92ZWQuCi0gICAgICAgICAgICBpZiAoYXJnMiA9PSBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpCi0gICAgICAgICAgICAgICAgYXJnMiA9IGFyZzE7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnMyA9IGFyZzE7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBFaXRoZXIgYXJnMiAmIGFyZzMgbmVlZCBzd2FwcGluZywgb3Igd2UncmUgYWxsIGRvbmUu
Ci0gICAgICAgIEFTU0VSVCgoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgfHwgYXJnMyA9
PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpCi0gICAgICAgICAgICB8fCAoYXJnMiA9PSBHUFJJbmZv
Ojphcmd1bWVudEdQUjMgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKLQotICAg
ICAgICBpZiAoYXJnMiAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjIpCi0gICAgICAgICAgICBzd2Fw
KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAgICB9Ci0K
LSNpZiBDUFUoTUlQUykKLSNkZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgNAotI2Vsc2UKLSNk
ZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgMAotI2VuZGlmCi0KLSNpZiBDUFUoWDg2XzY0KQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKLSAgICB7
Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICB9
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQ
UlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgc2V0dXBUd29TdHViQXJnczxGUFJJbmZvOjphcmd1
bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMT4oYXJnMSwgYXJnMik7Ci0gICAgfQotICAg
IAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcxLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBh
cmczKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgfQotI2VsaWYgQ1BVKEFSTSkKLSNpZiBDUFUoQVJNX0hBUkRGUCkKLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBtb3Zl
RG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKLSAg
ICB7Ci0gICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgewotICAgICAg
ICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICAg
ICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgICAgICB9IGVs
c2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7Ci0gICAgICAgICAgICBtb3Zl
RG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgICAgICAgICBtb3ZlRG91
YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCi0gICAgICAgICAgICBtb3ZlRG91YmxlKEZQUklu
Zm86OmFyZ3VtZW50RlBSMCwgQVJNUmVnaXN0ZXJzOjpkMik7Ci0gICAgICAgICAgICBtb3ZlRG91
YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAg
ICAgICAgIG1vdmVEb3VibGUoQVJNUmVnaXN0ZXJzOjpkMiwgRlBSSW5mbzo6YXJndW1lbnRGUFIx
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAg
ICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICBtb3Zl
KGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcz
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJn
MSwgYXJnMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIsIEZQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnMykKLSAgICB7Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIsIEZQUlJlZyBhcmc0
KQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmc0LCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OwotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
fQotCi0jZWxzZQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcg
YXJnMSkKLSAgICB7Ci0gICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEpOwotICAgIH0KLQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCi0gICAg
ewotICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKLSAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZv
Ojphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJnMik7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMyk7Ci0gICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIGFyZzEpOwotICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFy
Z3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgYXNzZW1ibGVyKCkudm1vdihH
UFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQUjAsIGFyZzMpOwotICAgICAg
ICBwb2tlKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEZQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnMywgUE9LRV9BUkdV
TUVOVF9PRkZTRVQpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjMsIGFyZzIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgRlBSUmVnIGFyZzQpCi0gICAgewotICAgICAgICBzZXR1
cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIG1vdmUoYXJnMywg
R1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZv
Ojpub25BcmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIxLCBhcmc0KTsKLSAgICAgICAgcG9rZShH
UFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Ci0gICAgICAgIHBva2Uo
R1BSSW5mbzo6bm9uQXJnR1BSMSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKLSAgICB9Ci0j
ZW5kaWYgLy8gQ1BVKEFSTV9IQVJERlApCi0jZWxpZiBDUFUoTUlQUykKLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBtb3Zl
RG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKLSAg
ICB7Ci0gICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgewotICAgICAg
ICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICAg
ICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgICAgICB9IGVs
c2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7Ci0gICAgICAgICAgICBtb3Zl
RG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgICAgICAgICBtb3ZlRG91
YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCi0gICAgICAgICAgICBzd2FwRG91YmxlKEZQUklu
Zm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
RlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgYXNzZW1ibGVyKCkudm1v
dihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJnMSk7Ci0g
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgICAgIHBva2UoYXJnMiwgNCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEZQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEs
IGFyZzIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgICAgICBwb2tlKGFyZzMsIDQpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEZQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcyLCBhcmczKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEZQUlJlZyBhcmc0KQotICAgIHsKLSAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzQpOwotICAgIH0KLSNlbGlm
IENQVShTSDQpCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBh
cmcxKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJS
ZWcgYXJnMSwgRlBSUmVnIGFyZzIpCi0gICAgewotICAgICAgICBpZiAoYXJnMiAhPSBGUFJJbmZv
Ojphcmd1bWVudEZQUjApIHsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIwKTsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIxKTsKLSAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQUkluZm86OmFyZ3VtZW50
RlBSMSkgewotICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjEpOwotICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN3YXBEb3VibGUoRlBSSW5mbzo6YXJndW1l
bnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQotICAgIHsKLSAgICAg
ICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICBzZXR1
cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotI2Vsc2UKLSNlcnJv
ciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgotI2VuZGlmCi0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCi0gICAgewot
ICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MikKLSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBHUFJJbmZvOjphcmd1bWVudEdQUjE+KGFyZzEsIGFyZzIpOwotICAgIH0KLSAgICAKLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcxKQotICAg
IHsKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpCi0gICAgewot
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEpCi0gICAg
ewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSkKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKLSAg
ICB7Ci0gICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCi0gICAgewotICAgICAgICBtb3ZlKGFy
ZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0jaWYgQ1BVKFg4Nl82NCkgICAgCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgVHJ1c3RlZEltbTY0IGFyZzIpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tNjQgYXJnMSwgR1BSUmVnIGFyZzIpCi0gICAg
ewotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7IC8vIE1vdmUgdGhp
cyBmaXJzdCwgc28gc2V0dGluZyBhcmcxIGRvZXMgbm90IHRyYW1wbGUhCi0gICAgICAgIG1vdmUo
YXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0jZW5kaWYKLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBJbW1QdHIgYXJnMikKLSAgICB7Ci0g
ICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShh
cmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBh
cmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3Qg
dHJhbXBsZSEKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAg
ICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0
LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKLSAgICAgICAgbW92ZShhcmcxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEltbVB0ciBhcmcxLCBHUFJS
ZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEK
LSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQotICAgIHsKLSAgICAgICAgbW92
ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKGFyZzIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0
ZWRJbW1QdHIgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKLSAgICB7Ci0g
ICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShh
cmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFyZ3VtZW50
cyhhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgVHJ1c3RlZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMo
YXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsK
LSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMp
Ci0gICAgewotICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsKLSAgICAgICAgbW92ZShhcmcyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwot
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMy
IGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92
ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQotICAgIHsKLSAgICAgICAg
bW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKGFyZzIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1l
bnRHUFIzKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bVB0ciBhcmczKQotICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIp
OwotICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczKQotICAg
IHsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBt
b3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVz
dGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgbW92ZShhcmczLCBH
UFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAg
ICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFy
ZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0g
ICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShh
cmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1
YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzIs
IGFyZzMpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAg
ICB7Ci0gICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjM+KGFyZzIsIGFyZzMpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0
ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQotICAgIHsKLSAgICAgICAgbW92ZShh
cmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIz
KTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1
c3RlZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAg
ICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0K
LQotI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBjb252ZW50aW9uIHRoYXQg
cHJvdmlkZXMgZm9yCi0gICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBB
Uk12Ny4KLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICBwb2tl
KGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCi0gICAgewotICAgICAgICBwb2tlKGFy
ZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIg
YXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQotICAgIHsKLSAgICAgICAgcG9r
ZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1t
UHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCi0g
ICAgewotICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Ci0gICAg
ICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKLSAgICB7Ci0g
ICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3Rl
ZEltbTMyIGFyZzUpCi0gICAgewotICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwotICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcg
YXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwot
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFy
ZzQpCi0gICAgewotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJl
ZyBhcmc1KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCAr
IDEpOwotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAg
ewotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQot
ICAgIHsKLSAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Ci0gICAgICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICB9Ci0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW1Q
dHIgYXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBH
UFJSZWcgYXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJS
ZWcgYXJnNCwgR1BSUmVnIGFyZzUpCi0gICAgewotICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJH
VU1FTlRfT0ZGU0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJS
ZWcgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCi0gICAgewotICAgICAgICBwb2tlKGFyZzUsIFBP
S0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVO
VF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmcz
LCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbVB0ciBhcmc1KQotICAgIHsKLSAgICAgICAgcG9rZShh
cmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwotICAgICAgICBwb2tlKGFyZzQsIFBPS0Vf
QVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1KQotICAgIHsKLSAg
ICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwotICAgICAgICBwb2tl
KGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0
ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1
KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwot
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1
KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwot
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotI2VuZGlm
IC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAotCi0jaWYgTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA+PSA1Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVk
SW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICBzZXR1cFR3b1N0dWJBcmdz
PEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFI0PihhcmcxLCBhcmc0
KTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBt
b3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKLSAg
ICB7Ci0gICAgICAgIEdQUlJlZyBzcmNBID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFI7Ci0gICAg
ICAgIEdQUlJlZyBzcmNCID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyOwotCi0gICAgICAgIGlm
IChkZXN0QSA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0Qik7
Ci0gICAgICAgIGVsc2UgaWYgKGRlc3RCID09IEludmFsaWRHUFJSZWcpCi0gICAgICAgICAgICBt
b3ZlKHNyY0EsIGRlc3RBKTsKLSAgICAgICAgZWxzZSBpZiAoc3JjQiAhPSBkZXN0QSkgewotICAg
ICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KLSAg
ICAgICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOwotICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0
Qik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0QikgewotICAgICAgICAgICAgLy8g
SGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBmaXJzdC4K
LSAgICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOwotICAgICAgICAgICAgbW92ZShzcmNBLCBk
ZXN0QSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3dhcChkZXN0QSwgZGVzdEIpOwot
ICAgIH0KLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHQ0NhbGxIZWxwZXJzX2gKLQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTU2
MDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRo
SklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHSklUQ29kZS5o
IgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCShyZXZpc2lvbiAxNTYwNzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSwzMDkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIERGR0ZQUkluZm9faAotI2RlZmluZSBERkdGUFJJbmZvX2gKLQotI2lmIEVOQUJMRShERkdf
SklUKQotCi0jaW5jbHVkZSAiREZHUmVnaXN0ZXJCYW5rLmgiCi0jaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi10eXBlZGVmIE1h
Y3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgRlBSUmVnOwotI2RlZmluZSBJbnZhbGlkRlBSUmVn
ICgoRlBSUmVnKS0xKQotCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLQotY2xhc3MgRlBS
SW5mbyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOwotICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSA4OwotCi0gICAgLy8gVGVt
cG9yYXJ5IHJlZ2lzdGVycy4KLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBYODZS
ZWdpc3RlcnM6OnhtbTA7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gWDg2UmVn
aXN0ZXJzOjp4bW0xOwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IFg4NlJlZ2lz
dGVyczo6eG1tMjsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBYODZSZWdpc3Rl
cnM6OnhtbTM7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gWDg2UmVnaXN0ZXJz
Ojp4bW00OwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9IFg4NlJlZ2lzdGVyczo6
eG1tNTsKLSNpZiBDUFUoWDg2XzY0KQotICAgIC8vIE9ubHkgWDg2XzY0IHBhc3NlcyBhZ3VtZW50
cyBpbiB4bW0gcmVnaXN0ZXJzCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAg
PSBYODZSZWdpc3RlcnM6OnhtbTA7IC8vIGZwUmVnVDAKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGFyZ3VtZW50RlBSMSA9IFg4NlJlZ2lzdGVyczo6eG1tMTsgLy8gZnBSZWdUMQotICAgIHN0YXRp
YyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIyID0gWDg2UmVnaXN0ZXJzOjp4bW0yOyAvLyBmcFJl
Z1QyCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjMgPSBYODZSZWdpc3RlcnM6
OnhtbTM7IC8vIGZwUmVnVDMKLSNlbmRpZgotICAgIC8vIE9uIFg4NiB0aGUgcmV0dXJuIHdpbGwg
YWN0dWFsbHkgYmUgb24gdGhlIHg4NyBzdGFjaywKLSAgICAvLyBzbyB3ZSdsbCBjb3B5IHRvIHht
bTAgZm9yIHNhbml0eSEKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0g
WDg2UmVnaXN0ZXJzOjp4bW0wOyAvLyBmcFJlZ1QwCi0KLSAgICAvLyBGUFJSZWcgbWFwcGluZyBp
cyBkaXJlY3QsIHRoZSBtYWNoaW5lIHJlZ3NpdGVyIG51bWJlcnMgY2FuCi0gICAgLy8gYmUgdXNl
ZCBkaXJlY3RseSBhcyBpbmRpY2VzIGludG8gdGhlIEZQUiBSZWdpc3RlckJhbmsuCi0gICAgQ09N
UElMRV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW0wID09IDAsIHhtbTBfaXNfMCk7Ci0gICAgQ09N
UElMRV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW0xID09IDEsIHhtbTFfaXNfMSk7Ci0gICAgQ09N
UElMRV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW0yID09IDIsIHhtbTJfaXNfMik7Ci0gICAgQ09N
UElMRV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW0zID09IDMsIHhtbTNfaXNfMyk7Ci0gICAgQ09N
UElMRV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW00ID09IDQsIHhtbTRfaXNfNCk7Ci0gICAgQ09N
UElMRV9BU1NFUlQoWDg2UmVnaXN0ZXJzOjp4bW01ID09IDUsIHhtbTVfaXNfNSk7Ci0gICAgc3Rh
dGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgcmV0
dXJuIChGUFJSZWcpaW5kZXg7Ci0gICAgfQotICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQ
UlJlZyByZWcpCi0gICAgewotICAgICAgICByZXR1cm4gKHVuc2lnbmVkKXJlZzsKLSAgICB9Ci0g
ICAgCi0gICAgc3RhdGljIEZQUlJlZyB0b0FyZ3VtZW50UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgp
Ci0gICAgewotICAgICAgICByZXR1cm4gKEZQUlJlZylpbmRleDsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRGUFJSZWcpOwotI2lmIENQVShYODZfNjQpCi0gICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCAxNik7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBuYW1lRm9yUmVnaXN0ZXJbMTZdID0gewotICAgICAgICAgICAgInhtbTAiLCAieG1tMSIsICJ4
bW0yIiwgInhtbTMiLAotICAgICAgICAgICAgInhtbTQiLCAieG1tNSIsICJ4bW02IiwgInhtbTci
LAotICAgICAgICAgICAgInhtbTgiLCAieG1tOSIsICJ4bW0xMCIsICJ4bW0xMSIsCi0gICAgICAg
ICAgICAieG1tMTIiLCAieG1tMTMiLCAieG1tMTQiLCAieG1tMTUiCi0gICAgICAgIH07Ci0jZWxp
ZiBDUFUoWDg2KQotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgOCk7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbOF0gPSB7Ci0gICAgICAg
ICAgICAieG1tMCIsICJ4bW0xIiwgInhtbTIiLCAieG1tMyIsCi0gICAgICAgICAgICAieG1tNCIs
ICJ4bW01IiwgInhtbTYiLCAieG1tNyIKLSAgICAgICAgfTsKLSNlbmRpZgotICAgICAgICByZXR1
cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107Ci0gICAgfQotfTsKLQotI2VuZGlmCi0KLSNpZiBDUFUo
QVJNKQotCi1jbGFzcyBGUFJJbmZvIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEZQUlJlZyBSZWdp
c3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0g
NjsKLQotICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCi0gICAgLy8gZDcgaXMgdXNlIGJ5IHRo
ZSBNYWNyb0Fzc2VtYmxlciBhcyBmcFRlbXBSZWdpc3Rlci4KLSAgICBzdGF0aWMgY29uc3QgRlBS
UmVnIGZwUmVnVDAgPSBBUk1SZWdpc3RlcnM6OmQwOwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcg
ZnBSZWdUMSA9IEFSTVJlZ2lzdGVyczo6ZDE7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJl
Z1QyID0gQVJNUmVnaXN0ZXJzOjpkMjsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMg
PSBBUk1SZWdpc3RlcnM6OmQzOwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IEFS
TVJlZ2lzdGVyczo6ZDQ7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gQVJNUmVn
aXN0ZXJzOjpkNTsKLSAgICAvLyBBUk12NyBkb2Vzbid0IHBhc3MgYXJndW1lbnRzIGluIGZwIHJl
Z2lzdGVycy4gVGhlIHJldHVybgotICAgIC8vIHZhbHVlIGlzIGFsc28gYWN0dWFsbHkgaW4gaW50
ZWdlciByZWdpc3RlcnMsIGZvciBub3cKLSAgICAvLyB3ZSdsbCByZXR1cm4gaW4gZDAgZm9yIHNp
bXBsaWNpdHkuCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IEFSTVJl
Z2lzdGVyczo6ZDA7IC8vIGZwUmVnVDAKLQotI2lmIENQVShBUk1fSEFSREZQKQotICAgIHN0YXRp
YyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIwID0gQVJNUmVnaXN0ZXJzOjpkMDsgLy8gZnBSZWdU
MAotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIxID0gQVJNUmVnaXN0ZXJzOjpk
MTsgLy8gZnBSZWdUMQotI2VuZGlmCi0KLSAgICAvLyBGUFJSZWcgbWFwcGluZyBpcyBkaXJlY3Qs
IHRoZSBtYWNoaW5lIHJlZ3NpdGVyIG51bWJlcnMgY2FuCi0gICAgLy8gYmUgdXNlZCBkaXJlY3Rs
eSBhcyBpbmRpY2VzIGludG8gdGhlIEZQUiBSZWdpc3RlckJhbmsuCi0gICAgQ09NUElMRV9BU1NF
UlQoQVJNUmVnaXN0ZXJzOjpkMCA9PSAwLCBkMF9pc18wKTsKLSAgICBDT01QSUxFX0FTU0VSVChB
Uk1SZWdpc3RlcnM6OmQxID09IDEsIGQxX2lzXzEpOwotICAgIENPTVBJTEVfQVNTRVJUKEFSTVJl
Z2lzdGVyczo6ZDIgPT0gMiwgZDJfaXNfMik7Ci0gICAgQ09NUElMRV9BU1NFUlQoQVJNUmVnaXN0
ZXJzOjpkMyA9PSAzLCBkM19pc18zKTsKLSAgICBDT01QSUxFX0FTU0VSVChBUk1SZWdpc3RlcnM6
OmQ0ID09IDQsIGQ0X2lzXzQpOwotICAgIENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lzdGVyczo6ZDUg
PT0gNSwgZDVfaXNfNSk7Ci0gICAgc3RhdGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGlu
ZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIChGUFJSZWcpaW5kZXg7Ci0gICAgfQotICAgIHN0
YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCi0gICAgewotICAgICAgICByZXR1cm4g
KHVuc2lnbmVkKXJlZzsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1l
KEZQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcp
OwotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMzIpOwotICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzMyXSA9IHsKLSAgICAgICAgICAgICJk
MCIsICJkMSIsICJkMiIsICJkMyIsCi0gICAgICAgICAgICAiZDQiLCAiZDUiLCAiZDYiLCAiZDci
LAotICAgICAgICAgICAgImQ4IiwgImQ5IiwgImQxMCIsICJkMTEiLAotICAgICAgICAgICAgImQx
MiIsICJkMTMiLCAiZDE0IiwgImQxNSIsCi0gICAgICAgICAgICAiZDE2IiwgImQxNyIsICJkMTgi
LCAiZDE5IiwKLSAgICAgICAgICAgICJkMjAiLCAiZDIxIiwgImQyMiIsICJkMjMiLAotICAgICAg
ICAgICAgImQyNCIsICJkMjUiLCAiZDI2IiwgImQyNyIsCi0gICAgICAgICAgICAiZDI4IiwgImQy
OSIsICJkMzAiLCAiZDMxIgotICAgICAgICB9OwotICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lz
dGVyW3JlZ107Ci0gICAgfQotfTsKLQotI2VuZGlmCi0KLSNpZiBDUFUoTUlQUykKLQotY2xhc3Mg
RlBSSW5mbyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOwotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7Ci0KLSAgICAvLyBU
ZW1wb3JhcnkgcmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9IE1J
UFNSZWdpc3RlcnM6OmYwOwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9IE1JUFNS
ZWdpc3RlcnM6OmY0OwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IE1JUFNSZWdp
c3RlcnM6OmY2OwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IE1JUFNSZWdpc3Rl
cnM6OmY4OwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IE1JUFNSZWdpc3RlcnM6
OmYxMDsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjpm
MTg7Ci0KLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gTUlQU1JlZ2lz
dGVyczo6ZjA7Ci0KLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IE1JUFNS
ZWdpc3RlcnM6OmYxMjsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9IE1J
UFNSZWdpc3RlcnM6OmYxNDsKLQotICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25l
ZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVnaXN0ZXJGb3JJ
bmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7Ci0gICAgICAgICAgICBmcFJlZ1QwLCBmcFJlZ1Qx
LCBmcFJlZ1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07Ci0KLSAgICAgICAgQVNTRVJU
KGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwotICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJ
bmRleFtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVn
IHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7Ci0gICAg
ICAgIEFTU0VSVChyZWcgPCAyMCk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRl
eEZvclJlZ2lzdGVyWzIwXSA9IHsKLSAgICAgICAgICAgIDAsIEludmFsaWRJbmRleCwgSW52YWxp
ZEluZGV4LCBJbnZhbGlkSW5kZXgsCi0gICAgICAgICAgICAxLCBJbnZhbGlkSW5kZXgsIDIsIElu
dmFsaWRJbmRleCwKLSAgICAgICAgICAgIDMsIEludmFsaWRJbmRleCwgNCwgSW52YWxpZEluZGV4
LAotICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LAotICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDUs
IEludmFsaWRJbmRleCwKLSAgICAgICAgfTsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5k
ZXhGb3JSZWdpc3RlcltyZWddOwotICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRl
eCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGNo
YXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJ
bnZhbGlkRlBSUmVnKTsKLSAgICAgICAgQVNTRVJUKHJlZyA8IDMyKTsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclszMl0gPSB7Ci0gICAgICAgICAgICAiZjAiLCAi
ZjEiLCAiZjIiLCAiZjMiLAotICAgICAgICAgICAgImY0IiwgImY1IiwgImY2IiwgImY3IiwKLSAg
ICAgICAgICAgICJmOCIsICJmOSIsICJmMTAiLCAiZjExIiwKLSAgICAgICAgICAgICJmMTIiLCAi
ZjEzIiwgImYxNCIsICJmMTUiCi0gICAgICAgICAgICAiZjE2IiwgImYxNyIsICJmMTgiLCAiZjE5
IgotICAgICAgICAgICAgImYyMCIsICJmMjEiLCAiZjIyIiwgImYyMyIKLSAgICAgICAgICAgICJm
MjQiLCAiZjI1IiwgImYyNiIsICJmMjciCi0gICAgICAgICAgICAiZjI4IiwgImYyOSIsICJmMzAi
LCAiZjMxIgotICAgICAgICB9OwotICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107
Ci0gICAgfQotcHJpdmF0ZToKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5k
ZXggPSAweGZmZmZmZmZmOwotfTsKLQotI2VuZGlmCi0KLSNpZiBDUFUoU0g0KQotCi1jbGFzcyBG
UFJJbmZvIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKLQotICAgIC8vIFRl
bXBvcmFyeSByZWdpc3RlcnMuCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QwID0gU0g0
UmVnaXN0ZXJzOjpkcjA7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gU0g0UmVn
aXN0ZXJzOjpkcjI7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QyID0gU0g0UmVnaXN0
ZXJzOjpkcjQ7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QzID0gU0g0UmVnaXN0ZXJz
OjpkcjY7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gU0g0UmVnaXN0ZXJzOjpk
cjg7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gU0g0UmVnaXN0ZXJzOjpkcjEw
OwotCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IFNINFJlZ2lzdGVy
czo6ZHIwOwotCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBTSDRSZWdp
c3RlcnM6OmRyNDsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9IFNINFJl
Z2lzdGVyczo6ZHI2OwotCi0gICAgc3RhdGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGlu
ZGV4KQotICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZWdpc3RlckZvckluZGV4
W251bWJlck9mUmVnaXN0ZXJzXSA9IHsKLSAgICAgICAgICAgIGZwUmVnVDAsIGZwUmVnVDEsIGZw
UmVnVDIsIGZwUmVnVDMsIGZwUmVnVDQsIGZwUmVnVDUgfTsKLQotICAgICAgICBBU1NFUlQoaW5k
ZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4
W2luZGV4XTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVn
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKLSAgICAgICAg
QVNTRVJUKHJlZyA8IDE2KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9y
UmVnaXN0ZXJbMTZdID0gewotICAgICAgICAgICAgMCwgSW52YWxpZEluZGV4LCAxLCBJbnZhbGlk
SW5kZXgsCi0gICAgICAgICAgICAyLCBJbnZhbGlkSW5kZXgsIDMsIEludmFsaWRJbmRleCwKLSAg
ICAgICAgICAgIDQsIEludmFsaWRJbmRleCwgNSwgSW52YWxpZEluZGV4LAotICAgICAgICAgICAg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4Ci0g
ICAgICAgIH07Ci0gICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVn
XTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOwotICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBS
UmVnIHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7Ci0g
ICAgICAgIEFTU0VSVChyZWcgPCAxNik7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1l
Rm9yUmVnaXN0ZXJbMTZdID0gewotICAgICAgICAgICAgImRyMCIsICJmcjEiLCAiZHIyIiwgImZy
MyIsCi0gICAgICAgICAgICAiZHI0IiwgImZyNSIsICJkcjYiLCAiZnI3IiwKLSAgICAgICAgICAg
ICJkcjgiLCAiZnI5IiwgImRyMTAiLCAiZnIxMSIsCi0gICAgICAgICAgICAiZHIxMiIsICJmcjEz
IiwgImRyMTQiLCAiZnIxNSIKLSAgICAgICAgfTsKLSAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdp
c3RlcltyZWddOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
SW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKLX07Ci0KLSNlbmRpZgotCi10eXBlZGVmIFJlZ2lz
dGVyQmFuazxGUFJJbmZvPjo6aXRlcmF0b3IgZnByX2l0ZXJhdG9yOwotCi19IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCi0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dQUkluZm8uaAkocmV2aXNpb24gMTU2MDc1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjQ0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdH
UFJJbmZvX2gKLSNkZWZpbmUgREZHR1BSSW5mb19oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHUmVnaXN0ZXJCYW5rLmgi
Ci0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewotCi10eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIEdQUlJlZzsKLSNk
ZWZpbmUgSW52YWxpZEdQUlJlZyAoKDo6SlNDOjpERkc6OkdQUlJlZyktMSkKLQotI2lmIFVTRShK
U1ZBTFVFNjQpCi1jbGFzcyBKU1ZhbHVlUmVncyB7Ci1wdWJsaWM6Ci0gICAgSlNWYWx1ZVJlZ3Mo
KQotICAgICAgICA6IG1fZ3ByKEludmFsaWRHUFJSZWcpCi0gICAgewotICAgIH0KLSAgICAKLSAg
ICBleHBsaWNpdCBKU1ZhbHVlUmVncyhHUFJSZWcgZ3ByKQotICAgICAgICA6IG1fZ3ByKGdwcikK
LSAgICB7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBKU1ZhbHVlUmVncyBwYXlsb2FkT25seShH
UFJSZWcgZ3ByKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKGdwcik7Ci0gICAg
fQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gSW52
YWxpZEdQUlJlZzsgfQotICAgIAotICAgIEdQUlJlZyBncHIoKSBjb25zdCB7IHJldHVybiBtX2dw
cjsgfQotICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KLSAg
ICAKLXByaXZhdGU6Ci0gICAgR1BSUmVnIG1fZ3ByOwotfTsKLQotY2xhc3MgSlNWYWx1ZVNvdXJj
ZSB7Ci1wdWJsaWM6Ci0gICAgSlNWYWx1ZVNvdXJjZSgpCi0gICAgICAgIDogbV9vZmZzZXQobm90
QWRkcmVzcygpKQotICAgICAgICAsIG1fYmFzZShJbnZhbGlkR1BSUmVnKQotICAgIHsKLSAgICB9
Ci0gICAgCi0gICAgSlNWYWx1ZVNvdXJjZShKU1ZhbHVlUmVncyByZWdzKQotICAgICAgICA6IG1f
b2Zmc2V0KG5vdEFkZHJlc3MoKSkKLSAgICAgICAgLCBtX2Jhc2UocmVncy5ncHIoKSkKLSAgICB7
Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IEpTVmFsdWVTb3VyY2UoR1BSUmVnIGdwcikKLSAg
ICAgICAgOiBtX29mZnNldChub3RBZGRyZXNzKCkpCi0gICAgICAgICwgbV9iYXNlKGdwcikKLSAg
ICB7Ci0gICAgfQotICAgIAotICAgIEpTVmFsdWVTb3VyY2UoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MgYWRkcmVzcykKLSAgICAgICAgOiBtX29mZnNldChhZGRyZXNzLm9mZnNldCkKLSAgICAgICAg
LCBtX2Jhc2UoYWRkcmVzcy5iYXNlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb2Zmc2V0ICE9
IG5vdEFkZHJlc3MoKSk7Ci0gICAgICAgIEFTU0VSVChtX2Jhc2UgIT0gSW52YWxpZEdQUlJlZyk7
Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBKU1ZhbHVlU291cmNlIHVuYm94ZWRDZWxsKEdQUlJl
ZyBwYXlsb2FkR1BSKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVTb3VyY2UocGF5bG9h
ZEdQUik7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4g
bV9iYXNlID09IEludmFsaWRHUFJSZWc7IH0KLSAgICAKLSAgICBib29sIGlzQWRkcmVzcygpIGNv
bnN0IHsgcmV0dXJuIG1fb2Zmc2V0ICE9IG5vdEFkZHJlc3MoKTsgfQotICAgIAotICAgIGludDMy
X3Qgb2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc0FkZHJlc3MoKSk7Ci0g
ICAgICAgIHJldHVybiBtX29mZnNldDsKLSAgICB9Ci0gICAgCi0gICAgR1BSUmVnIGJhc2UoKSBj
b25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzQWRkcmVzcygpKTsKLSAgICAgICAgcmV0dXJu
IG1fYmFzZTsKLSAgICB9Ci0gICAgCi0gICAgR1BSUmVnIGdwcigpIGNvbnN0Ci0gICAgewotICAg
ICAgICBBU1NFUlQoIWlzQWRkcmVzcygpKTsKLSAgICAgICAgcmV0dXJuIG1fYmFzZTsKLSAgICB9
Ci0gICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MgYXNBZGRyZXNzKCkgY29uc3QgeyBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSgpLCBvZmZzZXQoKSk7IH0KLSAgICAK
LXByaXZhdGU6Ci0gICAgc3RhdGljIGlubGluZSBpbnQzMl90IG5vdEFkZHJlc3MoKSB7IHJldHVy
biAweDgwMDAwMDAwOyB9ICAgICAKLSAgICAgICAgICAKLSAgICBpbnQzMl90IG1fb2Zmc2V0Owot
ICAgIEdQUlJlZyBtX2Jhc2U7Ci19OwotI2VuZGlmCi0KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQot
Y2xhc3MgSlNWYWx1ZVJlZ3MgewotcHVibGljOgotICAgIEpTVmFsdWVSZWdzKCkKLSAgICAgICAg
OiBtX3RhZ0dQUihzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpKQotICAgICAgICAs
IG1fcGF5bG9hZEdQUihzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpKQotICAgIHsK
LSAgICB9Ci0gICAgCi0gICAgSlNWYWx1ZVJlZ3MoR1BSUmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxv
YWRHUFIpCi0gICAgICAgIDogbV90YWdHUFIodGFnR1BSKQotICAgICAgICAsIG1fcGF5bG9hZEdQ
UihwYXlsb2FkR1BSKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIEpTVmFsdWVSZWdz
IHBheWxvYWRPbmx5KEdQUlJlZyBncHIpCi0gICAgewotICAgICAgICByZXR1cm4gSlNWYWx1ZVJl
Z3MoSW52YWxpZEdQUlJlZywgZ3ByKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciEo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV90YWdH
UFIpID09IEludmFsaWRHUFJSZWcKLSAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PEdQUlJlZz4o
bV9wYXlsb2FkR1BSKSA9PSBJbnZhbGlkR1BSUmVnOwotICAgIH0KLSAgICAKLSAgICBHUFJSZWcg
dGFnR1BSKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3RhZ0dQUik7IH0K
LSAgICBHUFJSZWcgcGF5bG9hZEdQUigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJl
Zz4obV9wYXlsb2FkR1BSKTsgfQotICAgIEdQUlJlZyBncHIoV2hpY2hWYWx1ZVdvcmQgd2hpY2gp
IGNvbnN0Ci0gICAgewotICAgICAgICBzd2l0Y2ggKHdoaWNoKSB7Ci0gICAgICAgIGNhc2UgVGFn
V29yZDoKLSAgICAgICAgICAgIHJldHVybiB0YWdHUFIoKTsKLSAgICAgICAgY2FzZSBQYXlsb2Fk
V29yZDoKLSAgICAgICAgICAgIHJldHVybiBwYXlsb2FkR1BSKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB0YWdHUFIoKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgaW50OF90IG1fdGFnR1BSOwotICAgIGludDhfdCBtX3BheWxvYWRH
UFI7Ci19OwotCi1jbGFzcyBKU1ZhbHVlU291cmNlIHsKLXB1YmxpYzoKLSAgICBKU1ZhbHVlU291
cmNlKCkKLSAgICAgICAgOiBtX29mZnNldChub3RBZGRyZXNzKCkpCi0gICAgICAgICwgbV9iYXNl
T3JUYWcoc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKSkKLSAgICAgICAgLCBtX3Bh
eWxvYWQoc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlkR1BSUmVnKSkKLSAgICAgICAgLCBtX3Rh
Z1R5cGUoMCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEpTVmFsdWVTb3VyY2UoSlNWYWx1ZVJl
Z3MgcmVncykKLSAgICAgICAgOiBtX29mZnNldChub3RBZGRyZXNzKCkpCi0gICAgICAgICwgbV9i
YXNlT3JUYWcocmVncy50YWdHUFIoKSkKLSAgICAgICAgLCBtX3BheWxvYWQocmVncy5wYXlsb2Fk
R1BSKCkpCi0gICAgICAgICwgbV90YWdUeXBlKDApCi0gICAgewotICAgIH0KLSAgICAKLSAgICBK
U1ZhbHVlU291cmNlKEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2FkR1BSKQotICAgICAgICA6
IG1fb2Zmc2V0KG5vdEFkZHJlc3MoKSkKLSAgICAgICAgLCBtX2Jhc2VPclRhZyhzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KHRhZ0dQUikpCi0gICAgICAgICwgbV9wYXlsb2FkKHN0YXRpY19jYXN0PGludDhf
dD4ocGF5bG9hZEdQUikpCi0gICAgICAgICwgbV90YWdUeXBlKDApCi0gICAgewotICAgIH0KLSAg
ICAKLSAgICBKU1ZhbHVlU291cmNlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFkZHJlc3MpCi0g
ICAgICAgIDogbV9vZmZzZXQoYWRkcmVzcy5vZmZzZXQpCi0gICAgICAgICwgbV9iYXNlT3JUYWco
c3RhdGljX2Nhc3Q8aW50OF90PihhZGRyZXNzLmJhc2UpKQotICAgICAgICAsIG1fcGF5bG9hZChz
dGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpKQotICAgICAgICAsIG1fdGFnVHlwZSgw
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb2Zmc2V0ICE9IG5vdEFkZHJlc3MoKSk7Ci0gICAg
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxHUFJSZWc+KG1fYmFzZU9yVGFnKSAhPSBJbnZhbGlkR1BS
UmVnKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIEpTVmFsdWVTb3VyY2UgdW5ib3hlZENlbGwo
R1BSUmVnIHBheWxvYWRHUFIpCi0gICAgewotICAgICAgICBKU1ZhbHVlU291cmNlIHJlc3VsdDsK
LSAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gbm90QWRkcmVzcygpOwotICAgICAgICByZXN1bHQu
bV9iYXNlT3JUYWcgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpOwotICAgICAg
ICByZXN1bHQubV9wYXlsb2FkID0gc3RhdGljX2Nhc3Q8aW50OF90PihwYXlsb2FkR1BSKTsKLSAg
ICAgICAgcmVzdWx0Lm1fdGFnVHlwZSA9IHN0YXRpY19jYXN0PGludDhfdD4oSlNWYWx1ZTo6Q2Vs
bFRhZyk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+
KG1fYmFzZU9yVGFnKSA9PSBJbnZhbGlkR1BSUmVnCi0gICAgICAgICAgICAmJiBzdGF0aWNfY2Fz
dDxHUFJSZWc+KG1fcGF5bG9hZCkgPT0gSW52YWxpZEdQUlJlZzsKLSAgICB9Ci0gICAgCi0gICAg
Ym9vbCBpc0FkZHJlc3MoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCEhKnRoaXMpOwot
ICAgICAgICByZXR1cm4gbV9vZmZzZXQgIT0gbm90QWRkcmVzcygpOwotICAgIH0KLSAgICAKLSAg
ICBpbnQzMl90IG9mZnNldCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNBZGRyZXNz
KCkpOwotICAgICAgICByZXR1cm4gbV9vZmZzZXQ7Ci0gICAgfQotICAgIAotICAgIEdQUlJlZyBi
YXNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc0FkZHJlc3MoKSk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fYmFzZU9yVGFnKTsKLSAgICB9Ci0gICAgCi0g
ICAgR1BSUmVnIHRhZ0dQUigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoIWlzQWRkcmVz
cygpICYmIHN0YXRpY19jYXN0PEdQUlJlZz4obV9iYXNlT3JUYWcpICE9IEludmFsaWRHUFJSZWcp
OwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX2Jhc2VPclRhZyk7Ci0gICAg
fQotICAgIAotICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVCghaXNBZGRyZXNzKCkpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPiht
X3BheWxvYWQpOwotICAgIH0KLSAgICAKLSAgICBib29sIGhhc0tub3duVGFnKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCghISp0aGlzKTsKLSAgICAgICAgQVNTRVJUKCFpc0FkZHJlc3Mo
KSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fYmFzZU9yVGFnKSA9PSBJ
bnZhbGlkR1BSUmVnOwotICAgIH0KLSAgICAKLSAgICB1aW50MzJfdCB0YWcoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KG1fdGFnVHlwZSk7Ci0gICAg
fQotICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFzQWRkcmVzcyh1bnNpZ25lZCBh
ZGRpdGlvbmFsT2Zmc2V0ID0gMCkgY29uc3QgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZSgpLCBvZmZzZXQoKSArIGFkZGl0aW9uYWxPZmZzZXQpOyB9Ci0gICAgCi1wcml2YXRl
OgotICAgIHN0YXRpYyBpbmxpbmUgaW50MzJfdCBub3RBZGRyZXNzKCkgeyByZXR1cm4gMHg4MDAw
MDAwMDsgfSAgICAgCi0gICAgICAgICAgCi0gICAgaW50MzJfdCBtX29mZnNldDsKLSAgICBpbnQ4
X3QgbV9iYXNlT3JUYWc7Ci0gICAgaW50OF90IG1fcGF5bG9hZDsgCi0gICAgaW50OF90IG1fdGFn
VHlwZTsgLy8gQ29udGFpbnMgdGhlIGxvdyBiaXRzIG9mIHRoZSB0YWcuCi19OwotI2VuZGlmCi0K
LSNpZiBDUFUoWDg2KQotI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDAKLQot
Y2xhc3MgR1BSSW5mbyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBl
OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDU7Ci0gICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTOwotCi0gICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KLSAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gWDg2UmVnaXN0ZXJzOjplYXg7Ci0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IFg4NlJlZ2lzdGVyczo6ZWR4OwotICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmVnVDIgPSBYODZSZWdpc3RlcnM6OmVjeDsKLSAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1QzID0gWDg2UmVnaXN0ZXJzOjplYng7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUNCA9IFg4NlJlZ2lzdGVyczo6ZXNpOwotICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRj
aCB0aGUgYmFzZWxpbmUgSklULgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0
UmVnaXN0ZXIgPSByZWdUMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJl
Z2lzdGVyMiA9IHJlZ1QxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0
ZXIgPSBYODZSZWdpc3RlcnM6OmVkaTsKLSAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0
aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUg
cmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gWDg2UmVn
aXN0ZXJzOjplY3g7IC8vIHJlZ1QyCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQ
UjEgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKLSAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVieDsgLy8gcmVnVDMKLSAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjIgPSBYODZSZWdpc3RlcnM6OmVzaTsgLy8gcmVn
VDQKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0ZXJz
OjplYXg7IC8vIHJlZ1QwCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIg
PSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5v
blByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6ZWN4OwotCi0gICAgc3RhdGlj
IEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJU
KGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwotICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJl
Z1QyLCByZWdUMywgcmVnVDQgfTsKLSAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5k
ZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCi0g
ICAgewotICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgOCk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBpbmRleEZvclJlZ2lzdGVyWzhdID0geyAwLCAyLCAxLCAzLCBJbnZhbGlkSW5kZXgsIElu
dmFsaWRJbmRleCwgNCwgSW52YWxpZEluZGV4IH07Ci0gICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9
IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlk
SW5kZXgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChyZWcg
IT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykg
PCA4KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3Rlcls4XSA9IHsK
LSAgICAgICAgICAgICJlYXgiLCAiZWN4IiwgImVkeCIsICJlYngiLAotICAgICAgICAgICAgImVz
cCIsICJlYnAiLCAiZXNpIiwgImVkaSIsCi0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiBuYW1l
Rm9yUmVnaXN0ZXJbcmVnXTsKLSAgICB9Ci1wcml2YXRlOgotCi0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Ci19OwotCi0jZW5kaWYKLQotI2lmIENQ
VShYODZfNjQpCi0jZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNgotCi1jbGFz
cyBHUFJJbmZvIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7Ci0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gOTsKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9B
UkdVTUVOVF9SRUdJU1RFUlM7Ci0KLSAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJh
c2VsaW5lIEpJVC4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVy
ID0gWDg2UmVnaXN0ZXJzOjplYXg7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVS
ZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjEzOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgdGFn
VHlwZU51bWJlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTQ7Ci0gICAgc3RhdGljIGNvbnN0
IEdQUlJlZyB0YWdNYXNrUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNTsKLSAgICAvLyBUZW1w
b3JhcnkgcmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAgPSBYODZSZWdp
c3RlcnM6OmVheDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gWDg2UmVnaXN0ZXJz
OjplZHg7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IFg4NlJlZ2lzdGVyczo6ZWN4
OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBYODZSZWdpc3RlcnM6OmVieDsKLSAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gWDg2UmVnaXN0ZXJzOjplZGk7Ci0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUNSA9IFg4NlJlZ2lzdGVyczo6ZXNpOwotICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmVnVDYgPSBYODZSZWdpc3RlcnM6OnI4OwotICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDcgPSBYODZSZWdpc3RlcnM6OnI5OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnVDggPSBYODZSZWdpc3RlcnM6OnIxMDsKLSAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlk
ZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFs
dWUgcmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gWDg2
UmVnaXN0ZXJzOjplZGk7IC8vIHJlZ1Q0Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVu
dEdQUjEgPSBYODZSZWdpc3RlcnM6OmVzaTsgLy8gcmVnVDUKLSAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGFyZ3VtZW50R1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMQotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gWDg2UmVnaXN0ZXJzOjplY3g7IC8vIHJlZ1Qy
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjQgPSBYODZSZWdpc3RlcnM6OnI4
OyAgLy8gcmVnVDYKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSNSA9IFg4NlJl
Z2lzdGVyczo6cjk7ICAvLyByZWdUNwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BS
MCA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
bm9uQXJnR1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWJ4OyAvLyByZWdUMwotICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uQXJnR1BSMiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUOAotICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8g
cmVnVDAKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lz
dGVyczo6ZWR4OyAvLyByZWdUMQotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVk
Tm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjplc2k7Ci0KLSAgICBzdGF0aWMgR1BSUmVnIHRv
UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBu
dW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJG
b3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1Qz
LCByZWdUNCwgcmVnVDUsIHJlZ1Q2LCByZWdUNywgcmVnVDggfTsKLSAgICAgICAgcmV0dXJuIHJl
Z2lzdGVyRm9ySW5kZXhbaW5kZXhdOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgR1BSUmVnIHRv
QXJndW1lbnRSZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChp
bmRleCA8IG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpOwotICAgICAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyc10gPSB7IGFy
Z3VtZW50R1BSMCwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIsIGFyZ3VtZW50R1BSMywgYXJn
dW1lbnRHUFI0LCBhcmd1bWVudEdQUjUgfTsKLSAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5k
ZXhbaW5kZXhdOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChHUFJS
ZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKLSAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDE2KTsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0geyAwLCAyLCAxLCAzLCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgNSwgNCwgNiwgNywgOCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKLSAg
ICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOwotICAgICAgICBB
U1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAgQVNTRVJU
KHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDE2KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7Ci0gICAgICAgICAgICAicmF4IiwgInJjeCIsICJyZHgi
LCAicmJ4IiwKLSAgICAgICAgICAgICJyc3AiLCAicmJwIiwgInJzaSIsICJyZGkiLAotICAgICAg
ICAgICAgInI4IiwgInI5IiwgInIxMCIsICJyMTEiLAotICAgICAgICAgICAgInIxMiIsICJyMTMi
LCAicjE0IiwgInIxNSIKLSAgICAgICAgfTsKLSAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3Rl
cltyZWddOwotICAgIH0KLXByaXZhdGU6Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52
YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKLX07Ci0KLSNlbmRpZgotCi0jaWYgQ1BVKEFSTSkKLSNk
ZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0Ci0KLWNsYXNzIEdQUkluZm8gewot
cHVibGljOgotICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA4OwotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUzsKLQotICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCi0gICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUMCA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUMSA9IEFSTVJlZ2lzdGVyczo6cjE7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMiA9
IEFSTVJlZ2lzdGVyczo6cjI7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9IEFSTVJl
Z2lzdGVyczo6cjQ7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IEFSTVJlZ2lzdGVy
czo6cjg7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNSA9IEFSTVJlZ2lzdGVyczo6cjk7
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNiA9IEFSTVJlZ2lzdGVyczo6cjEwOwotICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDcgPSBBUk1SZWdpc3RlcnM6OnIxMTsKLSAgICAvLyBU
aGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KLSAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gcmVnVDA7Ci0gICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSByZWdUMTsKLSAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNTsKLSAgICAvLyBUaGVzZSBj
b25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1l
bnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJn
dW1lbnRHUFIwID0gQVJNUmVnaXN0ZXJzOjpyMDsgLy8gcmVnVDAKLSAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIGFyZ3VtZW50R1BSMSA9IEFSTVJlZ2lzdGVyczo6cjE7IC8vIHJlZ1QxCi0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBBUk1SZWdpc3RlcnM6OnIyOyAvLyByZWdU
MgotICAgIC8vIEZJWE1FOiByMyBpcyBjdXJyZW50bHkgdXNlZCBiZSB0aGUgTWFjcm9Bc3NlbWJs
ZXIgYXMgYSB0ZW1wb3JhcnkgLSBpdCBzZWVtcwotICAgIC8vIFRoaXMgY291bGQgdGhyZW9yZXRp
Y2FsbHkgYmUgYSBwcm9ibGVtIGlmIHRoaXMgaXMgdXNlZCBpbiBjb2RlIGdlbmVyYXRpb24KLSAg
ICAvLyBiZXR3ZWVuIHRoZSBhcmd1bWVudHMgYmVpbmcgc2V0IHVwLCBhbmQgdGhlIGNhbGwgYmVp
bmcgbWFkZS4gVGhhdCBzYWlkLAotICAgIC8vIGFueSBjaGFuZ2UgaW50cm9kdWNpbmcgYSBwcm9i
bGVtIGhlcmUgaXMgbGlrZWx5IHRvIGJlIGltbWVkaWF0ZWx5IGFwcGFyZW50IQotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gQVJNUmVnaXN0ZXJzOjpyMzsgLy8gRklYTUUh
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gQVJNUmVnaXN0ZXJzOjpyNDsg
Ly8gcmVnVDMKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBBUk1SZWdpc3Rl
cnM6OnI4OyAvLyByZWdUNAotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9IEFS
TVJlZ2lzdGVyczo6cjk7IC8vIHJlZ1Q1Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5W
YWx1ZUdQUiA9IEFSTVJlZ2lzdGVyczo6cjA7IC8vIHJlZ1QwCi0gICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBBUk1SZWdpc3RlcnM6OnIxOyAvLyByZWdUMQotICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNUmVnaXN0ZXJz
OjpyMjsKLQotICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKLSAgICAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9
IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3
IH07Ci0gICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChHUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWcpICE9IEludmFsaWRHUFJSZWcpOwotICAgICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlZykgPCAxNik7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzE2XSA9IHsgMCwgMSwgMiwgSW52YWxp
ZEluZGV4LCAzLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA0LCA1
LCA2LCA3LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXggfTsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWdd
OwotICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJS
ZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWcp
ICE9IEludmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHJlZykgPCAxNik7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJb
MTZdID0gewotICAgICAgICAgICAgInIwIiwgInIxIiwgInIyIiwgInIzIiwKLSAgICAgICAgICAg
ICJyNCIsICJyNSIsICJyNiIsICJyNyIsCi0gICAgICAgICAgICAicjgiLCAicjkiLCAicjEwIiwg
InIxMSIsCi0gICAgICAgICAgICAicjEyIiwgInIxMyIsICJyMTQiLCAicjE1IgotICAgICAgICB9
OwotICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107Ci0gICAgfQotcHJpdmF0ZToK
LQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwot
fTsKLQotI2VuZGlmCi0KLSNpZiBDUFUoTUlQUykKLSNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUyA0Ci0KLWNsYXNzIEdQUkluZm8gewotcHVibGljOgotICAgIHR5cGVkZWYgR1BS
UmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdp
c3RlcnMgPSA2OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVn
aXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsKLQotICAgIC8vIFRlbXBvcmFy
eSByZWdpc3RlcnMuCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMCA9IE1JUFNSZWdpc3Rl
cnM6OnYwOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjp2
MTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gTUlQU1JlZ2lzdGVyczo6dDQ7Ci0g
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9IE1JUFNSZWdpc3RlcnM6OnQ1OwotICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjp0NjsKLSAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6dDc7Ci0gICAgLy8gVGhlc2UgcmVn
aXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBj
YWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2Fj
aGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxs
RnJhbWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnMwOwotICAgIC8vIFRoZXNlIGNvbnN0YW50
cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJl
dHVybiB2YWx1ZSByZWdpc3RlcnMuCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQ
UjAgPSBNSVBTUmVnaXN0ZXJzOjphMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50
R1BSMSA9IE1JUFNSZWdpc3RlcnM6OmExOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1l
bnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6YTI7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1
bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJzOjphMzsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5v
bkFyZ0dQUjAgPSByZWdUMjsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBy
ZWdUMzsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjIgPSByZWdUNDsKLSAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7Ci0gICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKLSAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1Q1OwotCi0gICAgc3RhdGljIEdQUlJl
ZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4
IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwotICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lz
dGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCBy
ZWdUMywgcmVnVDQsIHJlZ1Q1IH07Ci0gICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2lu
ZGV4XTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChHUFJSZWcgcmVnKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAgQVNT
RVJUKHJlZyA8IDE2KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVn
aXN0ZXJbMTZdID0geyBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMCwgMSwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDIsIDMsIDQsIDUg
fTsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOwotICAg
ICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVn
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAg
QVNTRVJUKHJlZyA8IDE2KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdp
c3RlclsxNl0gPSB7Ci0gICAgICAgICAgICAiemVybyIsICJhdCIsICJ2MCIsICJ2MSIsCi0gICAg
ICAgICAgICAiYTAiLCAiYTEiLCAiYTIiLCAiYTMiLAotICAgICAgICAgICAgInQwIiwgInQxIiwg
InQyIiwgInQzIiwKLSAgICAgICAgICAgICJ0NCIsICJ0NSIsICJ0NiIsICJ0NyIKLSAgICAgICAg
fTsKLSAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOwotICAgIH0KLXByaXZhdGU6
Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsK
LX07Ci0KLSNlbmRpZgotCi0jaWYgQ1BVKFNINCkKLSNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUyA0Ci0KLWNsYXNzIEdQUkluZm8gewotcHVibGljOgotICAgIHR5cGVkZWYgR1BS
UmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdp
c3RlcnMgPSAxMDsKLQotICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCi0gICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUMCA9IFNINFJlZ2lzdGVyczo6cjA7Ci0gICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUMSA9IFNINFJlZ2lzdGVyczo6cjE7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUMiA9IFNINFJlZ2lzdGVyczo6cjI7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9
IFNINFJlZ2lzdGVyczo6cjEwOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBTSDRS
ZWdpc3RlcnM6OnI0OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBTSDRSZWdpc3Rl
cnM6OnI1OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDYgPSBTSDRSZWdpc3RlcnM6OnI2
OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDcgPSBTSDRSZWdpc3RlcnM6OnI3OwotICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDggPSBTSDRSZWdpc3RlcnM6OnI4OwotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgcmVnVDkgPSBTSDRSZWdpc3RlcnM6OnI5OwotICAgIC8vIFRoZXNlIHJl
Z2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
Y2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSByZWdUMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNh
Y2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJlZ1QxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2Fs
bEZyYW1lUmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OmZwOwotICAgIC8vIFRoZXNlIGNvbnN0YW50
cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJl
dHVybiB2YWx1ZSByZWdpc3RlcnMuCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQ
UjAgPSByZWdUNDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IHJlZ1Q1
OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gcmVnVDY7Ci0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSByZWdUNzsKLSAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdUMzsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFy
Z0dQUjEgPSByZWdUODsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjIgPSByZWdU
OTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7Ci0gICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKLSAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOwotCi0gICAgc3Rh
dGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwotICAgICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEs
IHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcsIHJlZ1Q4LCByZWdUOSB9
OwotICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07Ci0gICAgfQotCi0gICAg
c3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChyZWcgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChyZWcgPCAxNCk7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzE0XSA9IHsgMCwgMSwg
MiwgSW52YWxpZEluZGV4LCA0LCA1LCA2LCA3LCA4LCA5LCAzLCBJbnZhbGlkSW5kZXgsIEludmFs
aWRJbmRleCwgSW52YWxpZEluZGV4IH07Ci0gICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4
Rm9yUmVnaXN0ZXJbcmVnXTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChyZWcgIT0gSW52
YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChyZWcgPCAxNik7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbMTZdID0gewotICAgICAgICAgICAgInIwIiwgInIx
IiwgInIyIiwgInIzIiwgInI0IiwgInI1IiwgInI2IiwgInI3IiwKLSAgICAgICAgICAgICJyOCIs
ICJyOSIsICJyMTAiLCAicjExIiwgInIxMiIsICJyMTMiLCAicjE0IiwgInIxNSIKLSAgICAgICAg
fTsKLSAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsK
LX07Ci0KLSNlbmRpZgotCi10eXBlZGVmIFJlZ2lzdGVyQmFuazxHUFJJbmZvPjo6aXRlcmF0b3Ig
Z3ByX2l0ZXJhdG9yOwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZgotI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24g
MTU2MDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJTZXQuaCIK
KyNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRh
RHVtcC5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKICNpbmNsdWRlICJP
cGVyYW5kc0lubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJ
KHJldmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiREZHQXJndW1lbnRQb3NpdGlvbi5oIgotI2luY2x1ZGUgIkRGR0Fzc2Vt
Ymx5SGVscGVycy5oIgorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkRG
R0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJERkdEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiREZH
TG9uZ0xpdmVkU3RhdGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgJKHJldmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDEwIEBACiAK
ICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0j
aW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAj
aW5jbHVkZSAiREZHRGlzYXNzZW1ibGVyLmgiCi0jaW5jbHVkZSAiREZHRlBSSW5mby5oIgotI2lu
Y2x1ZGUgIkRGR0dQUkluZm8uaCIKKyNpbmNsdWRlICJGUFJJbmZvLmgiCisjaW5jbHVkZSAiR1BS
SW5mby5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgog
I2luY2x1ZGUgIkRGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMTU2MDc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJERkdBc3NlbWJs
eUhlbHBlcnMuaCIKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRlICJERkdH
cmFwaC5oIgogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHJl
dmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5o
IgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCi0j
aW5jbHVkZSAiREZHR1BSSW5mby5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJE
RkdPU1JFeGl0QmFzZS5oIgogI2luY2x1ZGUgIkRGR1ZhbHVlUmVjb3ZlcnlPdmVycmlkZS5oIgog
I2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmgJKHJldmlzaW9uIDE1NjA3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDggKzMwLDggQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZH
QXNzZW1ibHlIZWxwZXJzLmgiCi0jaW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVk
ZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMuaCIKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5oCShyZXZpc2lvbiAxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAK
ICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkRGR0NDYWxsSGVscGVycy5oIgorI2lu
Y2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZWdpc3RlckJhbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1JlZ2lzdGVyQmFuay5oCShyZXZpc2lvbiAxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw4IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJERkdDb21tb24uaCIKKyNp
bmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiRlBSSW5mby5oIgogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTM1OCw2ICszNjAsOSBAQCBwcml2YXRlOgogICAgIE1h
cEVudHJ5IG1fZGF0YVtOVU1fUkVHU107CiB9OwogCit0eXBlZGVmIFJlZ2lzdGVyQmFuazxHUFJJ
bmZvPjo6aXRlcmF0b3IgZ3ByX2l0ZXJhdG9yOwordHlwZWRlZiBSZWdpc3RlckJhbms8RlBSSW5m
bz46Oml0ZXJhdG9yIGZwcl9pdGVyYXRvcjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwog
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyU2V0
LmgJKHJldmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVn
aXN0ZXJTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiAjaWYgRU5BQkxF
KERGR19KSVQpCiAKLSNpbmNsdWRlICJERkdGUFJJbmZvLmgiCi0jaW5jbHVkZSAiREZHR1BSSW5m
by5oIgorI2luY2x1ZGUgIkZQUkluZm8uaCIKKyNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVk
ZSA8d3RmL0JpdG1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE1NjA3
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUg
IkNhbGxGcmFtZUlubGluZXMuaCIKLSNpbmNsdWRlICJERkdDQ2FsbEhlbHBlcnMuaCIKKyNpbmNs
dWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3IuaCIKICNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgogI2luY2x1ZGUgIkRGR1RodW5r
cy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNh
dmVQbGFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxl
bnRSZWdpc3RlclNhdmVQbGFuLmgJKHJldmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw4ICszMSw4IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJERkdDb21t
b24uaCIKLSNpbmNsdWRlICJERkdGUFJJbmZvLmgiCi0jaW5jbHVkZSAiREZHR1BSSW5mby5oIgor
I2luY2x1ZGUgIkZQUkluZm8uaCIKKyNpbmNsdWRlICJHUFJJbmZvLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGh1bmtzLmNwcAkocmV2aXNpb24gMTU2MDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBF
TkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkRGR0NDYWxsSGVscGVycy5oIgotI2luY2x1ZGUg
IkRGR0ZQUkluZm8uaCIKLSNpbmNsdWRlICJERkdHUFJJbmZvLmgiCisjaW5jbHVkZSAiQ0NhbGxI
ZWxwZXJzLmgiCisjaW5jbHVkZSAiRlBSSW5mby5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKICNp
bmNsdWRlICJERkdPU1JFeGl0Q29tcGlsZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5o
IgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVu
dC5jcHAJKHJldmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyaWFibGVFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAKIAogI2lm
IEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZHRlBSSW5mby5oIgotI2luY2x1ZGUgIkRG
R0dQUkluZm8uaCIKKyNpbmNsdWRlICJGUFJJbmZvLmgiCisjaW5jbHVkZSAiR1BSSW5mby5oIgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ0FyZ3VtZW50R2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDQXJndW1lbnRHZXR0ZXIuaAkocmV2aXNpb24gMTU2MDc1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDQXJndW1lbnRHZXR0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKLSNpbmNs
dWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIK
ICNpbmNsdWRlICJGVExWYWx1ZUZvcm1hdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEZUTCB7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAvLyBQZWVrIG9mZnNldCBpcyB0
aGUgbnVtYmVyIG9mIHRoaW5ncyBvbiB0aGUgc3RhY2sgYmVsb3cgdGhlIGZpcnN0IGFyZ3VtZW50
LgogICAgIC8vIEl0IHdpbGwgYmUgMSBpZiB5b3UgaGF2ZW4ndCBwdXNoZWQgb3IgcG9wcGVkIGFm
dGVyIHRoZSBjYWxsOyBpLmUuIHRoZSBvbmx5CiAgICAgLy8gdGhpbmcgaXMgdGhlIHJldHVybiBh
ZGRyZXNzLgotICAgIENBcmd1bWVudEdldHRlcihERkc6OkFzc2VtYmx5SGVscGVycyYgaml0LCBp
bnQgcGVla09mZnNldCA9IDEpCisgICAgQ0FyZ3VtZW50R2V0dGVyKEFzc2VtYmx5SGVscGVycyYg
aml0LCBpbnQgcGVla09mZnNldCA9IDEpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAs
IG1fcGVla09mZnNldChwZWVrT2Zmc2V0KQogICAgICAgICAsIG1fZ3ByQXJndW1lbnRJbmRleCgw
KQpAQCAtNjIsNTIgKzYyLDUyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIHZv
aWQgbG9hZE5leHQ4KERGRzo6R1BSUmVnIGRlc3RpbmF0aW9uKQorICAgIHZvaWQgbG9hZE5leHQ4
KEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNBcmd1bWVudFJl
Z2lzdGVyPERGRzo6R1BSSW5mbz4oZGVzdGluYXRpb24pKTsKLSAgICAgICAgaWYgKG1fZ3ByQXJn
dW1lbnRJbmRleCA8IERGRzo6R1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykgewot
ICAgICAgICAgICAgbV9qaXQubW92ZShERkc6OkdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlciht
X2dwckFyZ3VtZW50SW5kZXgrKyksIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFpc0Fy
Z3VtZW50UmVnaXN0ZXI8R1BSSW5mbz4oZGVzdGluYXRpb24pKTsKKyAgICAgICAgaWYgKG1fZ3By
QXJndW1lbnRJbmRleCA8IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpIHsKKyAg
ICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG1fZ3ByQXJn
dW1lbnRJbmRleCsrKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkOChuZXh0QWRkcmVzcygpLCBkZXN0aW5h
dGlvbik7CiAgICAgfQogICAgIAotICAgIHZvaWQgbG9hZE5leHQzMihERkc6OkdQUlJlZyBkZXN0
aW5hdGlvbikKKyAgICB2b2lkIGxvYWROZXh0MzIoR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKCFpc0FyZ3VtZW50UmVnaXN0ZXI8REZHOjpHUFJJbmZvPihkZXN0aW5h
dGlvbikpOwotICAgICAgICBpZiAobV9ncHJBcmd1bWVudEluZGV4IDwgREZHOjpHUFJJbmZvOjpu
dW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKERGRzo6
R1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG1fZ3ByQXJndW1lbnRJbmRleCsrKSwgZGVzdGlu
YXRpb24pOworICAgICAgICBBU1NFUlQoIWlzQXJndW1lbnRSZWdpc3RlcjxHUFJJbmZvPihkZXN0
aW5hdGlvbikpOworICAgICAgICBpZiAobV9ncHJBcmd1bWVudEluZGV4IDwgR1BSSW5mbzo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVycykgeworICAgICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZv
Ojp0b0FyZ3VtZW50UmVnaXN0ZXIobV9ncHJBcmd1bWVudEluZGV4KyspLCBkZXN0aW5hdGlvbik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1faml0
LmxvYWQzMihuZXh0QWRkcmVzcygpLCBkZXN0aW5hdGlvbik7CiAgICAgfQogICAgIAotICAgIHZv
aWQgbG9hZE5leHQ2NChERkc6OkdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICB2b2lkIGxvYWROZXh0
NjQoR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0FyZ3VtZW50
UmVnaXN0ZXI8REZHOjpHUFJJbmZvPihkZXN0aW5hdGlvbikpOwotICAgICAgICBpZiAobV9ncHJB
cmd1bWVudEluZGV4IDwgREZHOjpHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSB7
Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKERGRzo6R1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVy
KG1fZ3ByQXJndW1lbnRJbmRleCsrKSwgZGVzdGluYXRpb24pOworICAgICAgICBBU1NFUlQoIWlz
QXJndW1lbnRSZWdpc3RlcjxHUFJJbmZvPihkZXN0aW5hdGlvbikpOworICAgICAgICBpZiAobV9n
cHJBcmd1bWVudEluZGV4IDwgR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykgewor
ICAgICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobV9ncHJB
cmd1bWVudEluZGV4KyspLCBkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWQ2NChuZXh0QWRkcmVzcygpLCBkZXN0
aW5hdGlvbik7CiAgICAgfQogICAgIAotICAgIHZvaWQgbG9hZE5leHRQdHIoREZHOjpHUFJSZWcg
ZGVzdGluYXRpb24pCisgICAgdm9pZCBsb2FkTmV4dFB0cihHUFJSZWcgZGVzdGluYXRpb24pCiAg
ICAgewogICAgICAgICBsb2FkTmV4dDY0KGRlc3RpbmF0aW9uKTsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBsb2FkTmV4dERvdWJsZShERkc6OkZQUlJlZyBkZXN0aW5hdGlvbikKKyAgICB2b2lkIGxv
YWROZXh0RG91YmxlKEZQUlJlZyBkZXN0aW5hdGlvbikKICAgICB7CiAgICAgICAgIEFTU0VSVCgK
LSAgICAgICAgICAgICFpc0FyZ3VtZW50UmVnaXN0ZXI8REZHOjpGUFJJbmZvPihkZXN0aW5hdGlv
bikKLSAgICAgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IERGRzo6RlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKKyAgICAgICAgICAgICFpc0FyZ3VtZW50UmVnaXN0ZXI8RlBSSW5mbz4oZGVzdGluYXRp
b24pCisgICAgICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OwogICAgICAgICAKLSAgICAgICAgaWYgKG1fZnByQXJndW1lbnRJbmRleCA8IERGRzo6RlBSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykgewotICAgICAgICAgICAgbV9qaXQubW92ZURv
dWJsZShERkc6OkZQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihtX2ZwckFyZ3VtZW50SW5kZXgr
KyksIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgaWYgKG1fZnByQXJndW1lbnRJbmRleCA8IEZQUklu
Zm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIG1faml0Lm1vdmVE
b3VibGUoRlBSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG1fZnByQXJndW1lbnRJbmRleCsrKSwg
ZGVzdGluYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApA
QCAtMTE1LDggKzExNSw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdm9pZCBsb2FkTmV4
dEFuZEJveCgKLSAgICAgICAgVmFsdWVGb3JtYXQsIERGRzo6R1BSUmVnIGRlc3RpbmF0aW9uLAot
ICAgICAgICBERkc6OkdQUlJlZyBzY3JhdGNoMSA9IEludmFsaWRHUFJSZWcsIERGRzo6R1BSUmVn
IHNjcmF0Y2gyID0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIFZhbHVlRm9ybWF0LCBHUFJSZWcg
ZGVzdGluYXRpb24sCisgICAgICAgIEdQUlJlZyBzY3JhdGNoMSA9IEludmFsaWRHUFJSZWcsIEdQ
UlJlZyBzY3JhdGNoMiA9IEludmFsaWRHUFJSZWcpOwogCiBwcml2YXRlOgogICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzIG5leHRBZGRyZXNzKCkKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgKG1fcGVla09mZnNldCArIG1fc3RhY2tBcmd1bWVudEluZGV4KyspICog
c2l6ZW9mKHZvaWQqKSk7CiAgICAgfQogICAgICAgICAgICAgCi0gICAgREZHOjpBc3NlbWJseUhl
bHBlcnMmIG1faml0OworICAgIEFzc2VtYmx5SGVscGVycyYgbV9qaXQ7CiAgICAgdW5zaWduZWQg
bV9wZWVrT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fZ3ByQXJndW1lbnRJbmRleDsKICAgICB1bnNp
Z25lZCBtX2ZwckFyZ3VtZW50SW5kZXg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbXBpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tcGlsZS5jcHAJKHJldmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoRlRMX0pJVCkKIAogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCi0j
aW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAj
aW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVk
ZSAiRlRMSklUQ29kZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0
VGh1bmtHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEV4aXRUaHVua0dlbmVyYXRvci5oCShyZXZpc2lvbiAxNTYwNzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRUaHVua0dlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCwxNCArMzAsMTQgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCi0jaW5jbHVkZSAiREZH
Q0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogY2xhc3MgU3RhdGU7CiBzdHJ1Y3QgT1NSRXhpdENvbXBp
bGF0aW9uSW5mbzsKIAotY2xhc3MgRXhpdFRodW5rR2VuZXJhdG9yIDogcHVibGljIERGRzo6Q0Nh
bGxIZWxwZXJzIHsKK2NsYXNzIEV4aXRUaHVua0dlbmVyYXRvciA6IHB1YmxpYyBDQ2FsbEhlbHBl
cnMgewogcHVibGljOgogICAgIEV4aXRUaHVua0dlbmVyYXRvcihTdGF0ZSYgc3RhdGUpOwogICAg
IH5FeGl0VGh1bmtHZW5lcmF0b3IoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
aW5rLmNwcAkocmV2aXNpb24gMTU2MDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAi
Q2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCi0j
aW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAj
aW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiRlRMSklUQ29kZS5oIgogI2luY2x1ZGUg
IkpJVFN0dWJzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3Bw
CShyZXZpc2lvbiAxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5r
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShGVExf
SklUKQogCi0jaW5jbHVkZSAiREZHR1BSSW5mby5oIgotI2luY2x1ZGUgIkRGR0ZQUkluZm8uaCIK
KyNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiRlBSSW5mby5oIgogI2luY2x1ZGUgIkZU
TE9TUkV4aXRDb21waWxlci5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlci5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMTU2MDc1KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHA6MTU2MDc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKKwor
I2lmIEVOQUJMRShERkdfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisK
K0V4ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3IoY29uc3QgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbikKK3sKKyAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lKQorICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOworICAg
IAorICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQo
KTsKK30KKworVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2VtYmx5SGVscGVy
czo6ZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgQVNTRVJU
KGNvZGVCbG9jayA9PSBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKKyAgICBBU1NFUlQo
Y29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VS
VChjb2RlQmxvY2stPmppdENvZGVNYXAoKSk7CisgICAgCisgICAgSGFzaE1hcDxDb2RlQmxvY2sq
LCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiA+OjpBZGRSZXN1bHQgcmVzdWx0ID0g
bV9kZWNvZGVkQ29kZU1hcHMuYWRkKGNvZGVCbG9jaywgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGlu
ZU9mZnNldD4oKSk7CisgICAgCisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBj
b2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwor
ICAgIAorICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCisjaWYgRU5BQkxF
KFNBTVBMSU5HX0ZMQUdTKQordm9pZCBBc3NlbWJseUhlbHBlcnM6OnNldFNhbXBsaW5nRmxhZyhp
bnQzMl90IGZsYWcpCit7CisgICAgQVNTRVJUKGZsYWcgPj0gMSk7CisgICAgQVNTRVJUKGZsYWcg
PD0gMzIpOworICAgIG9yMzIoVHJ1c3RlZEltbTMyKDF1IDw8IChmbGFnIC0gMSkpLCBBYnNvbHV0
ZUFkZHJlc3MoU2FtcGxpbmdGbGFnczo6YWRkcmVzc09mRmxhZ3MoKSkpOworfQorCit2b2lkIEFz
c2VtYmx5SGVscGVyczo6Y2xlYXJTYW1wbGluZ0ZsYWcoaW50MzJfdCBmbGFnKQoreworICAgIEFT
U0VSVChmbGFnID49IDEpOworICAgIEFTU0VSVChmbGFnIDw9IDMyKTsKKyAgICBhbmQzMihUcnVz
dGVkSW1tMzIofigxdSA8PCAoZmxhZyAtIDEpKSksIEFic29sdXRlQWRkcmVzcyhTYW1wbGluZ0Zs
YWdzOjphZGRyZXNzT2ZGbGFncygpKSk7Cit9CisjZW5kaWYKKworI2lmIERGR19FTkFCTEUoSklU
X0FTU0VSVCkKKyNpZiBVU0UoSlNWQUxVRTY0KQordm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFz
c2VydElzSW50MzIoR1BSUmVnIGdwcikKK3sKKyNpZiBDUFUoWDg2XzY0KQorICAgIEp1bXAgY2hl
Y2tJbnQzMiA9IGJyYW5jaDY0KEJlbG93T3JFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tNjQoc3RhdGlj
X2Nhc3Q8dWludHB0cl90PigweEZGRkZGRkZGdSkpKTsKKyAgICBicmVha3BvaW50KCk7CisgICAg
Y2hlY2tJbnQzMi5saW5rKHRoaXMpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZ3ByKTsKKyNl
bmRpZgorfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0ludDMyKEdQUlJl
ZyBncHIpCit7CisgICAgSnVtcCBjaGVja0pTSW50MzIgPSBicmFuY2g2NChBYm92ZU9yRXF1YWws
IGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBicmVha3BvaW50KCk7
CisgICAgY2hlY2tKU0ludDMyLmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpqaXRBc3NlcnRJc0pTTnVtYmVyKEdQUlJlZyBncHIpCit7CisgICAgSnVtcCBjaGVja0pTTnVt
YmVyID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgYnJlYWtwb2ludCgpOworICAgIGNoZWNrSlNO
dW1iZXIubGluayh0aGlzKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElz
SlNEb3VibGUoR1BSUmVnIGdwcikKK3sKKyAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDY0
KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAg
IEp1bXAgY2hlY2tKU051bWJlciA9IGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIGNoZWNrSlNJbnQz
Mi5saW5rKHRoaXMpOworICAgIGJyZWFrcG9pbnQoKTsKKyAgICBjaGVja0pTTnVtYmVyLmxpbmso
dGhpcyk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0NlbGwoR1BSUmVn
IGdwcikKK3sKKyAgICBKdW1wIGNoZWNrQ2VsbCA9IGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxl
cjo6WmVybywgZ3ByLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIGJyZWFrcG9pbnQo
KTsKKyAgICBjaGVja0NlbGwubGluayh0aGlzKTsKK30KKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Cit2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNJbnQzMihHUFJSZWcgZ3ByKQorewor
ICAgIFVOVVNFRF9QQVJBTShncHIpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNz
ZXJ0SXNKU0ludDMyKEdQUlJlZyBncHIpCit7CisgICAgSnVtcCBjaGVja0pTSW50MzIgPSBicmFu
Y2gzMihFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKKyAgICBi
cmVha3BvaW50KCk7CisgICAgY2hlY2tKU0ludDMyLmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgQXNz
ZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTTnVtYmVyKEdQUlJlZyBncHIpCit7CisgICAgSnVt
cCBjaGVja0pTSW50MzIgPSBicmFuY2gzMihFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6SW50MzJUYWcpKTsKKyAgICBKdW1wIGNoZWNrSlNEb3VibGUgPSBicmFuY2gzMihCZWxvdywg
Z3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSk7CisgICAgYnJlYWtwb2ludCgp
OworICAgIGNoZWNrSlNJbnQzMi5saW5rKHRoaXMpOworICAgIGNoZWNrSlNEb3VibGUubGluayh0
aGlzKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNEb3VibGUoR1BS
UmVnIGdwcikKK3sKKyAgICBKdW1wIGNoZWNrSlNEb3VibGUgPSBicmFuY2gzMihCZWxvdywgZ3By
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSk7CisgICAgYnJlYWtwb2ludCgpOwor
ICAgIGNoZWNrSlNEb3VibGUubGluayh0aGlzKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6
OmppdEFzc2VydElzQ2VsbChHUFJSZWcgZ3ByKQoreworICAgIEp1bXAgY2hlY2tDZWxsID0gYnJh
bmNoMzIoRXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICBi
cmVha3BvaW50KCk7CisgICAgY2hlY2tDZWxsLmxpbmsodGhpcyk7Cit9CisjZW5kaWYgLy8gVVNF
KEpTVkFMVUUzMl82NCkKKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydEhhc1ZhbGlk
Q2FsbEZyYW1lKCkKK3sKKyAgICBKdW1wIGNoZWNrQ0ZSID0gYnJhbmNoVGVzdFB0cihaZXJvLCBH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgVHJ1c3RlZEltbTMyKDcpKTsKKyAgICBicmVha3Bv
aW50KCk7CisgICAgY2hlY2tDRlIubGluayh0aGlzKTsKK30KKyNlbmRpZiAvLyBERkdfRU5BQkxF
KEpJVF9BU1NFUlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDExICsyNCwxMSBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMu
aCIKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKIAotI2lmIEVOQUJMRShERkdfSklUKQor
I2lmIEVOQUJMRShKSVQpCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25hbWVz
cGFjZSBKU0MgewogCiBFeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRhYmxl
Rm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiB7CkBAIC02OCw3ICs2OCw3IEBAIHZv
aWQgQXNzZW1ibHlIZWxwZXJzOjpjbGVhclNhbXBsaW5nRmxhZygKIH0KICNlbmRpZgogCi0jaWYg
REZHX0VOQUJMRShKSVRfQVNTRVJUKQorI2lmICFBU1NFUlRfRElTQUJMRUQKICNpZiBVU0UoSlNW
QUxVRTY0KQogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoR1BSUmVnIGdw
cikKIHsKQEAgLTE1Myw5ICsxNTMsOSBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0
SGFzVmFsaWRDCiAgICAgYnJlYWtwb2ludCgpOwogICAgIGNoZWNrQ0ZSLmxpbmsodGhpcyk7CiB9
Ci0jZW5kaWYgLy8gREZHX0VOQUJMRShKSVRfQVNTRVJUKQorI2VuZGlmIC8vICFBU1NFUlRfRElT
QUJMRUQKIAotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworfSAvLyBuYW1lc3BhY2UgSlNDCiAK
LSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9u
IDE1NjA3NSkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBl
cnMuaDoxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQXNzZW1ibHlIZWxw
ZXJzX2gKKyNkZWZpbmUgREZHQXNzZW1ibHlIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJERkdGUFJJbmZvLmgiCisjaW5jbHVkZSAiREZHR1BSSW5mby5oIgorI2luY2x1
ZGUgIkRGR0pJVENvZGUuaCIKKyNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiVk0uaCIK
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CisKK3R5cGVkZWYgdm9pZCAoKlZfREZHRGVidWdPcGVyYXRpb25fRVBQKShFeGVjU3Rh
dGUqLCB2b2lkKiwgdm9pZCopOworCitjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFj
cm9Bc3NlbWJsZXIgeworcHVibGljOgorICAgIEFzc2VtYmx5SGVscGVycyhWTSogdm0sIENvZGVC
bG9jayogY29kZUJsb2NrKQorICAgICAgICA6IG1fdm0odm0pCisgICAgICAgICwgbV9jb2RlQmxv
Y2soY29kZUJsb2NrKQorICAgICAgICAsIG1fYmFzZWxpbmVDb2RlQmxvY2soY29kZUJsb2NrID8g
Y29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSA6IDApCisgICAgeworICAgICAgICBpZiAobV9j
b2RlQmxvY2spIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2Jhc2VsaW5lQ29kZUJsb2NrKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghbV9iYXNlbGluZUNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQobV9iYXNlbGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaygpIHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9CisgICAgVk0qIHZtKCkgeyByZXR1
cm4gbV92bTsgfQorICAgIEFzc2VtYmxlclR5cGVfVCYgYXNzZW1ibGVyKCkgeyByZXR1cm4gbV9h
c3NlbWJsZXI7IH0KKyAgICAKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQorICAgIHZvaWQg
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUlJlZyByZWcpCisgICAgeworICAgICAg
ICBwb3AocmVnKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3Jl
UmV0dXJuKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBwdXNoKHJlZyk7CisgICAgfQorCisg
ICAgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBwdXNoKGFkZHJlc3MpOworICAgIH0KKyNlbmRpZiAvLyBDUFUoWDg2
XzY0KSB8fCBDUFUoWDg2KQorCisjaWYgQ1BVKEFSTSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAg
ICAgICAgbW92ZShsaW5rUmVnaXN0ZXIsIHJlZyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQor
ICAgIHsKKyAgICAgICAgbW92ZShyZWcsIGxpbmtSZWdpc3Rlcik7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgbGlua1JlZ2lzdGVyKTsK
KyAgICB9CisjZW5kaWYKKworI2lmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBw
cmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAg
ICAgICBtb3ZlKHJldHVybkFkZHJlc3NSZWdpc3RlciwgcmVnKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJ
RCByZWcpCisgICAgeworICAgICAgICBtb3ZlKHJlZywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihhZGRyZXNz
LCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworICAgIH0KKyNlbmRpZgorCisjaWYgQ1BVKFNINCkK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKFJl
Z2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RzcHIocmVnKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVS
ZXR1cm4oUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sZHNwcihy
ZWcpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVz
c0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBsb2FkUHRyTGlu
a1JlZyhhZGRyZXNzKTsKKyAgICB9CisjZW5kaWYKKworICAgIHZvaWQgZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIEdQUlJl
ZyB0bykKKyAgICB7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOworICAgIH0KKyAgICB2b2lk
IGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihHUFJSZWcgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1l
SGVhZGVyRW50cnkgZW50cnkpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHN0
b3JlNjQoZnJvbSwgQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBz
aXplb2YoUmVnaXN0ZXIpKSk7CisjZWxzZQorICAgICAgICBzdG9yZTMyKGZyb20sIEFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwor
I2VuZGlmCisgICAgfQorCisgICAgdm9pZCBlbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFk
ZXIodm9pZCogdmFsdWUsIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQorICAg
IHsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cih2YWx1ZSksIEFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoSWZOb3RDZWxsKEdQUlJlZyByZWcpCisgICAgeworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8sIHJlZywgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyNlbHNlCisgICAgICAgIHJl
dHVybiBicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHJlZywgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgQWRk
cmVzcyBhZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCisgICAgewor
ICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgdmlydHVh
bFJlZ2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgfQorICAgIHN0YXRpYyBBZGRyZXNz
IGFkZHJlc3NGb3IoaW50IG9wZXJhbmQpCisgICAgeworICAgICAgICByZXR1cm4gYWRkcmVzc0Zv
cihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgQWRkcmVzcyB0YWdGb3IoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKKyAg
ICB7CisgICAgICAgIHJldHVybiBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2
aXJ0dWFsUmVnaXN0ZXIgKiBzaXplb2YoUmVnaXN0ZXIpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICB9CisgICAgc3RhdGljIEFkZHJl
c3MgdGFnRm9yKGludCBvcGVyYW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRhZ0ZvcihzdGF0
aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
QWRkcmVzcyBwYXlsb2FkRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCisgICAg
eworICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgdmly
dHVhbFJlZ2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgIH0KKyAgICBzdGF0aWMgQWRk
cmVzcyBwYXlsb2FkRm9yKGludCBvcGVyYW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBheWxv
YWRGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hJZk5vdE9iamVjdChHUFJSZWcgc3RydWN0dXJlUmVnKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgR1BSUmVnIHNlbGVjdFNjcmF0Y2hHUFIoR1BSUmVnIHByZXNlcnZl
MSA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTIgPSBJbnZhbGlkR1BSUmVnLCBHUFJS
ZWcgcHJlc2VydmUzID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlNCA9IEludmFsaWRH
UFJSZWcpCisgICAgeworICAgICAgICBpZiAocHJlc2VydmUxICE9IEdQUkluZm86OnJlZ1QwICYm
IHByZXNlcnZlMiAhPSBHUFJJbmZvOjpyZWdUMCAmJiBwcmVzZXJ2ZTMgIT0gR1BSSW5mbzo6cmVn
VDAgJiYgcHJlc2VydmU0ICE9IEdQUkluZm86OnJlZ1QwKQorICAgICAgICAgICAgcmV0dXJuIEdQ
UkluZm86OnJlZ1QwOworCisgICAgICAgIGlmIChwcmVzZXJ2ZTEgIT0gR1BSSW5mbzo6cmVnVDEg
JiYgcHJlc2VydmUyICE9IEdQUkluZm86OnJlZ1QxICYmIHByZXNlcnZlMyAhPSBHUFJJbmZvOjpy
ZWdUMSAmJiBwcmVzZXJ2ZTQgIT0gR1BSSW5mbzo6cmVnVDEpCisgICAgICAgICAgICByZXR1cm4g
R1BSSW5mbzo6cmVnVDE7CisKKyAgICAgICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJbmZvOjpyZWdU
MiAmJiBwcmVzZXJ2ZTIgIT0gR1BSSW5mbzo6cmVnVDIgJiYgcHJlc2VydmUzICE9IEdQUkluZm86
OnJlZ1QyICYmIHByZXNlcnZlNCAhPSBHUFJJbmZvOjpyZWdUMikKKyAgICAgICAgICAgIHJldHVy
biBHUFJJbmZvOjpyZWdUMjsKKworICAgICAgICBpZiAocHJlc2VydmUxICE9IEdQUkluZm86OnJl
Z1QzICYmIHByZXNlcnZlMiAhPSBHUFJJbmZvOjpyZWdUMyAmJiBwcmVzZXJ2ZTMgIT0gR1BSSW5m
bzo6cmVnVDMgJiYgcHJlc2VydmU0ICE9IEdQUkluZm86OnJlZ1QzKQorICAgICAgICAgICAgcmV0
dXJuIEdQUkluZm86OnJlZ1QzOworCisgICAgICAgIHJldHVybiBHUFJJbmZvOjpyZWdUNDsKKyAg
ICB9CisKKyAgICAvLyBBZGQgYSBkZWJ1ZyBjYWxsLiBUaGlzIGNhbGwgaGFzIG5vIGVmZmVjdCBv
biBKSVQgY29kZSBleGVjdXRpb24gc3RhdGUuCisgICAgdm9pZCBkZWJ1Z0NhbGwoVl9ERkdEZWJ1
Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQorICAgIHsKKyAgICAgICAg
c2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAg
U2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IG1fdm0tPnNjcmF0Y2hCdWZmZXJGb3JTaXpl
KHNjcmF0Y2hTaXplKTsKKyAgICAgICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZlciA9IHN0YXRpY19j
YXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKKworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7
ICsraSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBzdG9yZTY0KEdQUkluZm86
OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOworI2Vsc2UKKyAgICAgICAgICAgIHN0b3JlMzIo
R1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7CisjZW5kaWYKKyAgICAgICAgfQor
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVyczsgKytpKSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAg
ICAgc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gVGVsbCBHQyBtYXJrIHBoYXNlIGhvdyBtdWNoIG9mIHRo
ZSBzY3JhdGNoIGJ1ZmZlciBpcyBhY3RpdmUgZHVyaW5nIGNhbGwuCisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSksIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIEdQUklu
Zm86OnJlZ1QwKTsKKworI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShNSVBTKSB8
fCBDUFUoU0g0KQorICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBz
ZWxlY3RTY3JhdGNoR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworI2VsaWYgQ1BVKFg4NikKKyAgICAgICAgcG9r
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7CisgICAgICAgIHBva2UoVHJ1c3RlZElt
bVB0cihhcmd1bWVudCksIDEpOworICAgICAgICBwb2tlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwg
Mik7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gR1BSSW5mbzo6cmVnVDA7CisjZWxzZQorI2Vy
cm9yICJERkcgSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCisjZW5kaWYKKyAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9u
KSksIHNjcmF0Y2gpOworICAgICAgICBjYWxsKHNjcmF0Y2gpOworCisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSksIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgR1BSSW5mbzo6cmVnVDAp
OworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyICsg
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICAgICAgbG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSk7
CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51
bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAg
bG9hZDY0KGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworI2Vsc2UKKyAgICAg
ICAgICAgIGxvYWQzMihidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyNlbmRp
ZgorICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhlc2UgbWV0aG9kcyBKSVQgZ2VuZXJhdGUg
ZHluYW1pYywgZGVidWctb25seSBjaGVja3MgLSBha2luIHRvIEFTU0VSVHMuCisjaWYgREZHX0VO
QUJMRShKSVRfQVNTRVJUKQorICAgIHZvaWQgaml0QXNzZXJ0SXNJbnQzMihHUFJSZWcpOworICAg
IHZvaWQgaml0QXNzZXJ0SXNKU0ludDMyKEdQUlJlZyk7CisgICAgdm9pZCBqaXRBc3NlcnRJc0pT
TnVtYmVyKEdQUlJlZyk7CisgICAgdm9pZCBqaXRBc3NlcnRJc0pTRG91YmxlKEdQUlJlZyk7Cisg
ICAgdm9pZCBqaXRBc3NlcnRJc0NlbGwoR1BSUmVnKTsKKyAgICB2b2lkIGppdEFzc2VydEhhc1Zh
bGlkQ2FsbEZyYW1lKCk7CisjZWxzZQorICAgIHZvaWQgaml0QXNzZXJ0SXNJbnQzMihHUFJSZWcp
IHsgfQorICAgIHZvaWQgaml0QXNzZXJ0SXNKU0ludDMyKEdQUlJlZykgeyB9CisgICAgdm9pZCBq
aXRBc3NlcnRJc0pTTnVtYmVyKEdQUlJlZykgeyB9CisgICAgdm9pZCBqaXRBc3NlcnRJc0pTRG91
YmxlKEdQUlJlZykgeyB9CisgICAgdm9pZCBqaXRBc3NlcnRJc0NlbGwoR1BSUmVnKSB7IH0KKyAg
ICB2b2lkIGppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCkgeyB9CisjZW5kaWYKKworICAgIC8v
IFRoZXNlIG1ldGhvZHMgY29udmVydCBiZXR3ZWVuIGRvdWJsZXMsIGFuZCBkb3VibGVzIGJveGVk
IGFuZCBKU1ZhbHVlcy4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQUlJlZyBib3hEb3VibGUo
RlBSUmVnIGZwciwgR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGVUbzY0KGZw
ciwgZ3ByKTsKKyAgICAgICAgc3ViNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBn
cHIpOworICAgICAgICBqaXRBc3NlcnRJc0pTRG91YmxlKGdwcik7CisgICAgICAgIHJldHVybiBn
cHI7CisgICAgfQorICAgIEZQUlJlZyB1bmJveERvdWJsZShHUFJSZWcgZ3ByLCBGUFJSZWcgZnBy
KQorICAgIHsKKyAgICAgICAgaml0QXNzZXJ0SXNKU0RvdWJsZShncHIpOworICAgICAgICBhZGQ2
NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdwcik7CisgICAgICAgIG1vdmU2NFRv
RG91YmxlKGdwciwgZnByKTsKKyAgICAgICAgcmV0dXJuIGZwcjsKKyAgICB9CisgICAgCisgICAg
dm9pZCBib3hJbnQ1MihHUFJSZWcgc291cmNlLCBHUFJSZWcgdGFyZ2V0LCBHUFJSZWcgc2NyYXRj
aCwgRlBSUmVnIGZwU2NyYXRjaCkKKyAgICB7CisgICAgICAgIC8vIElzIGl0IGFuIGludDMyPwor
ICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihzb3VyY2UsIHNjcmF0Y2gpOworICAgICAgICBKdW1w
IGlzSW50MzIgPSBicmFuY2g2NChFcXVhbCwgc291cmNlLCBzY3JhdGNoKTsKKyAgICAgICAgCisg
ICAgICAgIC8vIE5vcGUsIGl0J3Mgbm90LCBidXQgcmVnVDAgY29udGFpbnMgdGhlIGludDY0IHZh
bHVlLgorICAgICAgICBjb252ZXJ0SW50NjRUb0RvdWJsZShzb3VyY2UsIGZwU2NyYXRjaCk7Cisg
ICAgICAgIGJveERvdWJsZShmcFNjcmF0Y2gsIHRhcmdldCk7CisgICAgICAgIEp1bXAgZG9uZSA9
IGp1bXAoKTsKKyAgICAgICAgCisgICAgICAgIGlzSW50MzIubGluayh0aGlzKTsKKyAgICAgICAg
emVyb0V4dGVuZDMyVG9QdHIoc291cmNlLCB0YXJnZXQpOworICAgICAgICBvcjY0KEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgdGFyZ2V0KTsKKyAgICAgICAgCisgICAgICAgIGRvbmUu
bGluayh0aGlzKTsKKyAgICB9CisjZW5kaWYKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
dm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgR1BSUmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRH
UFIpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlVG9JbnRzKGZwciwgcGF5bG9hZEdQUiwgdGFn
R1BSKTsKKyAgICB9CisgICAgdm9pZCB1bmJveERvdWJsZShHUFJSZWcgdGFnR1BSLCBHUFJSZWcg
cGF5bG9hZEdQUiwgRlBSUmVnIGZwciwgRlBSUmVnIHNjcmF0Y2hGUFIpCisgICAgeworICAgICAg
ICBtb3ZlSW50c1RvRG91YmxlKHBheWxvYWRHUFIsIHRhZ0dQUiwgZnByLCBzY3JhdGNoRlBSKTsK
KyAgICB9CisjZW5kaWYKKyAgICAKKyAgICBlbnVtIEV4Y2VwdGlvbkNoZWNrS2luZCB7IE5vcm1h
bEV4Y2VwdGlvbkNoZWNrLCBJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrIH07CisgICAgSnVtcCBlbWl0
RXhjZXB0aW9uQ2hlY2soRXhjZXB0aW9uQ2hlY2tLaW5kIGtpbmQgPSBOb3JtYWxFeGNlcHRpb25D
aGVjaykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gYnJhbmNoVGVzdDY0
KGtpbmQgPT0gTm9ybWFsRXhjZXB0aW9uQ2hlY2sgPyBOb25aZXJvIDogWmVybywgQWJzb2x1dGVB
ZGRyZXNzKHZtKCktPmFkZHJlc3NPZkV4Y2VwdGlvbigpKSk7CisjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgIHJldHVybiBicmFuY2gzMihraW5kID09IE5vcm1hbEV4Y2VwdGlvbkNoZWNrID8g
Tm90RXF1YWwgOiBFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KHZtKCktPmFkZHJlc3NPZkV4Y2VwdGlvbigpKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1
LmFzQml0cy50YWcpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyNl
bmRpZgorICAgIH0KKworI2lmIEVOQUJMRShTQU1QTElOR19DT1VOVEVSUykKKyAgICBzdGF0aWMg
dm9pZCBlbWl0Q291bnQoTWFjcm9Bc3NlbWJsZXImIGppdCwgQWJzdHJhY3RTYW1wbGluZ0NvdW50
ZXImIGNvdW50ZXIsIGludDMyX3QgaW5jcmVtZW50ID0gMSkKKyAgICB7CisgICAgICAgIGppdC5h
ZGQ2NChUcnVzdGVkSW1tMzIoaW5jcmVtZW50KSwgQWJzb2x1dGVBZGRyZXNzKGNvdW50ZXIuYWRk
cmVzc09mQ291bnRlcigpKSk7CisgICAgfQorICAgIHZvaWQgZW1pdENvdW50KEFic3RyYWN0U2Ft
cGxpbmdDb3VudGVyJiBjb3VudGVyLCBpbnQzMl90IGluY3JlbWVudCA9IDEpCisgICAgeworICAg
ICAgICBhZGQ2NChUcnVzdGVkSW1tMzIoaW5jcmVtZW50KSwgQWJzb2x1dGVBZGRyZXNzKGNvdW50
ZXIuYWRkcmVzc09mQ291bnRlcigpKSk7CisgICAgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoU0FN
UExJTkdfRkxBR1MpCisgICAgdm9pZCBzZXRTYW1wbGluZ0ZsYWcoaW50MzJfdCk7CisgICAgdm9p
ZCBjbGVhclNhbXBsaW5nRmxhZyhpbnQzMl90IGZsYWcpOworI2VuZGlmCisKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBjb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwor
ICAgIH0KKyAgICAKKyAgICBib29sIHN0cmljdE1vZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAg
ICAgICAgIHJldHVybiBjb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7CisgICAgICAgIHJldHVy
biBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUt
PmV4ZWN1dGFibGUuZ2V0KCkpLT5pc1N0cmljdE1vZGUoKTsKKyAgICB9CisgICAgCisgICAgRXhl
Y3V0YWJsZUJhc2UqIGV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbik7
CisgICAgCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0Zvcihjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2Nr
Rm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxv
Y2soKSk7CisgICAgfQorICAgIAorICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3Io
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCisgICAgeworICAgICAgICBpZiAoIWlu
bGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9jaygpOwor
ICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5l
Q2FsbEZyYW1lKTsKKyAgICB9CisgICAgCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
aygpCisgICAgeworICAgICAgICByZXR1cm4gbV9iYXNlbGluZUNvZGVCbG9jazsKKyAgICB9Cisg
ICAgCisgICAgaW50IGFyZ3VtZW50c1JlZ2lzdGVyRm9yKElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCisgICAgICAg
ICAgICByZXR1cm4gY29kZUJsb2NrKCktPmFyZ3VtZW50c1JlZ2lzdGVyKCk7CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoCisgICAg
ICAgICAgICBpbmxpbmVDYWxsRnJhbWUpLT5hcmd1bWVudHNSZWdpc3RlcigpICsgaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldDsKKyAgICB9CisgICAgCisgICAgaW50IGFyZ3VtZW50c1JlZ2lz
dGVyRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCisgICAgeworICAgICAgICByZXR1
cm4gYXJndW1lbnRzUmVnaXN0ZXJGb3IoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOworICAg
IH0KKyAgICAKKyAgICBTaGFyZWRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGVGb3IoY29uc3QgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICB7CisgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVC
bG9ja0Zvcihjb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKTsKKyAgICB9CisKKyAgICBpbnQgb2Zm
c2V0T2ZMb2NhbHMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICB7CisgICAgICAg
IGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAq
IHNpemVvZihSZWdpc3Rlcik7CisgICAgfQorCisgICAgaW50IG9mZnNldE9mQXJndW1lbnRzSW5j
bHVkaW5nVGhpcyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAg
aWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiBDYWxs
RnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSAqIHNpemVvZihSZWdpc3Rlcik7
CisgICAgICAgIHJldHVybiAoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkpICogc2l6ZW9mKFJl
Z2lzdGVyKTsKKyAgICB9CisKKyAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYg
ZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKik7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgVk0q
IG1fdm07CisgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBDb2RlQmxvY2sqIG1fYmFz
ZWxpbmVDb2RlQmxvY2s7CisKKyAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29k
ZUFuZE1hY2hpbmVPZmZzZXQ+ID4gbV9kZWNvZGVkQ29kZU1hcHM7Cit9OworCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8v
IERGR0Fzc2VtYmx5SGVscGVyc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMjQgKzIzLDIz
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIERGR0Fzc2VtYmx5SGVscGVyc19o
Ci0jZGVmaW5lIERGR0Fzc2VtYmx5SGVscGVyc19oCisjaWZuZGVmIEFzc2VtYmx5SGVscGVyc19o
CisjZGVmaW5lIEFzc2VtYmx5SGVscGVyc19oCiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
IAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKLSNpbmNsdWRlICJERkdGUFJJbmZvLmgiCi0jaW5jbHVkZSAiREZHR1BSSW5mby5o
IgotI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKLSNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVk
ZSAiRlBSSW5mby5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJKSVRDb2RlLmgi
CiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CituYW1lc3BhY2UgSlNDIHsKIAotdHlwZWRlZiB2b2lk
ICgqVl9ERkdEZWJ1Z09wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKik7Cit0
eXBlZGVmIHZvaWQgKCpWX0RlYnVnT3BlcmF0aW9uX0VQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZv
aWQqKTsKIAogY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsK
IHB1YmxpYzoKQEAgLTUyLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9jb2RlQmxv
Y2spIHsKICAgICAgICAgICAgIEFTU0VSVChtX2Jhc2VsaW5lQ29kZUJsb2NrKTsKICAgICAgICAg
ICAgIEFTU0VSVCghbV9iYXNlbGluZUNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7Ci0gICAgICAg
ICAgICBBU1NFUlQobV9iYXNlbGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJh
c2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSht
X2Jhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKICAgICAgICAgfQogICAgIH0KICAgICAK
QEAgLTIwNSw3ICsyMDQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gQWRkIGEgZGVidWcg
Y2FsbC4gVGhpcyBjYWxsIGhhcyBubyBlZmZlY3Qgb24gSklUIGNvZGUgZXhlY3V0aW9uIHN0YXRl
LgotICAgIHZvaWQgZGVidWdDYWxsKFZfREZHRGVidWdPcGVyYXRpb25fRVBQIGZ1bmN0aW9uLCB2
b2lkKiBhcmd1bWVudCkKKyAgICB2b2lkIGRlYnVnQ2FsbChWX0RlYnVnT3BlcmF0aW9uX0VQUCBm
dW5jdGlvbiwgdm9pZCogYXJndW1lbnQpCiAgICAgewogICAgICAgICBzaXplX3Qgc2NyYXRjaFNp
emUgPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
ICsgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpOwogICAgICAgICBTY3JhdGNoQnVmZmVyKiBz
Y3JhdGNoQnVmZmVyID0gbV92bS0+c2NyYXRjaEJ1ZmZlckZvclNpemUoc2NyYXRjaFNpemUpOwpA
QCAtMjM5LDcgKzIzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgcG9rZShUcnVzdGVkSW1tUHRyKGJ1
ZmZlciksIDIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IEdQUkluZm86OnJlZ1QwOwogI2Vs
c2UKLSNlcnJvciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2Vy
cm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgogICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSwg
c2NyYXRjaCk7CiAgICAgICAgIGNhbGwoc2NyYXRjaCk7CkBAIC0yNjEsNyArMjYwLDcgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgSklUIGdlbmVyYXRlIGR5bmFtaWMs
IGRlYnVnLW9ubHkgY2hlY2tzIC0gYWtpbiB0byBBU1NFUlRzLgotI2lmIERGR19FTkFCTEUoSklU
X0FTU0VSVCkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdm9pZCBqaXRBc3NlcnRJc0ludDMy
KEdQUlJlZyk7CiAgICAgdm9pZCBqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnKTsKICAgICB2b2lk
IGppdEFzc2VydElzSlNOdW1iZXIoR1BSUmVnKTsKQEAgLTQyNCw5ICs0MjMsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zm
c2V0PiA+IG1fZGVjb2RlZENvZGVNYXBzOwogfTsKIAotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RworfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQogCi0jZW5kaWYgLy8gREZHQXNzZW1ibHlIZWxwZXJzX2gKKyNlbmRp
ZiAvLyBBc3NlbWJseUhlbHBlcnNfaAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDE1NjA3NSkJKGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaDoxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA5OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERG
R0NDYWxsSGVscGVyc19oCisjZGVmaW5lIERGR0NDYWxsSGVscGVyc19oCisKKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHQXNz
ZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiREZHR1BSSW5mby5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJs
eUhlbHBlcnMgeworcHVibGljOgorICAgIENDYWxsSGVscGVycyhWTSogdm0sIENvZGVCbG9jayog
Y29kZUJsb2NrID0gMCkKKyAgICAgICAgOiBBc3NlbWJseUhlbHBlcnModm0sIGNvZGVCbG9jaykK
KyAgICB7CisgICAgfQorCisgICAgLy8gVGhlc2UgbWV0aG9kcyB1c2VkIHRvIHNvcnQgYXJndW1l
bnRzIGludG8gdGhlIGNvcnJlY3QgcmVnaXN0ZXJzLgorICAgIC8vIE9uIFg4NiB3ZSB1c2UgY2Rl
Y2wgY2FsbGluZyBjb252ZW50aW9ucywgd2hpY2ggcGFzcyBhbGwgYXJndW1lbnRzIG9uIHRoZQor
ICAgIC8vIHN0YWNrLiBPbiBvdGhlciBhcmNoaXRlY3R1cmVzIHdlIG1heSBuZWVkIHRvIHNvcnQg
dmFsdWVzIGludG8gdGhlCisgICAgLy8gY29ycmVjdCByZWdpc3RlcnMuCisjaWYgIU5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICB1bnNpZ25lZCBtX2NhbGxBcmd1bWVudE9mZnNldDsK
KyAgICB2b2lkIHJlc2V0Q2FsbEFyZ3VtZW50cygpIHsgbV9jYWxsQXJndW1lbnRPZmZzZXQgPSAw
OyB9CisKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2luZyBpbnRlcm5hbGx5IHRvIGltcGxl
bWVudCB0aGUgY2FsbE9wZXJhdGlvbiBtZXRob2RzLgorICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50
KEdQUlJlZyB2YWx1ZSkKKyAgICB7CisgICAgICAgIHBva2UodmFsdWUsIG1fY2FsbEFyZ3VtZW50
T2Zmc2V0KyspOworICAgIH0KKyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tMzIg
aW1tKQorICAgIHsKKyAgICAgICAgcG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwor
ICAgIH0KKyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tUHRyIHBvaW50ZXIpCisg
ICAgeworICAgICAgICBwb2tlKHBvaW50ZXIsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOworICAg
IH0KKyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChGUFJSZWcgdmFsdWUpCisgICAgeworICAgICAg
ICBzdG9yZURvdWJsZSh2YWx1ZSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgbV9jYWxs
QXJndW1lbnRPZmZzZXQgKiBzaXplb2Yodm9pZCopKSk7CisgICAgICAgIG1fY2FsbEFyZ3VtZW50
T2Zmc2V0ICs9IHNpemVvZihkb3VibGUpIC8gc2l6ZW9mKHZvaWQqKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisgICAgeworICAg
ICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcg
YXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQ
UlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAg
cmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcxKQorICAgIHsKKyAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUo
KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKKyAg
ICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzEpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKKyAg
ICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIg
YXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Mik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAg
ICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRy
dXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAg
ICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Cisg
ICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3Vt
ZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0
Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFk
ZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAg
eworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1Q
dHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJn
dW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAg
ICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBh
cmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1t
MzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcmVzZXRD
YWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQp
CisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCisg
ICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAg
ICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJ
bW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
NCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVz
dGVkSW1tMzIgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBh
cmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJS
ZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMo
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzQpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Mik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMyk7CisgICAgfQorI2VuZGlmIC8vICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCisg
ICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRp
b24gdGhhdCBwcm92aWRlcyBmb3IKKyAgICAvLyBhdCBsZWFzdCA0IGFyZ3VtZW50IHJlZ2lzdGVy
cywgZS5nLiBYODZfNjQsIEFSTXY3LgorI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMg
Pj0gNAorICAgIHRlbXBsYXRlPEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCPgorICAgIHZvaWQg
c2V0dXBUd29TdHViQXJncyhHUFJSZWcgc3JjQSwgR1BSUmVnIHNyY0IpCisgICAgeworICAgICAg
ICAvLyBBc3N1bWluZyB0aGF0IHNyY0EgIT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcg
c3RhdGVzIHRoZSByZWdpc3RlcnMgbWF5IGJlIGluOgorICAgICAgICAvLyAoMSkgYm90aCBhcmUg
YWxyZWFkeSBpbiBhcmcgcmVncywgdGhlIHJpZ2h0IHdheSBhcm91bmQuCisgICAgICAgIC8vICgy
KSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4KKyAg
ICAgICAgLy8gKDMpIG5laXRoZXIgYXJlIGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgorICAg
ICAgICAvLyAoNCkgc3JjQSBpbiBpbiBpdHMgY29ycmVjdCByZWcuCisgICAgICAgIC8vICg1KSBz
cmNBIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgorICAgICAgICAvLyAoNikgc3JjQiBpbiBpbiBp
dHMgY29ycmVjdCByZWcuCisgICAgICAgIC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJlY3Qg
cmVnLgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0byBz
aW1wbHkgZW1pdCB0d28gbW92ZXMsIHRvIHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBpbgor
ICAgICAgICAvLyBwbGFjZSAodGhlIE1hY3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRhbnQg
bW92ZXMpLiBUaGlzIGFwcG9yYWNoIHdpbGwgYmUgc2FmZSBpbgorICAgICAgICAvLyBjYXNlcyAx
LCAzLCA0LCA1LCA2LCBhbmQgaW4gY2FzZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBwcm9i
bGVtIGNhc2VzIGFyZSAyCisgICAgICAgIC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0
IG1vdmUgc3JjQiBmaXJzdCwgdG8gYXZvaWQgdHJhbXBsaW5nLikKKworICAgICAgICBpZiAoc3Jj
QiAhPSBkZXN0QSkgeworICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdv
IHNpbXBsZSBtb3Zlcy4KKyAgICAgICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOworICAgICAgICAg
ICAgbW92ZShzcmNCLCBkZXN0Qik7CisgICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0Qikg
eworICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3Jj
QiBpbiBwbGFjZSBmaXJzdC4KKyAgICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOworICAgICAg
ICAgICAgbW92ZShzcmNBLCBkZXN0QSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3dh
cChkZXN0QSwgZGVzdEIpOworICAgIH0KKyNpZiBDUFUoWDg2XzY0KQorICAgIHRlbXBsYXRlPEZQ
UlJlZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgorICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhGUFJS
ZWcgc3JjQSwgRlBSUmVnIHNyY0IpCisgICAgeworICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNy
Y0EgIT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMg
bWF5IGJlIGluOgorICAgICAgICAvLyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywg
dGhlIHJpZ2h0IHdheSBhcm91bmQuCisgICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGlu
IGFyZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4KKyAgICAgICAgLy8gKDMpIG5laXRoZXIg
YXJlIGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgorICAgICAgICAvLyAoNCkgc3JjQSBpbiBp
biBpdHMgY29ycmVjdCByZWcuCisgICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJl
Y3QgcmVnLgorICAgICAgICAvLyAoNikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCisgICAg
ICAgIC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgorICAgICAgICAvLworICAg
ICAgICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMs
IHRvIHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBpbgorICAgICAgICAvLyBwbGFjZSAodGhl
IE1hY3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNo
IHdpbGwgYmUgc2FmZSBpbgorICAgICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4g
Y2FzZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCisgICAg
ICAgIC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8g
YXZvaWQgdHJhbXBsaW5nLikKKworICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgeworICAgICAg
ICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KKyAgICAg
ICAgICAgIG1vdmVEb3VibGUoc3JjQSwgZGVzdEEpOworICAgICAgICAgICAgbW92ZURvdWJsZShz
cmNCLCBkZXN0Qik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGlmIChzcmNBICE9IGRlc3RCKSB7CisgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5v
bi1zd2FwIGNhc2UgLSBqdXN0IHB1dCBzcmNCIGluIHBsYWNlIGZpcnN0LgorICAgICAgICAgICAg
bW92ZURvdWJsZShzcmNCLCBkZXN0Qik7CisgICAgICAgICAgICBtb3ZlRG91YmxlKHNyY0EsIGRl
c3RBKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChz
cmNCID09IGRlc3RBICYmIHNyY0EgPT0gZGVzdEIpOworICAgICAgICAvLyBOZWVkIHRvIHN3YXA7
IHBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCisgICAgICAgIEZQUlJlZyB0ZW1wOworICAgICAg
ICBpZiAoZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIzICYmIGRlc3RBICE9IEZQUkluZm86
OmFyZ3VtZW50RlBSMykKKyAgICAgICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjM7
CisgICAgICAgIGVsc2UgaWYgKGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMiAmJiBkZXN0
QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjIpCisgICAgICAgICAgICB0ZW1wID0gRlBSSW5mbzo6
YXJndW1lbnRGUFIyOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChkZXN0QSAh
PSBGUFJJbmZvOjphcmd1bWVudEZQUjEgJiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIx
KTsKKyAgICAgICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjE7CisgICAgICAgIH0K
KyAgICAgICAgbW92ZURvdWJsZShkZXN0QSwgdGVtcCk7CisgICAgICAgIG1vdmVEb3VibGUoZGVz
dEIsIGRlc3RBKTsKKyAgICAgICAgbW92ZURvdWJsZSh0ZW1wLCBkZXN0Qik7CisgICAgfQorI2Vu
ZGlmCisgICAgdm9pZCBzZXR1cFN0dWJBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMj4oYXJnMSwgYXJnMik7CisgICAgfQorICAgIHZvaWQgc2V0
dXBTdHViQXJndW1lbnRzKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisg
ICAgeworICAgICAgICAvLyBJZiBuZWl0aGVyIG9mIGFyZzIvYXJnMyBhcmUgaW4gb3VyIHdheSwg
dGhlbiB3ZSBjYW4gbW92ZSBhcmcxIGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2Fu
IHVzZSBzZXR1cFR3b1N0dWJBcmdzIHRvIGZpeCBhcmcyL2FyZzMuCisgICAgICAgIGlmIChhcmcy
ICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BS
MSkgeworICAgICAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAg
ICAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMz4oYXJnMiwgYXJnMyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICAvLyBJZiBuZWl0aGVyIG9mIGFyZzEvYXJnMyBhcmUgaW4gb3VyIHdheSwg
dGhlbiB3ZSBjYW4gbW92ZSBhcmcyIGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2Fu
IHVzZSBzZXR1cFR3b1N0dWJBcmdzIHRvIGZpeCBhcmcxL2FyZzMuCisgICAgICAgIGlmIChhcmcx
ICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BS
MikgeworICAgICAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAg
ICAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJnMyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICAvLyBJZiBuZWl0aGVyIG9mIGFyZzEvYXJnMiBhcmUgaW4gb3VyIHdheSwg
dGhlbiB3ZSBjYW4gbW92ZSBhcmczIGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2Fu
IHVzZSBzZXR1cFR3b1N0dWJBcmdzIHRvIGZpeCBhcmcxL2FyZzIuCisgICAgICAgIGlmIChhcmcx
ICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMyAmJiBhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50R1BS
MykgeworICAgICAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAg
ICAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMj4oYXJnMSwgYXJnMik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8g
bW92ZSBhbnkgb2YgYXJnMS9hcmcyL2FyZzMuCisgICAgICAgIC8vIFNpbmNlIGFsbCB0aHJlZSBh
cmUgYmxvY2tlZCwgdGhlbiBhbGwgdGhyZWUgbXVzdCBhbHJlYWR5IGJlIGluIHRoZSBhcmd1bWVu
dCByZWdpc3Rlci4KKyAgICAgICAgLy8gQnV0IGFyZSB0aGV5IGluIHRoZSByaWdodCBvbmVzPwor
CisgICAgICAgIC8vIEZpcnN0LCBlbnN1cmUgYXJnMSBpcyBpbiBwbGFjZS4KKyAgICAgICAgaWYg
KGFyZzEgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKSB7CisgICAgICAgICAgICBzd2FwKGFyZzEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisKKyAgICAgICAgICAgIC8vIElmIGFyZzEgd2Fzbid0
IGluIGFyZ3VtZW50R1BSMSwgb25lIG9mIGFyZzIvYXJnMyBtdXN0IGJlLgorICAgICAgICAgICAg
QVNTRVJUKGFyZzIgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxIHx8IGFyZzMgPT0gR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICAgICAgICAgIC8vIElmIGFyZzIgd2FzIGluIGFyZ3VtZW50R1BS
MSBpdCBubyBsb25nZXIgaXMgKGR1ZSB0byB0aGUgc3dhcCkuCisgICAgICAgICAgICAvLyBPdGhl
cndpc2UgYXJnMyBtdXN0IGhhdmUgYmVlbi4gTWFyayBoaW0gYXMgbW92ZWQuCisgICAgICAgICAg
ICBpZiAoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEpCisgICAgICAgICAgICAgICAgYXJn
MiA9IGFyZzE7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXJnMyA9IGFyZzE7
CisgICAgICAgIH0KKworICAgICAgICAvLyBFaXRoZXIgYXJnMiAmIGFyZzMgbmVlZCBzd2FwcGlu
Zywgb3Igd2UncmUgYWxsIGRvbmUuCisgICAgICAgIEFTU0VSVCgoYXJnMiA9PSBHUFJJbmZvOjph
cmd1bWVudEdQUjIgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpCisgICAgICAgICAg
ICB8fCAoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMgfHwgYXJnMyA9PSBHUFJJbmZvOjph
cmd1bWVudEdQUjIpKTsKKworICAgICAgICBpZiAoYXJnMiAhPSBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpCisgICAgICAgICAgICBzd2FwKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIzKTsKKyAgICB9CisKKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgUE9LRV9BUkdVTUVO
VF9PRkZTRVQgNAorI2Vsc2UKKyNkZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgMAorI2VuZGlm
CisKKyNpZiBDUFUoWDg2XzY0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
cyhGUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29T
dHViQXJnczxGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMT4oYXJn
MSwgYXJnMik7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAg
ICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBtb3Zl
KGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcz
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJn
MSwgYXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorI2VsaWYgQ1BVKEFSTSkKKyNpZiBDUFUoQVJNX0hB
UkRGUCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEp
CisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBh
cmcxLCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFy
Z3VtZW50RlBSMCkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjEpOworICAgICAgICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIx
KSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7
CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCisgICAgICAg
ICAgICBtb3ZlRG91YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMCwgQVJNUmVnaXN0ZXJzOjpkMik7
CisgICAgICAgICAgICBtb3ZlRG91YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoQVJNUmVnaXN0ZXJzOjpkMiwg
RlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAg
ICAgICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBz
ZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIs
IEZQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJn
MiwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVz
dGVkSW1tMzIsIEZQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmc0LCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwg
YXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisjZWxzZQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZt
b3YoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJn
MSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKKyAgICAgICAgYXNz
ZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MywgYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBt
b3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIGFzc2VtYmxlcigpLnZt
b3YoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIGFyZzEpOwor
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKKyAgICB7
CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAg
ICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFy
Z0dQUjAsIGFyZzMpOworICAgICAgICBwb2tlKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbTMyIGFyZzEsIEZQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAg
IHBva2UoYXJnMywgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBtb3ZlKGFyZzEsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6
YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzIpOworICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgRlBSUmVnIGFyZzQp
CisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgYXNz
ZW1ibGVyKCkudm1vdihHUFJJbmZvOjpub25BcmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIxLCBh
cmc0KTsKKyAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5UX09G
RlNFVCk7CisgICAgICAgIHBva2UoR1BSSW5mbzo6bm9uQXJnR1BSMSwgUE9LRV9BUkdVTUVOVF9P
RkZTRVQgKyAxKTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKEFSTV9IQVJERlApCisjZWxpZiBDUFUo
TUlQUykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEp
CisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBh
cmcxLCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFy
Z3VtZW50RlBSMCkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjEpOworICAgICAgICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIx
KSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7
CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCisgICAgICAg
ICAgICBzd2FwRG91YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRG
UFIxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAg
ICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMywgYXJnMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHBva2UoYXJnMiwgNCk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0
dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBwb2tlKGFyZzMs
IDQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEZQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAg
ICB7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcyLCBhcmczKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEZQUlJlZyBhcmc0
KQorICAgIHsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzQpOworICAgIH0KKyNlbGlmIENQVShTSDQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcx
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAg
ICBpZiAoYXJnMiAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjApIHsKKyAgICAgICAgICAgIG1vdmVE
b3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3Vi
bGUoYXJnMiwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmcx
ICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMSkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcy
LCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHN3YXBE
b3VibGUoRlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
RlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcx
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJl
ZyBhcmczKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgfQorI2Vsc2UKKyNlcnJvciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxh
dGZvcm0uIgorI2VuZGlmCisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMo
R1BSUmVnIGFyZzEpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjE+KGFyZzEsIGFyZzIp
OworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1
c3RlZEltbVB0ciBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c0V4ZWNTdGF0ZSgpCisgICAgeworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEpCisgICAgeworICAg
ICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSkKKyAgICB7CisgICAgICAg
IG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcx
LCBhcmcyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCisg
ICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAg
IG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisjaWYg
Q1BVKFg4Nl82NCkgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTY0IGFyZzIpCisgICAgeworICAgICAg
ICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisgICAgCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tNjQgYXJn
MSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMik7IC8vIE1vdmUgdGhpcyBmaXJzdCwgc28gc2V0dGluZyBhcmcxIGRvZXMgbm90IHRy
YW1wbGUhCisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAg
ICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICB9CisjZW5kaWYKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7CisgICAg
ICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyAgICAKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBJ
bW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1v
dmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBz
ZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJS
ZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEK
KyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMiwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFy
ZzEgZG9lcyBub3QgdHJhbXBsZSEKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcy
KQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAg
ICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUo
YXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVk
SW1tMzIgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAg
ICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgbW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCisgICAgeworICAgICAg
ICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoYXJnMywgR1BS
SW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1t
MzIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQ
UkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsK
KyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAg
eworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1v
dmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1Q
dHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBh
cmczKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwor
ICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUo
YXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHVi
QXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMyk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFy
ZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1
bWVudEdQUjMpOworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Cisg
ICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsK
KyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3Zl
KGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcg
YXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCisgICAgeworICAgICAgICBtb3ZlKGFyZzIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7
CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjM+KGFyZzIsIGFyZzMpOworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBh
cmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5m
bzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzIsIGFyZzMpOworICAg
ICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQor
ICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAg
ICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoYXJnMywg
R1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBU
cnVzdGVkSW1tMzIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCisgICAgeworICAgICAgICBtb3Zl
KGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIH0KKworI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJ
U1RFUlMgPj0gNAorICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2Fs
bGluZyBjb252ZW50aW9uIHRoYXQgcHJvdmlkZXMgZm9yCisgICAgLy8gZXhhY3RseSA0IGFyZ3Vt
ZW50IHJlZ2lzdGVycywgZS5nLiBBUk12Ny4KKyNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTID09IDQKKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQp
CisgICAgeworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCisg
ICAgeworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVn
IGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0
KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcg
YXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1F
TlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVk
SW1tMzIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVz
dGVkSW1tMzIgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFy
ZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9B
UkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIs
IEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgUE9L
RV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQsIFBPS0Vf
QVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJn
MywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCBQ
T0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1F
TlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJn
MywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRf
T0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
VHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VN
RU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bTMyIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwg
UE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIs
IFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJn
NCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRy
dXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAg
ICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJn
NCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRy
dXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCisgICAgewor
ICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBv
a2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbVB0ciBhcmc1KQor
ICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAg
ICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJ
bW0zMiBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNF
VCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BS
UmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FS
R1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BS
UmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FS
R1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMpOworICAgIH0KKworI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0g
NAorCisjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA1CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3Rl
ZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAg
ICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFI0PihhcmcxLCBhcmc0KTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIpOworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Cisg
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgfQorI2VuZGlmCisKKyAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVz
dEEsIEdQUlJlZyBkZXN0QikKKyAgICB7CisgICAgICAgIEdQUlJlZyBzcmNBID0gR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFI7CisgICAgICAgIEdQUlJlZyBzcmNCID0gR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIyOworCisgICAgICAgIGlmIChkZXN0QSA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgbW92ZShzcmNCLCBkZXN0Qik7CisgICAgICAgIGVsc2UgaWYgKGRlc3RCID09IEludmFsaWRH
UFJSZWcpCisgICAgICAgICAgICBtb3ZlKHNyY0EsIGRlc3RBKTsKKyAgICAgICAgZWxzZSBpZiAo
c3JjQiAhPSBkZXN0QSkgeworICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0g
dHdvIHNpbXBsZSBtb3Zlcy4KKyAgICAgICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOworICAgICAg
ICAgICAgbW92ZShzcmNCLCBkZXN0Qik7CisgICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0
QikgeworICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQg
c3JjQiBpbiBwbGFjZSBmaXJzdC4KKyAgICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOworICAg
ICAgICAgICAgbW92ZShzcmNBLCBkZXN0QSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
c3dhcChkZXN0QSwgZGVzdEIpOworICAgIH0KK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHQ0NhbGxIZWxw
ZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3
b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNyArMjMsMTcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKLSNpZm5kZWYgREZHQ0NhbGxIZWxwZXJzX2gKLSNkZWZpbmUgREZHQ0NhbGxIZWxwZXJzX2gK
KyNpZm5kZWYgQ0NhbGxIZWxwZXJzX2gKKyNkZWZpbmUgQ0NhbGxIZWxwZXJzX2gKIAogI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKEpJ
VCkKIAotI2luY2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVycy5oIgotI2luY2x1ZGUgIkRGR0dQUklu
Zm8uaCIKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJHUFJJbmZvLmgi
CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKIHB1YmxpYzoKQEAg
LTY5OSw3ICs2OTksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgfQogI2Vsc2UKLSNlcnJvciAi
REZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2Vycm9yICJKSVQgbm90
IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgogCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxKQpAQCAtMTA5MCw5ICsxMDkwLDkgQEAg
cHVibGljOgogICAgIH0KIH07CiAKLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKK30gLy8gbmFt
ZXNwYWNlIEpTQwogCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKIAotI2VuZGlmIC8vIERGR0NDYWxsSGVscGVyc19oCisjZW5kaWYgLy8gQ0NhbGxIZWxw
ZXJzX2gKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgJKHJldmlzaW9uIDE1
NjA3NSkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmg6MTU2MDc1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBERkdGUFJJbmZvX2gKKyNkZWZpbmUgREZHRlBSSW5mb19oCisKKyNp
ZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR1JlZ2lzdGVyQmFuay5oIgorI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
KwordHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIEZQUlJlZzsKKyNkZWZpbmUg
SW52YWxpZEZQUlJlZyAoKEZQUlJlZyktMSkKKworI2lmIENQVShYODYpIHx8IENQVShYODZfNjQp
CisKK2NsYXNzIEZQUkluZm8geworcHVibGljOgorICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVy
VHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2Owor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gODsK
KworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBm
cFJlZ1QwID0gWDg2UmVnaXN0ZXJzOjp4bW0wOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBS
ZWdUMSA9IFg4NlJlZ2lzdGVyczo6eG1tMTsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVn
VDIgPSBYODZSZWdpc3RlcnM6OnhtbTI7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Qz
ID0gWDg2UmVnaXN0ZXJzOjp4bW0zOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9
IFg4NlJlZ2lzdGVyczo6eG1tNDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUgPSBY
ODZSZWdpc3RlcnM6OnhtbTU7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAvLyBPbmx5IFg4Nl82NCBw
YXNzZXMgYWd1bWVudHMgaW4geG1tIHJlZ2lzdGVycworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcg
YXJndW1lbnRGUFIwID0gWDg2UmVnaXN0ZXJzOjp4bW0wOyAvLyBmcFJlZ1QwCisgICAgc3RhdGlj
IGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBYODZSZWdpc3RlcnM6OnhtbTE7IC8vIGZwUmVn
VDEKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMiA9IFg4NlJlZ2lzdGVyczo6
eG1tMjsgLy8gZnBSZWdUMgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIzID0g
WDg2UmVnaXN0ZXJzOjp4bW0zOyAvLyBmcFJlZ1QzCisjZW5kaWYKKyAgICAvLyBPbiBYODYgdGhl
IHJldHVybiB3aWxsIGFjdHVhbGx5IGJlIG9uIHRoZSB4ODcgc3RhY2ssCisgICAgLy8gc28gd2Un
bGwgY29weSB0byB4bW0wIGZvciBzYW5pdHkhCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZXR1
cm5WYWx1ZUZQUiA9IFg4NlJlZ2lzdGVyczo6eG1tMDsgLy8gZnBSZWdUMAorCisgICAgLy8gRlBS
UmVnIG1hcHBpbmcgaXMgZGlyZWN0LCB0aGUgbWFjaGluZSByZWdzaXRlciBudW1iZXJzIGNhbgor
ICAgIC8vIGJlIHVzZWQgZGlyZWN0bHkgYXMgaW5kaWNlcyBpbnRvIHRoZSBGUFIgUmVnaXN0ZXJC
YW5rLgorICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMCA9PSAwLCB4bW0wX2lz
XzApOworICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMSA9PSAxLCB4bW0xX2lz
XzEpOworICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMiA9PSAyLCB4bW0yX2lz
XzIpOworICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMyA9PSAzLCB4bW0zX2lz
XzMpOworICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tNCA9PSA0LCB4bW00X2lz
XzQpOworICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tNSA9PSA1LCB4bW01X2lz
XzUpOworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7
CisgICAgICAgIHJldHVybiAoRlBSUmVnKWluZGV4OworICAgIH0KKyAgICBzdGF0aWMgdW5zaWdu
ZWQgdG9JbmRleChGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCly
ZWc7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBGUFJSZWcgdG9Bcmd1bWVudFJlZ2lzdGVyKHVu
c2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIChGUFJSZWcpaW5kZXg7CisgICAg
fQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKKyNpZiBDUFUoWDg2XzY0KQor
ICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOworICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJ4bW0w
IiwgInhtbTEiLCAieG1tMiIsICJ4bW0zIiwKKyAgICAgICAgICAgICJ4bW00IiwgInhtbTUiLCAi
eG1tNiIsICJ4bW03IiwKKyAgICAgICAgICAgICJ4bW04IiwgInhtbTkiLCAieG1tMTAiLCAieG1t
MTEiLAorICAgICAgICAgICAgInhtbTEyIiwgInhtbTEzIiwgInhtbTE0IiwgInhtbTE1IgorICAg
ICAgICB9OworI2VsaWYgQ1BVKFg4NikKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4o
cmVnKSA8IDgpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzhd
ID0geworICAgICAgICAgICAgInhtbTAiLCAieG1tMSIsICJ4bW0yIiwgInhtbTMiLAorICAgICAg
ICAgICAgInhtbTQiLCAieG1tNSIsICJ4bW02IiwgInhtbTciCisgICAgICAgIH07CisjZW5kaWYK
KyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK307CisKKyNlbmRp
ZgorCisjaWYgQ1BVKEFSTSkKKworY2xhc3MgRlBSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJP
ZlJlZ2lzdGVycyA9IDY7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIC8vIGQ3
IGlzIHVzZSBieSB0aGUgTWFjcm9Bc3NlbWJsZXIgYXMgZnBUZW1wUmVnaXN0ZXIuCisgICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpkMDsKKyAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDEgPSBBUk1SZWdpc3RlcnM6OmQxOworICAgIHN0YXRpYyBjb25z
dCBGUFJSZWcgZnBSZWdUMiA9IEFSTVJlZ2lzdGVyczo6ZDI7CisgICAgc3RhdGljIGNvbnN0IEZQ
UlJlZyBmcFJlZ1QzID0gQVJNUmVnaXN0ZXJzOjpkMzsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDQgPSBBUk1SZWdpc3RlcnM6OmQ0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBS
ZWdUNSA9IEFSTVJlZ2lzdGVyczo6ZDU7CisgICAgLy8gQVJNdjcgZG9lc24ndCBwYXNzIGFyZ3Vt
ZW50cyBpbiBmcCByZWdpc3RlcnMuIFRoZSByZXR1cm4KKyAgICAvLyB2YWx1ZSBpcyBhbHNvIGFj
dHVhbGx5IGluIGludGVnZXIgcmVnaXN0ZXJzLCBmb3Igbm93CisgICAgLy8gd2UnbGwgcmV0dXJu
IGluIGQwIGZvciBzaW1wbGljaXR5LgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFs
dWVGUFIgPSBBUk1SZWdpc3RlcnM6OmQwOyAvLyBmcFJlZ1QwCisKKyNpZiBDUFUoQVJNX0hBUkRG
UCkKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IEFSTVJlZ2lzdGVyczo6
ZDA7IC8vIGZwUmVnVDAKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9IEFS
TVJlZ2lzdGVyczo6ZDE7IC8vIGZwUmVnVDEKKyNlbmRpZgorCisgICAgLy8gRlBSUmVnIG1hcHBp
bmcgaXMgZGlyZWN0LCB0aGUgbWFjaGluZSByZWdzaXRlciBudW1iZXJzIGNhbgorICAgIC8vIGJl
IHVzZWQgZGlyZWN0bHkgYXMgaW5kaWNlcyBpbnRvIHRoZSBGUFIgUmVnaXN0ZXJCYW5rLgorICAg
IENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lzdGVyczo6ZDAgPT0gMCwgZDBfaXNfMCk7CisgICAgQ09N
UElMRV9BU1NFUlQoQVJNUmVnaXN0ZXJzOjpkMSA9PSAxLCBkMV9pc18xKTsKKyAgICBDT01QSUxF
X0FTU0VSVChBUk1SZWdpc3RlcnM6OmQyID09IDIsIGQyX2lzXzIpOworICAgIENPTVBJTEVfQVNT
RVJUKEFSTVJlZ2lzdGVyczo6ZDMgPT0gMywgZDNfaXNfMyk7CisgICAgQ09NUElMRV9BU1NFUlQo
QVJNUmVnaXN0ZXJzOjpkNCA9PSA0LCBkNF9pc180KTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk1S
ZWdpc3RlcnM6OmQ1ID09IDUsIGQ1X2lzXzUpOworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rl
cih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiAoRlBSUmVnKWluZGV4Owor
ICAgIH0KKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJ
bnZhbGlkRlBSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDMy
KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclszMl0gPSB7Cisg
ICAgICAgICAgICAiZDAiLCAiZDEiLCAiZDIiLCAiZDMiLAorICAgICAgICAgICAgImQ0IiwgImQ1
IiwgImQ2IiwgImQ3IiwKKyAgICAgICAgICAgICJkOCIsICJkOSIsICJkMTAiLCAiZDExIiwKKyAg
ICAgICAgICAgICJkMTIiLCAiZDEzIiwgImQxNCIsICJkMTUiLAorICAgICAgICAgICAgImQxNiIs
ICJkMTciLCAiZDE4IiwgImQxOSIsCisgICAgICAgICAgICAiZDIwIiwgImQyMSIsICJkMjIiLCAi
ZDIzIiwKKyAgICAgICAgICAgICJkMjQiLCAiZDI1IiwgImQyNiIsICJkMjciLAorICAgICAgICAg
ICAgImQyOCIsICJkMjkiLCAiZDMwIiwgImQzMSIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJu
IG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK307CisKKyNlbmRpZgorCisjaWYgQ1BVKE1J
UFMpCisKK2NsYXNzIEZQUkluZm8geworcHVibGljOgorICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lz
dGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2
OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjpmMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZw
UmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjpmNDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVn
VDIgPSBNSVBTUmVnaXN0ZXJzOjpmNjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMg
PSBNSVBTUmVnaXN0ZXJzOjpmODsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDQgPSBN
SVBTUmVnaXN0ZXJzOjpmMTA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gTUlQ
U1JlZ2lzdGVyczo6ZjE4OworCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQ
UiA9IE1JUFNSZWdpc3RlcnM6OmYwOworCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVu
dEZQUjAgPSBNSVBTUmVnaXN0ZXJzOjpmMTI7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1
bWVudEZQUjEgPSBNSVBTUmVnaXN0ZXJzOjpmMTQ7CisKKyAgICBzdGF0aWMgRlBSUmVnIHRvUmVn
aXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geworICAgICAgICAgICAgZnBS
ZWdUMCwgZnBSZWdUMSwgZnBSZWdUMiwgZnBSZWdUMywgZnBSZWdUNCwgZnBSZWdUNSB9OworCisg
ICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0dXJu
IHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0
b0luZGV4KEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRG
UFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMjApOworICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsyMF0gPSB7CisgICAgICAgICAgICAwLCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgMSwgSW52YWxp
ZEluZGV4LCAyLCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICAzLCBJbnZhbGlkSW5kZXgsIDQs
IEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCA1LCBJbnZhbGlkSW5kZXgsCisgICAgICAgIH07CisgICAgICAgIHVuc2lnbmVk
IHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCAh
PSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFT
U0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAzMik7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbMzJdID0geworICAgICAg
ICAgICAgImYwIiwgImYxIiwgImYyIiwgImYzIiwKKyAgICAgICAgICAgICJmNCIsICJmNSIsICJm
NiIsICJmNyIsCisgICAgICAgICAgICAiZjgiLCAiZjkiLCAiZjEwIiwgImYxMSIsCisgICAgICAg
ICAgICAiZjEyIiwgImYxMyIsICJmMTQiLCAiZjE1IgorICAgICAgICAgICAgImYxNiIsICJmMTci
LCAiZjE4IiwgImYxOSIKKyAgICAgICAgICAgICJmMjAiLCAiZjIxIiwgImYyMiIsICJmMjMiCisg
ICAgICAgICAgICAiZjI0IiwgImYyNSIsICJmMjYiLCAiZjI3IgorICAgICAgICAgICAgImYyOCIs
ICJmMjkiLCAiZjMwIiwgImYzMSIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JS
ZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCisjaWYgQ1BVKFNI
NCkKKworY2xhc3MgRlBSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0
ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7
CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcg
ZnBSZWdUMCA9IFNINFJlZ2lzdGVyczo6ZHIwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBS
ZWdUMSA9IFNINFJlZ2lzdGVyczo6ZHIyOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdU
MiA9IFNINFJlZ2lzdGVyczo6ZHI0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9
IFNINFJlZ2lzdGVyczo6ZHI2OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IFNI
NFJlZ2lzdGVyczo6ZHI4OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9IFNINFJl
Z2lzdGVyczo6ZHIxMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFsdWVGUFIg
PSBTSDRSZWdpc3RlcnM6OmRyMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRG
UFIwID0gU0g0UmVnaXN0ZXJzOjpkcjQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVu
dEZQUjEgPSBTSDRSZWdpc3RlcnM6OmRyNjsKKworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rl
cih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVn
aXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7CisgICAgICAgICAgICBmcFJlZ1Qw
LCBmcFJlZ1QxLCBmcFJlZ1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisKKyAgICAg
ICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gcmVn
aXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5k
ZXgoRlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJl
Zyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBpbmRleEZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgIDAsIEludmFsaWRJbmRl
eCwgMSwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgMiwgSW52YWxpZEluZGV4LCAzLCBJbnZh
bGlkSW5kZXgsCisgICAgICAgICAgICA0LCBJbnZhbGlkSW5kZXgsIDUsIEludmFsaWRJbmRleCwK
KyAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIElu
dmFsaWRJbmRleAorICAgICAgICB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZv
clJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
ZGVidWdOYW1lKEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFs
aWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29u
c3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJkcjAiLCAiZnIx
IiwgImRyMiIsICJmcjMiLAorICAgICAgICAgICAgImRyNCIsICJmcjUiLCAiZHI2IiwgImZyNyIs
CisgICAgICAgICAgICAiZHI4IiwgImZyOSIsICJkcjEwIiwgImZyMTEiLAorICAgICAgICAgICAg
ImRyMTIiLCAiZnIxMyIsICJkcjE0IiwgImZyMTUiCisgICAgICAgIH07CisgICAgICAgIHJldHVy
biBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisjZW5kaWYKKwor
dHlwZWRlZiBSZWdpc3RlckJhbms8RlBSSW5mbz46Oml0ZXJhdG9yIGZwcl9pdGVyYXRvcjsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRlBSSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxOCArMjMsMTYgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgREZHRlBSSW5mb19oCi0jZGVmaW5lIERGR0ZQ
UkluZm9faAorI2lmbmRlZiBGUFJJbmZvX2gKKyNkZWZpbmUgRlBSSW5mb19oCiAKLSNpZiBFTkFC
TEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR1JlZ2lzdGVyQmFuay5oIgogI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKLW5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25hbWVzcGFjZSBKU0MgewogCiB0eXBlZGVmIE1hY3Jv
QXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgRlBSUmVnOwotI2RlZmluZSBJbnZhbGlkRlBSUmVnICgo
RlBSUmVnKS0xKQorI2RlZmluZSBJbnZhbGlkRlBSUmVnICgoOjpKU0M6OkZQUlJlZyktMSkKIAog
I2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAKQEAgLTMwMSw5ICsyOTksMTkgQEAgcHJpdmF0
ZToKIAogI2VuZGlmCiAKLXR5cGVkZWYgUmVnaXN0ZXJCYW5rPEZQUkluZm8+OjppdGVyYXRvciBm
cHJfaXRlcmF0b3I7Cit9IC8vIG5hbWVzcGFjZSBKU0MKIAotfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRworbmFtZXNwYWNlIFdURiB7CiAKK2lubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgSlNDOjpGUFJSZWcgcmVnKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgb3V0
LnByaW50KCIlIiwgSlNDOjpGUFJJbmZvOjpkZWJ1Z05hbWUocmVnKSk7CisjZWxzZQorICAgIG91
dC5wcmludGYoIiUlZnIlZCIsIHJlZyk7CiAjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV1RG
CisKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHJldmlzaW9u
IDE1NjA3NSkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmg6MTU2
MDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw2NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBERkdHUFJJbmZvX2gKKyNkZWZpbmUgREZHR1BSSW5mb19oCisK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5j
bHVkZSAiREZHUmVnaXN0ZXJCYW5rLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKwor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCit0eXBlZGVmIE1hY3JvQXNzZW1ibGVy
OjpSZWdpc3RlcklEIEdQUlJlZzsKKyNkZWZpbmUgSW52YWxpZEdQUlJlZyAoKDo6SlNDOjpERkc6
OkdQUlJlZyktMSkKKworI2lmIFVTRShKU1ZBTFVFNjQpCitjbGFzcyBKU1ZhbHVlUmVncyB7Citw
dWJsaWM6CisgICAgSlNWYWx1ZVJlZ3MoKQorICAgICAgICA6IG1fZ3ByKEludmFsaWRHUFJSZWcp
CisgICAgeworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBKU1ZhbHVlUmVncyhHUFJSZWcgZ3By
KQorICAgICAgICA6IG1fZ3ByKGdwcikKKyAgICB7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBK
U1ZhbHVlUmVncyBwYXlsb2FkT25seShHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVSZWdzKGdwcik7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29u
c3QgeyByZXR1cm4gbV9ncHIgPT0gSW52YWxpZEdQUlJlZzsgfQorICAgIAorICAgIEdQUlJlZyBn
cHIoKSBjb25zdCB7IHJldHVybiBtX2dwcjsgfQorICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29u
c3QgeyByZXR1cm4gbV9ncHI7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgR1BSUmVnIG1fZ3ByOwor
fTsKKworY2xhc3MgSlNWYWx1ZVNvdXJjZSB7CitwdWJsaWM6CisgICAgSlNWYWx1ZVNvdXJjZSgp
CisgICAgICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygpKQorICAgICAgICAsIG1fYmFzZShJbnZh
bGlkR1BSUmVnKQorICAgIHsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZVNvdXJjZShKU1ZhbHVl
UmVncyByZWdzKQorICAgICAgICA6IG1fb2Zmc2V0KG5vdEFkZHJlc3MoKSkKKyAgICAgICAgLCBt
X2Jhc2UocmVncy5ncHIoKSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IEpTVmFs
dWVTb3VyY2UoR1BSUmVnIGdwcikKKyAgICAgICAgOiBtX29mZnNldChub3RBZGRyZXNzKCkpCisg
ICAgICAgICwgbV9iYXNlKGdwcikKKyAgICB7CisgICAgfQorICAgIAorICAgIEpTVmFsdWVTb3Vy
Y2UoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MgYWRkcmVzcykKKyAgICAgICAgOiBtX29mZnNldChh
ZGRyZXNzLm9mZnNldCkKKyAgICAgICAgLCBtX2Jhc2UoYWRkcmVzcy5iYXNlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fb2Zmc2V0ICE9IG5vdEFkZHJlc3MoKSk7CisgICAgICAgIEFTU0VSVCht
X2Jhc2UgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBKU1ZhbHVl
U291cmNlIHVuYm94ZWRDZWxsKEdQUlJlZyBwYXlsb2FkR1BSKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVTb3VyY2UocGF5bG9hZEdQUik7CisgICAgfQorICAgIAorICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlID09IEludmFsaWRHUFJSZWc7IH0KKyAgICAK
KyAgICBib29sIGlzQWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0ICE9IG5vdEFkZHJl
c3MoKTsgfQorICAgIAorICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc0FkZHJlc3MoKSk7CisgICAgICAgIHJldHVybiBtX29mZnNldDsKKyAgICB9Cisg
ICAgCisgICAgR1BSUmVnIGJhc2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzQWRk
cmVzcygpKTsKKyAgICAgICAgcmV0dXJuIG1fYmFzZTsKKyAgICB9CisgICAgCisgICAgR1BSUmVn
IGdwcigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoIWlzQWRkcmVzcygpKTsKKyAgICAg
ICAgcmV0dXJuIG1fYmFzZTsKKyAgICB9CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MgYXNBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZSgpLCBvZmZzZXQoKSk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIGlubGluZSBpbnQz
Ml90IG5vdEFkZHJlc3MoKSB7IHJldHVybiAweDgwMDAwMDAwOyB9ICAgICAKKyAgICAgICAgICAK
KyAgICBpbnQzMl90IG1fb2Zmc2V0OworICAgIEdQUlJlZyBtX2Jhc2U7Cit9OworI2VuZGlmCisK
KyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorY2xhc3MgSlNWYWx1ZVJlZ3MgeworcHVibGljOgorICAg
IEpTVmFsdWVSZWdzKCkKKyAgICAgICAgOiBtX3RhZ0dQUihzdGF0aWNfY2FzdDxpbnQ4X3Q+KElu
dmFsaWRHUFJSZWcpKQorICAgICAgICAsIG1fcGF5bG9hZEdQUihzdGF0aWNfY2FzdDxpbnQ4X3Q+
KEludmFsaWRHUFJSZWcpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZVJlZ3MoR1BS
UmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIpCisgICAgICAgIDogbV90YWdHUFIodGFnR1BS
KQorICAgICAgICAsIG1fcGF5bG9hZEdQUihwYXlsb2FkR1BSKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgc3RhdGljIEpTVmFsdWVSZWdzIHBheWxvYWRPbmx5KEdQUlJlZyBncHIpCisgICAgewor
ICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MoSW52YWxpZEdQUlJlZywgZ3ByKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdQUlJlZz4obV90YWdHUFIpID09IEludmFsaWRHUFJSZWcKKyAgICAgICAgICAg
ICYmIHN0YXRpY19jYXN0PEdQUlJlZz4obV9wYXlsb2FkR1BSKSA9PSBJbnZhbGlkR1BSUmVnOwor
ICAgIH0KKyAgICAKKyAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8R1BSUmVnPihtX3RhZ0dQUik7IH0KKyAgICBHUFJSZWcgcGF5bG9hZEdQUigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9wYXlsb2FkR1BSKTsgfQorICAgIEdQUlJlZyBn
cHIoV2hpY2hWYWx1ZVdvcmQgd2hpY2gpIGNvbnN0CisgICAgeworICAgICAgICBzd2l0Y2ggKHdo
aWNoKSB7CisgICAgICAgIGNhc2UgVGFnV29yZDoKKyAgICAgICAgICAgIHJldHVybiB0YWdHUFIo
KTsKKyAgICAgICAgY2FzZSBQYXlsb2FkV29yZDoKKyAgICAgICAgICAgIHJldHVybiBwYXlsb2Fk
R1BSKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiB0YWdHUFIoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgaW50OF90IG1fdGFnR1BS
OworICAgIGludDhfdCBtX3BheWxvYWRHUFI7Cit9OworCitjbGFzcyBKU1ZhbHVlU291cmNlIHsK
K3B1YmxpYzoKKyAgICBKU1ZhbHVlU291cmNlKCkKKyAgICAgICAgOiBtX29mZnNldChub3RBZGRy
ZXNzKCkpCisgICAgICAgICwgbV9iYXNlT3JUYWcoc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlk
R1BSUmVnKSkKKyAgICAgICAgLCBtX3BheWxvYWQoc3RhdGljX2Nhc3Q8aW50OF90PihJbnZhbGlk
R1BSUmVnKSkKKyAgICAgICAgLCBtX3RhZ1R5cGUoMCkKKyAgICB7CisgICAgfQorICAgIAorICAg
IEpTVmFsdWVTb3VyY2UoSlNWYWx1ZVJlZ3MgcmVncykKKyAgICAgICAgOiBtX29mZnNldChub3RB
ZGRyZXNzKCkpCisgICAgICAgICwgbV9iYXNlT3JUYWcocmVncy50YWdHUFIoKSkKKyAgICAgICAg
LCBtX3BheWxvYWQocmVncy5wYXlsb2FkR1BSKCkpCisgICAgICAgICwgbV90YWdUeXBlKDApCisg
ICAgeworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlU291cmNlKEdQUlJlZyB0YWdHUFIsIEdQUlJl
ZyBwYXlsb2FkR1BSKQorICAgICAgICA6IG1fb2Zmc2V0KG5vdEFkZHJlc3MoKSkKKyAgICAgICAg
LCBtX2Jhc2VPclRhZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KHRhZ0dQUikpCisgICAgICAgICwgbV9w
YXlsb2FkKHN0YXRpY19jYXN0PGludDhfdD4ocGF5bG9hZEdQUikpCisgICAgICAgICwgbV90YWdU
eXBlKDApCisgICAgeworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlU291cmNlKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzIGFkZHJlc3MpCisgICAgICAgIDogbV9vZmZzZXQoYWRkcmVzcy5vZmZzZXQp
CisgICAgICAgICwgbV9iYXNlT3JUYWcoc3RhdGljX2Nhc3Q8aW50OF90PihhZGRyZXNzLmJhc2Up
KQorICAgICAgICAsIG1fcGF5bG9hZChzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcp
KQorICAgICAgICAsIG1fdGFnVHlwZSgwKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb2Zmc2V0
ICE9IG5vdEFkZHJlc3MoKSk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxHUFJSZWc+KG1f
YmFzZU9yVGFnKSAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIEpT
VmFsdWVTb3VyY2UgdW5ib3hlZENlbGwoR1BSUmVnIHBheWxvYWRHUFIpCisgICAgeworICAgICAg
ICBKU1ZhbHVlU291cmNlIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gbm90QWRk
cmVzcygpOworICAgICAgICByZXN1bHQubV9iYXNlT3JUYWcgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+
KEludmFsaWRHUFJSZWcpOworICAgICAgICByZXN1bHQubV9wYXlsb2FkID0gc3RhdGljX2Nhc3Q8
aW50OF90PihwYXlsb2FkR1BSKTsKKyAgICAgICAgcmVzdWx0Lm1fdGFnVHlwZSA9IHN0YXRpY19j
YXN0PGludDhfdD4oSlNWYWx1ZTo6Q2VsbFRhZyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fYmFzZU9yVGFnKSA9PSBJbnZhbGlkR1BSUmVnCisg
ICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fcGF5bG9hZCkgPT0gSW52YWxpZEdQ
UlJlZzsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0FkZHJlc3MoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCEhKnRoaXMpOworICAgICAgICByZXR1cm4gbV9vZmZzZXQgIT0gbm90QWRk
cmVzcygpOworICAgIH0KKyAgICAKKyAgICBpbnQzMl90IG9mZnNldCgpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQoaXNBZGRyZXNzKCkpOworICAgICAgICByZXR1cm4gbV9vZmZzZXQ7Cisg
ICAgfQorICAgIAorICAgIEdQUlJlZyBiYXNlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChpc0FkZHJlc3MoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fYmFz
ZU9yVGFnKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIHRhZ0dQUigpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQoIWlzQWRkcmVzcygpICYmIHN0YXRpY19jYXN0PEdQUlJlZz4obV9iYXNl
T3JUYWcpICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BS
UmVnPihtX2Jhc2VPclRhZyk7CisgICAgfQorICAgIAorICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCghaXNBZGRyZXNzKCkpOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWQpOworICAgIH0KKyAgICAKKyAgICBib29s
IGhhc0tub3duVGFnKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCghISp0aGlzKTsKKyAg
ICAgICAgQVNTRVJUKCFpc0FkZHJlc3MoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
UFJSZWc+KG1fYmFzZU9yVGFnKSA9PSBJbnZhbGlkR1BSUmVnOworICAgIH0KKyAgICAKKyAgICB1
aW50MzJfdCB0YWcoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG1fdGFnVHlwZSk7CisgICAgfQorICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzIGFzQWRkcmVzcyh1bnNpZ25lZCBhZGRpdGlvbmFsT2Zmc2V0ID0gMCkgY29uc3QgeyByZXR1
cm4gTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSgpLCBvZmZzZXQoKSArIGFkZGl0aW9uYWxP
ZmZzZXQpOyB9CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBpbmxpbmUgaW50MzJfdCBub3RB
ZGRyZXNzKCkgeyByZXR1cm4gMHg4MDAwMDAwMDsgfSAgICAgCisgICAgICAgICAgCisgICAgaW50
MzJfdCBtX29mZnNldDsKKyAgICBpbnQ4X3QgbV9iYXNlT3JUYWc7CisgICAgaW50OF90IG1fcGF5
bG9hZDsgCisgICAgaW50OF90IG1fdGFnVHlwZTsgLy8gQ29udGFpbnMgdGhlIGxvdyBiaXRzIG9m
IHRoZSB0YWcuCit9OworI2VuZGlmCisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBOVU1CRVJfT0Zf
QVJHVU1FTlRfUkVHSVNURVJTIDAKKworY2xhc3MgR1BSSW5mbyB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1i
ZXJPZlJlZ2lzdGVycyA9IDU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJn
dW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOworCisgICAgLy8g
VGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gWDg2
UmVnaXN0ZXJzOjplYXg7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IFg4NlJlZ2lz
dGVyczo6ZWR4OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDIgPSBYODZSZWdpc3RlcnM6
OmVjeDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gWDg2UmVnaXN0ZXJzOjplYng7
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IFg4NlJlZ2lzdGVyczo6ZXNpOworICAg
IC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgorICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVkaTsKKyAgICAvLyBU
aGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2Ug
YXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgYXJndW1lbnRHUFIwID0gWDg2UmVnaXN0ZXJzOjplY3g7IC8vIHJlZ1QyCisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OmVheDsg
Ly8gcmVnVDAKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3Rl
cnM6OmVieDsgLy8gcmVnVDMKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjIgPSBY
ODZSZWdpc3RlcnM6OmVzaTsgLy8gcmVnVDQKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVy
blZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lz
dGVyczo6ZWN4OworCisgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAg
ICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3Rl
cnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQgfTsKKyAgICAgICAgcmV0
dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25l
ZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFs
aWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgOCk7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzhdID0geyAwLCAy
LCAxLCAzLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgNCwgSW52YWxpZEluZGV4IH07Cisg
ICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAgICAg
QVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKKyAg
ICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCA4KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IG5hbWVGb3JSZWdpc3Rlcls4XSA9IHsKKyAgICAgICAgICAgICJlYXgiLCAiZWN4IiwgImVkeCIs
ICJlYngiLAorICAgICAgICAgICAgImVzcCIsICJlYnAiLCAiZXNpIiwgImVkaSIsCisgICAgICAg
IH07CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9Citwcml2YXRl
OgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7
Cit9OworCisjZW5kaWYKKworI2lmIENQVShYODZfNjQpCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMgNgorCitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEdQUlJlZyBSZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9m
UmVnaXN0ZXJzID0gOTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7CisKKyAgICAvLyBUaGVz
ZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYXg7CisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjEzOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgdGFnVHlwZU51bWJlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJz
OjpyMTQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyB0YWdNYXNrUmVnaXN0ZXIgPSBYODZSZWdp
c3RlcnM6OnIxNTsKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmVnVDAgPSBYODZSZWdpc3RlcnM6OmVheDsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ1QxID0gWDg2UmVnaXN0ZXJzOjplZHg7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUMiA9IFg4NlJlZ2lzdGVyczo6ZWN4OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMg
PSBYODZSZWdpc3RlcnM6OmVieDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gWDg2
UmVnaXN0ZXJzOjplZGk7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNSA9IFg4NlJlZ2lz
dGVyczo6ZXNpOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDYgPSBYODZSZWdpc3RlcnM6
OnI4OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDcgPSBYODZSZWdpc3RlcnM6OnI5Owor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDggPSBYODZSZWdpc3RlcnM6OnIxMDsKKyAgICAv
LyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBv
c2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgYXJndW1lbnRHUFIwID0gWDg2UmVnaXN0ZXJzOjplZGk7IC8vIHJlZ1Q0CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSBYODZSZWdpc3RlcnM6OmVzaTsgLy8gcmVn
VDUKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IFg4NlJlZ2lzdGVyczo6
ZWR4OyAvLyByZWdUMQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gWDg2
UmVnaXN0ZXJzOjplY3g7IC8vIHJlZ1QyCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVu
dEdQUjQgPSBYODZSZWdpc3RlcnM6OnI4OyAgLy8gcmVnVDYKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGFyZ3VtZW50R1BSNSA9IFg4NlJlZ2lzdGVyczo6cjk7ICAvLyByZWdUNworICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWJ4OyAv
LyByZWdUMworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9IFg4NlJlZ2lzdGVy
czo6cjEwOyAvLyByZWdUOAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIg
PSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJl
dHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMQorICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjplc2k7
CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgewor
ICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJl
Z1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJlZ1Q2LCByZWdUNywgcmVn
VDggfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgR1BSUmVnIHRvQXJndW1lbnRSZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMp
OworICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZB
cmd1bWVudFJlZ2lzdGVyc10gPSB7IGFyZ3VtZW50R1BSMCwgYXJndW1lbnRHUFIxLCBhcmd1bWVu
dEdQUjIsIGFyZ3VtZW50R1BSMywgYXJndW1lbnRHUFI0LCBhcmd1bWVudEdQUjUgfTsKKyAgICAg
ICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKyAgICAKKyAgICBzdGF0
aWMgdW5zaWduZWQgdG9JbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJl
ZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVn
KSA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJb
MTZdID0geyAwLCAyLCAxLCAzLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgNSwgNCwgNiwg
NywgOCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXggfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JS
ZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRl
YnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlk
R1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDE2KTsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAg
ICAgICAicmF4IiwgInJjeCIsICJyZHgiLCAicmJ4IiwKKyAgICAgICAgICAgICJyc3AiLCAicmJw
IiwgInJzaSIsICJyZGkiLAorICAgICAgICAgICAgInI4IiwgInI5IiwgInIxMCIsICJyMTEiLAor
ICAgICAgICAgICAgInIxMiIsICJyMTMiLCAicjE0IiwgInIxNSIKKyAgICAgICAgfTsKKyAgICAg
ICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNl
bmRpZgorCisjaWYgQ1BVKEFSTSkKKyNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVS
UyA0CisKK2NsYXNzIEdQUkluZm8geworcHVibGljOgorICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lz
dGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA4
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0g
TlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3Rl
cnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMCA9IEFSTVJlZ2lzdGVyczo6cjA7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IEFSTVJlZ2lzdGVyczo6cjE7CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IEFSTVJlZ2lzdGVyczo6cjI7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUMyA9IEFSTVJlZ2lzdGVyczo6cjQ7CisgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUNCA9IEFSTVJlZ2lzdGVyczo6cjg7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUNSA9IEFSTVJlZ2lzdGVyczo6cjk7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNiA9
IEFSTVJlZ2lzdGVyczo6cjEwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDcgPSBBUk1S
ZWdpc3RlcnM6OnIxMTsKKyAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5l
IEpJVC4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gcmVn
VDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSByZWdU
MTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gQVJNUmVnaXN0
ZXJzOjpyNTsKKyAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRo
ZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgorICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gQVJNUmVnaXN0ZXJzOjpyMDsgLy8g
cmVnVDAKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IEFSTVJlZ2lzdGVy
czo6cjE7IC8vIHJlZ1QxCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBB
Uk1SZWdpc3RlcnM6OnIyOyAvLyByZWdUMgorICAgIC8vIEZJWE1FOiByMyBpcyBjdXJyZW50bHkg
dXNlZCBiZSB0aGUgTWFjcm9Bc3NlbWJsZXIgYXMgYSB0ZW1wb3JhcnkgLSBpdCBzZWVtcworICAg
IC8vIFRoaXMgY291bGQgdGhyZW9yZXRpY2FsbHkgYmUgYSBwcm9ibGVtIGlmIHRoaXMgaXMgdXNl
ZCBpbiBjb2RlIGdlbmVyYXRpb24KKyAgICAvLyBiZXR3ZWVuIHRoZSBhcmd1bWVudHMgYmVpbmcg
c2V0IHVwLCBhbmQgdGhlIGNhbGwgYmVpbmcgbWFkZS4gVGhhdCBzYWlkLAorICAgIC8vIGFueSBj
aGFuZ2UgaW50cm9kdWNpbmcgYSBwcm9ibGVtIGhlcmUgaXMgbGlrZWx5IHRvIGJlIGltbWVkaWF0
ZWx5IGFwcGFyZW50IQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gQVJN
UmVnaXN0ZXJzOjpyMzsgLy8gRklYTUUhCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdH
UFIwID0gQVJNUmVnaXN0ZXJzOjpyNDsgLy8gcmVnVDMKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IG5vbkFyZ0dQUjEgPSBBUk1SZWdpc3RlcnM6OnI4OyAvLyByZWdUNAorICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uQXJnR1BSMiA9IEFSTVJlZ2lzdGVyczo6cjk7IC8vIHJlZ1Q1CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFSTVJlZ2lzdGVyczo6cjA7IC8vIHJl
Z1QwCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBBUk1SZWdpc3Rl
cnM6OnIxOyAvLyByZWdUMQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9u
UmV0dXJuR1BSID0gQVJNUmVnaXN0ZXJzOjpyMjsKKworICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdp
c3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJl
ck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvcklu
ZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJl
Z1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3IH07CisgICAgICAgIHJldHVybiByZWdpc3RlckZvcklu
ZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChHUFJSZWcg
cmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWcpICE9
IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJl
ZykgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVy
WzE2XSA9IHsgMCwgMSwgMiwgSW52YWxpZEluZGV4LCAzLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LCA0LCA1LCA2LCA3LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0
ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFs
aWRJbmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihyZWcpICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlZykgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbMTZdID0geworICAgICAgICAgICAgInIwIiwgInIxIiwg
InIyIiwgInIzIiwKKyAgICAgICAgICAgICJyNCIsICJyNSIsICJyNiIsICJyNyIsCisgICAgICAg
ICAgICAicjgiLCAicjkiLCAicjEwIiwgInIxMSIsCisgICAgICAgICAgICAicjEyIiwgInIxMyIs
ICJyMTQiLCAicjE1IgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVy
W3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZh
bGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKKyNpZiBDUFUoTUlQUykKKyNk
ZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0CisKK2NsYXNzIEdQUkluZm8gewor
cHVibGljOgorICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUzsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUMCA9IE1JUFNSZWdpc3RlcnM6OnYwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjp2MTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Qy
ID0gTUlQU1JlZ2lzdGVyczo6dDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9IE1J
UFNSZWdpc3RlcnM6OnQ1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBNSVBTUmVn
aXN0ZXJzOjp0NjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gTUlQU1JlZ2lzdGVy
czo6dDc7CisgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnMw
OworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVy
YWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBNSVBTUmVnaXN0ZXJzOjphMDsKKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IE1JUFNSZWdpc3RlcnM6OmExOworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6YTI7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJzOjphMzsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdUMjsKKyAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5v
bkFyZ0dQUjIgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BS
ID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdU
MTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJl
Z1Q1OworCisgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0g
eyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1IH07CisgICAgICAgIHJl
dHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgdG9JbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZh
bGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5kZXgsIEludmFs
aWRJbmRleCwgMCwgMSwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXgsIDIsIDMsIDQsIDUgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5k
ZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRl
eCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJ
bnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAiemVybyIs
ICJhdCIsICJ2MCIsICJ2MSIsCisgICAgICAgICAgICAiYTAiLCAiYTEiLCAiYTIiLCAiYTMiLAor
ICAgICAgICAgICAgInQwIiwgInQxIiwgInQyIiwgInQzIiwKKyAgICAgICAgICAgICJ0NCIsICJ0
NSIsICJ0NiIsICJ0NyIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3Rl
cltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52
YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCisjaWYgQ1BVKFNINCkKKyNk
ZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0CisKK2NsYXNzIEdQUkluZm8gewor
cHVibGljOgorICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSAxMDsKKworICAgIC8vIFRlbXBvcmFyeSBy
ZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMCA9IFNINFJlZ2lzdGVyczo6
cjA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IFNINFJlZ2lzdGVyczo6cjE7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IFNINFJlZ2lzdGVyczo6cjI7CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUMyA9IFNINFJlZ2lzdGVyczo6cjEwOworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmVnVDQgPSBTSDRSZWdpc3RlcnM6OnI0OworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDUgPSBTSDRSZWdpc3RlcnM6OnI1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnVDYgPSBTSDRSZWdpc3RlcnM6OnI2OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDcg
PSBTSDRSZWdpc3RlcnM6OnI3OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDggPSBTSDRS
ZWdpc3RlcnM6OnI4OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDkgPSBTSDRSZWdpc3Rl
cnM6OnI5OworICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSByZWdUMDsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJlZ1QxOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OmZw
OworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVy
YWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGFyZ3VtZW50R1BSMSA9IHJlZ1Q1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1l
bnRHUFIyID0gcmVnVDY7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBy
ZWdUNzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdUMzsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUODsKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIG5vbkFyZ0dQUjIgPSByZWdUOTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVy
blZhbHVlR1BSID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQ
UjIgPSByZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVy
bkdQUiA9IHJlZ1QyOworCisgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGlu
ZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwor
ICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdp
c3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdU
NiwgcmVnVDcsIHJlZ1Q4LCByZWdUOSB9OworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRl
eFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJl
ZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAg
IEFTU0VSVChyZWcgPCAxNCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZv
clJlZ2lzdGVyWzE0XSA9IHsgMCwgMSwgMiwgSW52YWxpZEluZGV4LCA0LCA1LCA2LCA3LCA4LCA5
LCAzLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07CisgICAgICAg
IHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAgICAgQVNTRVJU
KHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcg
PCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbMTZdID0g
eworICAgICAgICAgICAgInIwIiwgInIxIiwgInIyIiwgInIzIiwgInI0IiwgInI1IiwgInI2Iiwg
InI3IiwKKyAgICAgICAgICAgICJyOCIsICJyOSIsICJyMTAiLCAicjExIiwgInIxMiIsICJyMTMi
LCAicjE0IiwgInIxNSIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3Rl
cltyZWddOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52
YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCit0eXBlZGVmIFJlZ2lzdGVy
QmFuazxHUFJJbmZvPjo6aXRlcmF0b3IgZ3ByX2l0ZXJhdG9yOworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQ
UkluZm8uaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIwICsyMywxNiBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotI2lmbmRlZiBERkdHUFJJbmZvX2gKLSNkZWZpbmUgREZHR1BSSW5mb19oCisjaWZuZGVm
IEdQUkluZm9faAorI2RlZmluZSBHUFJJbmZvX2gKIAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdSZWdpc3RlckJhbmsuaCIK
ICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CituYW1lc3BhY2UgSlNDIHsKIAog
dHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBHUFJSZWc7Ci0jZGVmaW5lIEludmFs
aWRHUFJSZWcgKCg6OkpTQzo6REZHOjpHUFJSZWcpLTEpCisjZGVmaW5lIEludmFsaWRHUFJSZWcg
KCg6OkpTQzo6R1BSUmVnKS0xKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNsYXNzIEpTVmFsdWVS
ZWdzIHsKQEAgLTYzNiw5ICs2MzIsMTkgQEAgcHJpdmF0ZToKIAogI2VuZGlmCiAKLXR5cGVkZWYg
UmVnaXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRlcmF0b3I7Cit9IC8vIG5hbWVz
cGFjZSBKU0MKIAotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworbmFtZXNwYWNlIFdURiB7CiAK
K2lubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpHUFJSZWcg
cmVnKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgb3V0LnByaW50KCIlIiwgSlNDOjpHUFJJbmZv
OjpkZWJ1Z05hbWUocmVnKSk7CisjZWxzZQorICAgIG91dC5wcmludGYoIiUlciVkIiwgcmVnKTsK
ICNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDkgKzcyLDggQEAgdm9pZCBj
dGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoQ29kZUJsbwogfQogCiBKSVQ6OkpJVChWTSogdm0s
IENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogbV9pbnRlcnByZXRlcih2bS0+aW50ZXJwcmV0
ZXIpCi0gICAgLCBtX3ZtKHZtKQotICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgIDog
SlNJbnRlcmZhY2VKSVQodm0sIGNvZGVCbG9jaykKKyAgICAsIG1faW50ZXJwcmV0ZXIodm0tPmlu
dGVycHJldGVyKQogICAgICwgbV9sYWJlbHMoY29kZUJsb2NrID8gY29kZUJsb2NrLT5udW1iZXJP
Zkluc3RydWN0aW9ucygpIDogMCkKICAgICAsIG1fYnl0ZWNvZGVPZmZzZXQoKHVuc2lnbmVkKS0x
KQogICAgICwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXgoVUlOVF9NQVgpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTg4Niw4ICs4ODYsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgICAgIEludGVycHJldGVyKiBtX2ludGVycHJl
dGVyOwotICAgICAgICBWTSogbV92bTsKLSAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsK
IAogICAgICAgICBWZWN0b3I8Q2FsbFJlY29yZD4gbV9jYWxsczsKICAgICAgICAgVmVjdG9yPExh
YmVsPiBtX2xhYmVsczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTU2MDc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1
Y3Rpb24qCiAKIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcihW
TSogdm0pCiB7Ci0gICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIEpTSW50ZXJmYWNlSklUIGpp
dCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7CiAgICAgZmFpbHVyZXMuYXBwZW5kKGppdC5i
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAkocmV2aXNpb24gMTU2MDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcihW
TSogdm0pCiB7Ci0gICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIEpTSW50ZXJmYWNlSklUIGpp
dCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7CiAgICAgZmFpbHVyZXMuYXBwZW5kKGppdC5i
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDE1
NjA3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAK
ICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJz
LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMzgsOCArMzksMTMgQEAKICNpZiBFTkFCTEUoSklUKQogCiBu
YW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBKU0ludGVyZmFjZUpJVCA6IHB1YmxpYyBNYWNyb0Fz
c2VtYmxlciB7CisgICAgY2xhc3MgSlNJbnRlcmZhY2VKSVQgOiBwdWJsaWMgQ0NhbGxIZWxwZXJz
IHsKICAgICBwdWJsaWM6CisgICAgICAgIEpTSW50ZXJmYWNlSklUKFZNKiB2bSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSAwKQorICAgICAgICAgICAgOiBDQ2FsbEhlbHBlcnModm0sIGNvZGVCbG9j
aykKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBOT1RFUzoKICAg
ICAgICAgLy8KICAgICAgICAgLy8gcmVnVDAgaGFzIHR3byBzcGVjaWFsIG1lYW5pbmdzLiAgVGhl
IHJldHVybiB2YWx1ZSBmcm9tIGEgc3R1YgpAQCAtMjA2LDkgKzIxMiw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcih2b2lk
KiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkpOwogICAgICAgICB2b2lkIGVt
aXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJFbnRyeSk7CiAKLSAgICAgICAgdm9pZCBwcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwoUmVnaXN0ZXJJRCk7Ci0gICAgICAgIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCk7Ci0gICAgICAgIHZvaWQgcmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4oQWRkcmVzcyk7CiAgICAgICAgIHZvaWQgcmVzdG9yZUFyZ3VtZW50UmVm
ZXJlbmNlKCk7CiAKICAgICAgICAgaW5saW5lIEFkZHJlc3MgcGF5bG9hZEZvcihpbnQgaW5kZXgs
IFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKQEAgLTM5Niw3NSArMzk5LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odmlydHVhbFJlZ2lzdGVySW5kZXgpICogc2l6ZW9mKFJlZ2lzdGVyKSkp
OwogICAgIH0KIAotI2lmIENQVShBUk0pCi0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRl
cmZhY2VKSVQ6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykK
LSAgICB7Ci0gICAgICAgIG1vdmUobGlua1JlZ2lzdGVyLCByZWcpOwotICAgIH0KLSAgICAKLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OnJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgbW92ZShyZWcsIGxp
bmtSZWdpc3Rlcik7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVy
ZmFjZUpJVDo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNz
KQotICAgIHsKLSAgICAgICAgbG9hZFB0cihhZGRyZXNzLCBsaW5rUmVnaXN0ZXIpOwotICAgIH0K
LSNlbGlmIENQVShTSDQpCi0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6
OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKLSAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLnN0c3ByKHJlZyk7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1
cm4oUmVnaXN0ZXJJRCByZWcpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHNwcihyZWcp
OwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OnJl
c3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0g
ICAgICAgIGxvYWRQdHJMaW5rUmVnKGFkZHJlc3MpOwotICAgIH0KLSAgICAKLSNlbGlmIENQVShN
SVBTKQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpwcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCi0gICAgewotICAgICAgICBtb3Zl
KHJldHVybkFkZHJlc3NSZWdpc3RlciwgcmVnKTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lO
TElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpyZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVy
bihSZWdpc3RlcklEIHJlZykKLSAgICB7Ci0gICAgICAgIG1vdmUocmVnLCByZXR1cm5BZGRyZXNz
UmVnaXN0ZXIpOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZh
Y2VKSVQ6OnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykK
LSAgICB7Ci0gICAgICAgIGxvYWRQdHIoYWRkcmVzcywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsK
LSAgICB9Ci0gICAgCi0jZWxzZSAvLyBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwoUmVnaXN0ZXJJRCByZWcpCi0gICAgewotICAgICAgICBwb3AocmVnKTsKLSAgICB9Ci0g
ICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpyZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykKLSAgICB7Ci0gICAgICAgIHB1c2go
cmVnKTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklU
OjpyZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCi0gICAg
ewotICAgICAgICBwdXNoKGFkZHJlc3MpOwotICAgIH0KLSAgICAKLSNlbmRpZgotCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpyZXN0b3JlQXJndW1lbnRSZWZlcmVuY2Uo
KQogICAgIHsKICAgICAgICAgbW92ZShzdGFja1BvaW50ZXJSZWdpc3RlciwgZmlyc3RBcmd1bWVu
dFJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRU
aHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lh
bGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTcGVjaWFsaXplZFRodW5rSklUIDogcHVi
bGljIEpTSW50ZXJmYWNlSklUIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQgVGhpc0FyZ3VtZW50ID0gLTE7Ci0gICAgICAgIFNwZWNpYWxpemVkVGh1bmtKSVQoaW50IGV4
cGVjdGVkQXJnQ291bnQpCisgICAgICAgIFNwZWNpYWxpemVkVGh1bmtKSVQoVk0qIHZtLCBpbnQg
ZXhwZWN0ZWRBcmdDb3VudCkKKyAgICAgICAgICAgIDogSlNJbnRlcmZhY2VKSVQodm0pCiAgICAg
ICAgIHsKICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVt
YmVyIG9mIGFyZ3VtZW50cwogICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIo
Tm90RXF1YWwsIHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIFRydXN0ZWRJbW0z
MihleHBlY3RlZEFyZ0NvdW50ICsgMSkpKTsKQEAgLTEzMCw5ICsxMzEsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHJldCgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZmluYWxpemUoVk0mIHZtLCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgZmFsbGJhY2ssIGNvbnN0IGNoYXIqIHRodW5rS2luZCkKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZpbmFsaXplKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3Qg
Y2hhciogdGh1bmtLaW5kKQogICAgICAgICB7Ci0gICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKHZtLCB0aGlzLCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqbV92bSwgdGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKICAgICAgICAgICAg
IHBhdGNoQnVmZmVyLmxpbmsobV9mYWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWwoZmFsbGJhY2sp
KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhbGxzLnNpemUoKTsg
aSsrKQogICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9jYWxsc1tpXS5maXJzdCwg
bV9jYWxsc1tpXS5zZWNvbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTU2MDc1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2
MSw3IEBAIHN0YXRpYyBKU0ludGVyZmFjZUpJVDo6Q2FsbCBnZW5lcmF0ZVNsb3cKIAogc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rRm9yR2VuZXJhdG9yKFZNKiB2bSwgRnVuY3Rpb25Q
dHIgbGF6eUxpbmssIEZ1bmN0aW9uUHRyIG5vdEpTRnVuY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUp
CiB7Ci0gICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7
CiAgICAgCiAgICAgSlNJbnRlcmZhY2VKSVQ6Okp1bXBMaXN0IHNsb3dDYXNlOwogICAgIApAQCAt
MTE0LDcgKzExNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2xvc3VyZUNhbGxHZW4K
IAogc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsRm9yR2VuZXJhdG9yKFZNKiB2
bSwgRnVuY3Rpb25QdHIgY29tcGlsZSwgRnVuY3Rpb25QdHIgbm90SlNGdW5jdGlvbiwgY29uc3Qg
Y2hhciogbmFtZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewotICAgIEpTSW50ZXJm
YWNlSklUIGppdDsKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwogICAgIAogICAgIEpTSW50
ZXJmYWNlSklUOjpKdW1wTGlzdCBzbG93Q2FzZTsKIApAQCAtMTY5LDcgKzE2OSw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsQ29uc3RydWN0R2UKIAogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIHN0cmluZ0xlbmd0aFRyYW1wb2xpbmVHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIEpTSW50
ZXJmYWNlSklUIGppdDsKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwogICAgIAogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgLy8gQ2hlY2sgZWF4IGlzIGEgc3RyaW5nCkBAIC0yMzEsNyArMjMx
LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogewogICAgIGlu
dCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiA9IE5hdGl2ZUV4ZWN1dGFibGU6Om9mZnNldE9m
TmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCk7CiAgICAgCi0gICAgSlNJbnRlcmZhY2VKSVQgaml0Owor
ICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CiAgICAgCiAgICAgaml0LmVtaXRQdXRJbW1lZGlh
dGVUb0NhbGxGcmFtZUhlYWRlcigwLCBKU1N0YWNrOjpDb2RlQmxvY2spOwogICAgIGppdC5zdG9y
ZVB0cihKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS0+dG9wQ2FsbEZyYW1l
KTsKQEAgLTQyMSw3ICs0MjEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlQ29uc3Ry
dWN0R2VuCiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcml0eUZpeHVwKFZNKiB2bSkKIHsKLSAg
ICBKU0ludGVyZmFjZUpJVCBqaXQ7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKIAogICAg
IC8vIFdlIGVudGVyIHdpdGggZml4dXAgY291bnQgaW4gcmVnVDAKICNpZiBVU0UoSlNWQUxVRTY0
KQpAQCAtNTM5LDQxICs1MzksNDEgQEAgc3RhdGljIHZvaWQgY2hhclRvU3RyaW5nKFNwZWNpYWxp
emVkVGh1bgogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgxKTsKKyAgICBTcGVjaWFs
aXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgc3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAg
ICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKLSAgICByZXR1
cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgImNo
YXJDb2RlQXQiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0
aXZlQ2FsbCh2bSksICJjaGFyQ29kZUF0Iik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBj
aGFyQXRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBq
aXQoMSk7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIHN0cmluZ0No
YXJMb2FkKGppdCwgdm0pOwogICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QxKTsKICAgICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlO
YXRpdmVDYWxsKHZtKSwgImNoYXJBdCIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmpp
dFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgImNoYXJBdCIpOwogfQogCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNwZWNp
YWxpemVkVGh1bmtKSVQgaml0KDEpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAx
KTsKICAgICAvLyBsb2FkIGNoYXIgY29kZQogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwgdm0sIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDApOwotICAgIHJldHVybiBqaXQuZmluYWxpemUoKnZtLCB2bS0+aml0
U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7CisgICAgcmV0dXJuIGpp
dC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiZnJvbUNoYXJDb2Rl
Iik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qIHZt
KQogewotICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KDEpOworICAgIFNwZWNpYWxpemVkVGh1
bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0
KCkpCiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKIAogICAgIGppdC5s
b2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGppdC5zcXJ0RG91YmxlKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwogICAgIGppdC5y
ZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGpp
dC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJzcXJ0Iik7
CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0p
LCAic3FydCIpOwogfQogCiAKQEAgLTY2OCw3ICs2NjgsNyBAQCBzdGF0aWMgY29uc3QgZG91Ymxl
IGhhbGZDb25zdGFudCA9IDAuNTsKICAgICAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9vclRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgxKTsK
KyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgbm9uSW50SnVtcDsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGZsb29yKSB8
fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQogICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlO
YXRpdmVDYWxsKHZtKSk7CkBAIC02OTUsMTIgKzY5NSwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZmxvb3JUaHVua0dlbmVyYXRvCiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKICAgICBkb3VibGVSZXN1bHQubGluaygmaml0KTsKICAgICBqaXQucmV0
dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwotICAgIHJldHVybiBqaXQu
ZmluYWxpemUoKnZtLCB2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiZmxvb3IiKTsK
KyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSks
ICJmbG9vciIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY2VpbFRodW5rR2VuZXJhdG9y
KFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgxKTsKKyAgICBTcGVjaWFs
aXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihj
ZWlsKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQogICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVDYWxsKHZtKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50SnVt
cDsKQEAgLTcxNCwxMiArNzE0LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtH
ZW5lcmF0b3IKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAp
OwogICAgIGRvdWJsZVJlc3VsdC5saW5rKCZqaXQpOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0s
IHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJjZWlsIik7CisgICAgcmV0dXJuIGpp
dC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiY2VpbCIpOwogfQog
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0g
ICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQoMSk7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBq
aXQodm0sIDEpOwogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIoanNSb3VuZCkgfHwgIWpp
dC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZl
Q2FsbCh2bSkpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CkBAIC03NDgs
MzggKzc0OCwzOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcm91bmRUaHVua0dlbmVyYXRvCiAg
ICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBkb3Vi
bGVSZXN1bHQubGluaygmaml0KTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1
bmtKSVQ6OmZwUmVnVDApOwotICAgIHJldHVybiBqaXQuZmluYWxpemUoKnZtLCB2bS0+aml0U3R1
YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAicm91bmQiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXpl
KHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJyb3VuZCIpOwogfQogCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZXhwVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIGlmICghVW5h
cnlEb3VibGVPcFdyYXBwZXIoZXhwKSkKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2Fs
bCh2bSkpOwotICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KDEpOworICAgIFNwZWNpYWxpemVk
VGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQo
KSkKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFn
ZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwogICAgIGppdC5sb2Fk
RG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQcmVzZXJ2aW5n
UmV0dXJuKFVuYXJ5RG91YmxlT3BXcmFwcGVyKGV4cCkpOwogICAgIGppdC5yZXR1cm5Eb3VibGUo
U3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSgq
dm0sIHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJleHAiKTsKKyAgICByZXR1cm4g
aml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJleHAiKTsKIH0K
IAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxvZ1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAg
ICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGxvZykpCiAgICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0
aU5hdGl2ZUNhbGwodm0pKTsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgxKTsKKyAgICBT
cGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9h
dGluZ1BvaW50KCkpCiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKICAg
ICBqaXQubG9hZERvdWJsZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAs
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBqaXQuY2FsbERvdWJsZVRvRG91Ymxl
UHJlc2VydmluZ1JldHVybihVbmFyeURvdWJsZU9wV3JhcHBlcihsb2cpKTsKICAgICBqaXQucmV0
dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwotICAgIHJldHVybiBqaXQu
ZmluYWxpemUoKnZtLCB2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAibG9nIik7Cisg
ICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAi
bG9nIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhYnNUaHVua0dlbmVyYXRvcihWTSog
dm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQoMSk7CisgICAgU3BlY2lhbGl6ZWRU
aHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludEFi
cygpKQogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsKQEAgLTc5NCwxMiArNzk0LDEyIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBhYnNUaHVua0dlbmVyYXRvcigKICAgICBqaXQubG9hZERvdWJsZUFyZ3Vt
ZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwKTsKICAgICBqaXQuYWJzRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAs
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDEpOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMSk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0s
IHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJhYnMiKTsKKyAgICByZXR1cm4gaml0
LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJhYnMiKTsKIH0KIAog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBvd1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBT
cGVjaWFsaXplZFRodW5rSklUIGppdCgyKTsKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2
bSwgMik7CiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCiAgICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+
aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKIApAQCAtODQ2LDEyICs4NDYsMTIgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHBvd1RodW5rR2VuZXJhdG9yKAogICAgIH0gZWxzZQogICAgICAg
ICBqaXQuYXBwZW5kRmFpbHVyZShub25JbnRFeHBvbmVudCk7CiAKLSAgICByZXR1cm4gaml0LmZp
bmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgInBvdyIpOworICAg
IHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgInBv
dyIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaW11bFRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgyKTsKKyAgICBTcGVjaWFsaXplZFRo
dW5rSklUIGppdCh2bSwgMik7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9uSW50QXJnMEp1
bXA7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QwLCBub25JbnRBcmcwSnVtcCk7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6TGFiZWwgZG9u
ZUxvYWRpbmdBcmcwKCZqaXQpOwpAQCAtODc5LDcgKzg3OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IKICAgICB9IGVsc2UKICAgICAgICAgaml0LmFwcGVuZEZh
aWx1cmUobm9uSW50QXJnMUp1bXApOwogCi0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZt
LT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJpbXVsIik7CisgICAgcmV0dXJuIGppdC5m
aW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiaW11bCIpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJl
dmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBMTEludCB7CiAKIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8oVk0qIHZtLCB2b2lkICgqdGFyZ2V0KSgpLCBjb25zdCBjaGFyICp0aHVu
a0tpbmQpCiB7Ci0gICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIEpTSW50ZXJmYWNlSklUIGpp
dCh2bSk7CiAgICAgCiAgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5
IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCiAgICAgaml0Lm1vdmUo
SlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQp
KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyB2YWx1ZXMgYXMgYmVpbmcgbWlzc2luZywgc28gaXQg
aXMgdXNlZnVsIHRvIGhhdmUgaXQgYWJicmV2aWF0ZWQuCiAjZGVmaW5lIFFOYU4gKHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpCiAKK2NsYXNzIEFzc2VtYmx5SGVscGVy
czsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTQ2VsbDsKK2NsYXNzIEpTVmFsdWVTb3VyY2U7
CiBjbGFzcyBWTTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7CkBAIC01
MSwxMCArNTMsNyBAQCBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiBjbGFzcyBQdXRQcm9wZXJ0eVNsb3Q7
CiAjaWYgRU5BQkxFKERGR19KSVQpCiBuYW1lc3BhY2UgREZHIHsKLWNsYXNzIEFzc2VtYmx5SGVs
cGVyczsKIGNsYXNzIEpJVENvbXBpbGVyOwotY2xhc3MgSklUQ29kZUdlbmVyYXRvcjsKLWNsYXNz
IEpTVmFsdWVTb3VyY2U7CiBjbGFzcyBPU1JFeGl0Q29tcGlsZXI7CiBjbGFzcyBTcGVjdWxhdGl2
ZUpJVDsKIH0KQEAgLTExNiwxNyArMTE1LDE2IEBAIGlubGluZSB1aW50MzJfdCB0b1VJbnQzMihk
b3VibGUgbnVtYmVyKQogCiBjbGFzcyBKU1ZhbHVlIHsKICAgICBmcmllbmQgc3RydWN0IEVuY29k
ZWRKU1ZhbHVlSGFzaFRyYWl0czsKKyAgICBmcmllbmQgY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwog
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgZnJpZW5kIGNsYXNzIEpJVFNsb3dQYXRoQ2FsbDsK
ICAgICBmcmllbmQgY2xhc3MgSklUU3R1YnM7CiAgICAgZnJpZW5kIGNsYXNzIEpJVFN0dWJDYWxs
OwogICAgIGZyaWVuZCBjbGFzcyBKU0ludGVyZmFjZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgSlNW
YWx1ZVNvdXJjZTsKICAgICBmcmllbmQgY2xhc3MgU3BlY2lhbGl6ZWRUaHVua0pJVDsKICNpZiBF
TkFCTEUoREZHX0pJVCkKLSAgICBmcmllbmQgY2xhc3MgREZHOjpBc3NlbWJseUhlbHBlcnM7CiAg
ICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6
SklUQ29kZUdlbmVyYXRvcjsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpKU1ZhbHVlU291cmNlOwog
ICAgIGZyaWVuZCBjbGFzcyBERkc6Ok9TUkV4aXRDb21waWxlcjsKICAgICBmcmllbmQgY2xhc3Mg
REZHOjpTcGVjdWxhdGl2ZUpJVDsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212101</attachid>
            <date>2013-09-19 14:48:25 -0700</date>
            <delta_ts>2013-09-19 21:34:45 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>262492</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2MTE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBA
CisyMDEzLTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBDQ2FsbEhlbHBlcnMgYW5kIEFzc2VtYmx5SGVscGVycyBpbnRvIGppdC8gYW5kIGhhdmUg
SlNJbnRlcmZhY2VKSVQgdXNlIHRoZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMTYzNworCisgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IE1pY2hh
ZWwgU2Fib2ZmLgorICAgICAgICAKKyAgICAgICAgQWxzbyBtb3ZlZCBHUFJJbmZvL0ZQUkluZm8g
aW50byBqaXQvLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL1Zh
bHVlUmVjb3ZlcnkuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6ZHVtcEluQ29udGV4
dCk6CisgICAgICAgICogZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9E
RkdCaW5hcnlTd2l0Y2guaDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBkZmcv
REZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHRlBSSW5mby5oOiBSZW1vdmVk
LgorICAgICAgICAqIGRmZy9ERkdHUFJJbmZvLmg6IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RG
R0dyYXBoLmNwcDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmg6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oOgorICAgICAgICAqIGRmZy9E
RkdSZWdpc3RlckJhbmsuaDoKKyAgICAgICAgKiBkZmcvREZHUmVnaXN0ZXJTZXQuaDoKKyAgICAg
ICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAgICogZGZnL0RGR1NpbGVudFJlZ2lzdGVy
U2F2ZVBsYW4uaDoKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHVmFyaWFibGVFdmVudC5jcHA6CisgICAgICAgICogZnRsL0ZUTENBcmd1bWVudEdldHRlci5o
OgorICAgICAgICAoSlNDOjpGVEw6OkNBcmd1bWVudEdldHRlcjo6Q0FyZ3VtZW50R2V0dGVyKToK
KyAgICAgICAgKEpTQzo6RlRMOjpDQXJndW1lbnRHZXR0ZXI6OmxvYWROZXh0OCk6CisgICAgICAg
IChKU0M6OkZUTDo6Q0FyZ3VtZW50R2V0dGVyOjpsb2FkTmV4dDMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpDQXJndW1lbnRHZXR0ZXI6OmxvYWROZXh0NjQpOgorICAgICAgICAoSlNDOjpGVEw6OkNB
cmd1bWVudEdldHRlcjo6bG9hZE5leHRQdHIpOgorICAgICAgICAoSlNDOjpGVEw6OkNBcmd1bWVu
dEdldHRlcjo6bG9hZE5leHREb3VibGUpOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoK
KyAgICAgICAgKiBmdGwvRlRMRXhpdFRodW5rR2VuZXJhdG9yLmg6CisgICAgICAgICogZnRsL0ZU
TExpbmsuY3BwOgorICAgICAgICAqIGZ0bC9GVExUaHVua3MuY3BwOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fzc2VtYmx5SGVscGVycy5jcHAuCisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVy
cy5oLgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OkFzc2VtYmx5SGVscGVycyk6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAgICAgKiBqaXQv
Q0NhbGxIZWxwZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0NhbGxIZWxwZXJzLmguCisgICAgICAgICogaml0L0ZQUkluZm8uaDogQ29waWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmguCisgICAgICAgIChXVEY6OnByaW50
SW50ZXJuYWwpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oLgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpKSVQpOgor
ICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAg
ICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNl
SklULmg6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjpKU0ludGVyZmFjZUpJVCk6Cisg
ICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lh
bGl6ZWRUaHVua0pJVDo6U3BlY2lhbGl6ZWRUaHVua0pJVCk6CisgICAgICAgIChKU0M6OlNwZWNp
YWxpemVkVGh1bmtKSVQ6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3Jz
LmNwcDoKKyAgICAgICAgKEpTQzo6bGlua0ZvckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnZp
cnR1YWxGb3JHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpzdHJpbmdMZW5ndGhUcmFtcG9saW5l
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6YXJpdHlGaXh1cCk6CisgICAgICAgIChKU0M6OmNoYXJDb2RlQXRUaHVua0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OmNoYXJBdFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
ZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpzcXJ0VGh1bmtHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpmbG9vclRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Y2VpbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cm91bmRUaHVua0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OmV4cFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bG9n
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphYnNUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OnBvd1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6aW11bFRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmg6CisKIDIwMTMtMDktMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIFN1YnN0aXR1dGUgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCkg
Zm9yIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1NjExOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNiBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAogICAgIGRm
Zy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdBcnJheU1v
ZGUuY3BwCi0gICAgZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKICAgICBkZmcvREZHQXRUYWls
QWJzdHJhY3RTdGF0ZS5jcHAKICAgICBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5j
cHAKICAgICBkZmcvREZHQmFzaWNCbG9jay5jcHAKQEAgLTIwOSw2ICsyMDgsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKICAg
ICBpbnRlcnByZXRlci9WTUluc3BlY3Rvci5jcHAKIAorICAgIGppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCiAgICAgaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwCiAgICAgaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5j
cHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZp
c2lvbiAxNTYxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtMTkyLDggKzE5Miw2IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggXAotCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcCBcCi0JU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgXApAQCAtMjA4LDcgKzIwNiw2
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnJhbmNoRGlyZWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJz
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRv
clNsb3dQYXRoR2VuZXJhdG9yLmggXApAQCAtMjYxLDcgKzI1OCw2IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlVXNlc1N0cnVjdHVyZS5oIFwKLQlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGYWlsZWRGaW5hbGl6ZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zh
aWxlZEZpbmFsaXplci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpbHRyYXRp
b25SZXN1bHQuaCBcCkBAIC0yNzQsNyArMjcwLDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaExpdmVuZXNzQW5hbHlzaXNQ
aGFzZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hMaXZlbmVzc0Fu
YWx5c2lzUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9u
SW5mby5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oIFwKQEAgLTYwNCwxNCArNTk5LDE5IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVQcmVmaXguaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NvbXBhY3RK
SVRDb2RlTWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHVi
Um91dGluZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHVi
Um91dGluZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRW
TVBvb2wuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJp
dGhtZXRpYzMyXzY0LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnBy
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNp
b24gMTU2MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTExNyw3ICsxMTcsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBkZmcvREZHQWJzdHJh
Y3RWYWx1ZS5jcHAgXAogICAgIGRmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNw
cCBcCiAgICAgZGZnL0RGR0FycmF5TW9kZS5jcHAgXAotICAgIGRmZy9ERkdBc3NlbWJseUhlbHBl
cnMuY3BwIFwKICAgICBkZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAgXAogICAgIGRmZy9E
RkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0Jhc2ljQmxvY2su
Y3BwIFwKQEAgLTIwNiw2ICsyMDUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAgXAogICAgIGludGVycHJldGVyL0pTU3RhY2suY3BwIFwKICAgICBpbnRl
cnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIFwKKyAgICBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBc
CiAgICAgaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwIFwKICAgICBqaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
Y3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNp
b24gMTU2MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2Miw3
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxKU1N0YWNrLmNwcCIg
Lz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxTdGFja1Zpc2l0b3Iu
Y3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXFZNSW5zcGVj
dG9yLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcQXNzZW1ibHlIZWxw
ZXJzLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcQ2xvc3VyZUNhbGxT
dHViUm91dGluZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEV4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxH
Q0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIiAvPg0KQEAgLTc1MSwxMCArNzUyLDE0IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxSZWdpc3Rlci5oIiAvPg0KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXFN0YWNrVmlzaXRvci5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXFZNSW5zcGVjdG9yLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEFzc2VtYmx5SGVscGVycy5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxDQ2FsbEhlbHBlcnMuaCIgLz4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxDb21wYWN0SklUQ29kZU1hcC5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxFeGVjdXRhYmxlQWxsb2NhdG9yLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEZQUkluZm8uaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxqaXRcR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEdQUkluZm8uaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxqaXRcSG9zdENhbGxSZXR1cm5WYWx1ZS5oIiAvPg0KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGppdFxKSVQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxq
aXRcSklUQ29kZS5oIiAvPg0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxNTYxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxMSBA
QAogCQkwRjIzNUJFRDE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkU5
MTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwICovOyB9OwogCQkw
RjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIzNUJFQTE3MTc4RTcz
MDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8q
IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYyNEU1NDAxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTUzQjE3RUE5
RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCAqLzsgfTsKKwkJMEYyNEU1NDExN0VB
OUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1M0MxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2Vt
Ymx5SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMjRFNTQyMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTNEMTdFQTlGNTkw
MEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjI0RTU0MzE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1M0Ux
N0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjI0RTU0NDE3RUE5RjU5MDBBQkIyMTcgLyogR1BSSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1
M0YxN0VBOUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZH
Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjU2QzM0MTYyN0IwQUEwMDdGMjc4MyAvKiBE
RkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUz
RiAvKiBHQ0luY29taW5nUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QTgxN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdS
ZWZDb3VudGVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYyQjY2QUQxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
QjY2QTkxN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjIsNyAr
MjY3LDYgQEAKIAkJMEY3NjZENDQxNUIyQTNDMDAwOEYzNjNFIC8qIERGR1JlZ2lzdGVyU2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQ0MjE1
QjJBM0JEMDA4RjM2M0UgLyogREZHUmVnaXN0ZXJTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjc2NkQ0NjE1QjM3MDFGMDA4RjM2M0UgLyog
REZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQ0NTE1QjM3MDFEMDA4RjM2M0UgLyogREZHU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3
MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLzsgfTsKLQkJMEY3
QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIx
IC8qIERGR0NDYWxsSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgy
RTFGMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNE
QjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29tbW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MDIzRUExNjEzODMy
QjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNDAsOCAr
MzQ0LDYgQEAKIAkJMEZCRTBGNzYxNkMxREIwRjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZC
RTBGNkYxNkMxREIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuY3BwICovOyB9Owog
CQkwRkJFMEY3NzE2QzFEQjEyMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRTBGNzAxNkMxREIw
MTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyog
REZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZDMDk3NjgxNDY4QTZFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkMwOTc2RDE0NjhBQjRFMDBD
RjI0NDIgLyogREZHQXNzZW1ibHlIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc2QzE0NjhBQjRBMDBDRjI0NDIgLyogREZHQXNzZW1i
bHlIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJMEZDMDk3NkUxNDY4QUI1MTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc2QjE0
NjhBQjRBMDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxwZXJzLmNwcCAqLzsgfTsKIAkJMEZDMDk3
NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3NkYxNDY5M0FFRjAwQ0YyNDQy
IC8qIERGR09TUkV4aXRDb21waWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0
Q29tcGlsZXI2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkMwOTc3MDE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
ICovOyB9OwogCQkwRkMwOTc3NjE0Njk0M0IwMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVy
MzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZDMDk3NzUxNDY5NDNBRDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcCAq
LzsgfTsKQEAgLTcyNSw4ICs3MjcsNiBAQAogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyog
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJN
djcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4
NkFFNjRBOTEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE2MTM1RTVFMUMwMDk2
MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2QUU2NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4NkFFNkM0RDEzNkExMUU0MDA5NjMw
MTIgLyogREZHRlBSSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZBRTZDNEIxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4NkFFNkM0RTEzNkEx
MUU0MDA5NjMwMTIgLyogREZHR1BSSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZBRTZDNEMxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0dQUkluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkI1
ODI2NzE0RDI3OTZDMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCNTgyMkUxNEQyMzczQjAwQTlDMzA2IC8q
IENvZGVQcm9maWxlLmNwcCAqLzsgfTsKIAkJODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENv
ZGVQcm9maWxpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODYwM0NFRjIxNEM3NTQ2NDAwQUU1OUUzIC8qIENvZGVQcm9maWxpbmcuY3BwICovOyB9
OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUzODFCMDA1
NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CkBAIC0xMzEzLDYgKzEzMTMsMTEgQEAKIAkJ
MEYyMzVCRTkxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0UHJlcGFyYXRpb24u
Y3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMjM1QkVBMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJl
cGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdFBy
ZXBhcmF0aW9uLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdFByZXBhcmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtS
ZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyNEU1
M0IxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3NlbWJseUhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxw
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VtYmx5SGVscGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTUzRDE3RUE5RjU5MDBBQkIyMTcg
LyogQ0NhbGxIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENDYWxs
SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTUzRTE3RUE5RjU5
MDBBQkIyMTcgLyogRlBSSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
UFJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjRFNTNGMTdFQTlGNTkw
MEFCQjIxNyAvKiBHUFJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
UkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNTZDMzQxNjI3QjBBQTAw
N0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRo
R2VuZXJhdG9yLmg7IHBhdGggPSBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5l
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQjY2QTgxN0I2QjUzRDAw
QTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDSW5jb21p
bmdSZWZDb3VudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkI2NkE5MTdC
NkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNDYyLDcgKzE0NjcsNiBAQAogCQkwRjc2NkQ0NTE1QjM3MDFEMDA4RjM2M0Ug
LyogREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oOyBwYXRoID0gZGZnL0RGR1Nj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
Rjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5nQ291bnRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGN0IyOTQ4MTRDM0NEMjMwMDdD
M0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHQ0NhbGxIZWxwZXJzLmg7IHBhdGggPSBkZmcvREZHQ0NhbGxIZWxwZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZh
bEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQ5LDggKzE1NTMsNiBAQAog
CQkwRkJFMEY2RjE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdVbmlmaWNhdGlvblBoYXNlLmNw
cDsgcGF0aCA9IGRmZy9ERkdVbmlmaWNhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZCRTBGNzAxNkMxREIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVW5pZmljYXRpb25QaGFz
ZS5oOyBwYXRoID0gZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZDMDk3NjgxNDY4QTZFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdC5oOyBwYXRoID0gZGZnL0RG
R09TUkV4aXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZDMDk3NkIxNDY4QUI0
QTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdBc3NlbWJseUhlbHBlcnMuY3BwOyBwYXRoID0gZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQzA5NzZD
MTQ2OEFCNEEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHQXNzZW1ibHlIZWxwZXJzLmg7IHBhdGggPSBkZmcvREZHQXNz
ZW1ibHlIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzZGMTQ2
OTNBRUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyLmg7IHBhdGggPSBkZmcvREZHT1NSRXhp
dENvbXBpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzcwMTQ2OTNB
RUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA7IHBhdGggPSBkZmcv
REZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkMwOTc3NTE0Njk0M0FEMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyMzJf
NjQuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MTcsOCArMTkxOSw2IEBACiAJCTg2QUREMTQ0MEZEREVB
OTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODZBRTY0QTYxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyU0g0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBT
SDRBc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU0g0QXNzZW1i
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2QUU2QzRCMTM2QTExRTQwMDk2
MzAxMiAvKiBERkdGUFJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R0ZQUkluZm8uaDsgcGF0aCA9IGRmZy9ERkdGUFJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg2QUU2QzRDMTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0dQUkluZm8uaDsgcGF0aCA9IGRmZy9ERkdH
UFJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjJDMTREMjJGNUYw
MEE5QzMwNiAvKiBQcm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJvZmlsZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
QjU4MjJFMTREMjM3M0IwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2RlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2QjU4MjJGMTREMjM3M0IwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlUHJvZmlsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjcwNCw2ICsyNzA0LDExIEBACiAJCTE0MjlEOTJDMEVEMjJE
NzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTBGMjRFNTNCMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuY3Bw
ICovLAorCQkJCTBGMjRFNTNDMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuaCAq
LywKKwkJCQkwRjI0RTUzRDE3RUE5RjU5MDBBQkIyMTcgLyogQ0NhbGxIZWxwZXJzLmggKi8sCisJ
CQkJMEYyNEU1M0UxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCAqLywKKwkJCQkwRjI0RTUz
RjE3RUE5RjU5MDBBQkIyMTcgLyogR1BSSW5mby5oICovLAogCQkJCTBGNzNEN0FCMTY1QTE0MkEw
MEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLywKIAkJCQkwRjczRDdBQzE2
NUExNDJBMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oICovLAogCQkJCTBGRDgy
RTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMzQ2NSw4
ICszNDcwLDYgQEAKIAkJCQkwRjA1QzNCMjE2ODNDRjhGMDBCQUY0NUIgLyogREZHQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvci5oICovLAogCQkJCTBGNjM5NDgxMTVFNDgxMTQwMDZBNTk3QyAvKiBE
RkdBcnJheU1vZGUuY3BwICovLAogCQkJCTBGNjM5NDgyMTVFNDgxMTQwMDZBNTk3QyAvKiBERkdB
cnJheU1vZGUuaCAqLywKLQkJCQkwRkMwOTc2QjE0NjhBQjRBMDBDRjI0NDIgLyogREZHQXNzZW1i
bHlIZWxwZXJzLmNwcCAqLywKLQkJCQkwRkMwOTc2QzE0NjhBQjRBMDBDRjI0NDIgLyogREZHQXNz
ZW1ibHlIZWxwZXJzLmggKi8sCiAJCQkJQTdEOUEyOEYxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0F0
VGFpbEFic3RyYWN0U3RhdGUuY3BwICovLAogCQkJCUE3RDlBMjkwMTdBMEJDNzQwMEVFMjYxOCAv
KiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmggKi8sCiAJCQkJMEY3MTRDQTExNkVBOTJFRDAwRjNF
QkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwICovLApAQCAtMzQ4NCw3ICsz
NDg3LDYgQEAKIAkJCQkwRjI1NkMzNDE2MjdCMEFBMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxs
b2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCAqLywKIAkJCQkwRkQ4MkUxRTE0MTcyQzJGMDAxNzlD
OTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCAqLywKIAkJCQkwRkQ4MkUxRjE0MTcyQzJGMDAxNzlD
OTQgLyogREZHQ2FwYWJpbGl0aWVzLmggKi8sCi0JCQkJMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIx
IC8qIERGR0NDYWxsSGVscGVycy5oICovLAogCQkJCTBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAv
KiBERkdDRkFQaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R0NGQVBoYXNlLmggKi8sCiAJCQkJMEYzQjNBMjQxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1Np
bXBsaWZpY2F0aW9uUGhhc2UuY3BwICovLApAQCAtMzU0NSw5ICszNTQ3LDcgQEAKIAkJCQlBN0Q4
OUNFOTE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuaCAqLywKIAkJCQlBN0Q4OUNF
QTE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwICov
LAogCQkJCUE3RDg5Q0VCMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaExpdmVuZXNzQW5hbHlz
aXNQaGFzZS5oICovLAotCQkJCTg2QUU2QzRCMTM2QTExRTQwMDk2MzAxMiAvKiBERkdGUFJJbmZv
LmggKi8sCiAJCQkJODZFQzlEQjYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dlbmVyYXRpb25JbmZv
LmggKi8sCi0JCQkJODZBRTZDNEMxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0dQUkluZm8uaCAqLywK
IAkJCQk4NkVDOURCNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwICovLAogCQkJCTg2
RUM5REI4MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oICovLAogCQkJCUE3MDREOTAwMTdB
MEJBQTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgKi8sCkBAIC0zOTA5
LDYgKzM5MDksNyBAQAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93
UGF0aHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTNBMzMyMTdBMUYxRUUwMDhDRjZGMyAvKiBD
b21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkUzOTE0
MUFCMTREMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMjRFNTQ0MTdFQTlGNTkwMEFCQjIxNyAvKiBHUFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0U1QTNBODE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDM0Y0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb21wbGV0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkRCMkNFQTE3NDg5NkM3MDA3QjNDMUIgLyogQ29uY3VycmVudEpJ
VExvY2suaCBpbiBIZWFkZXJzICovLApAQCAtMzk0OSw3ICszOTUwLDYgQEAKIAkJCQkwRjE2MDE1
RTE1NjE5OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYwNUMzQjQxNjgzQ0Y5MjAwQkFGNDVCIC8qIERGR0FycmF5aWZ5
U2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjM5NDg1MTVFNDgxMUIw
MDZBNTk3QyAvKiBERkdBcnJheU1vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGQzA5NzZEMTQ2
OEFCNEUwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3RDlBMjk1MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjcxNENBNTE2RUE5MkYyMDBGM0VCRUIgLyogREZHQmFja3dhcmRz
UHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzYxNDNGQ0QzQjAw
NjhCNzdDIC8qIERGR0Jhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovLApAQCAtMzk2MCw3ICszOTYw
LDYgQEAKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3
QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEY3QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjNCM0EyODE1NDRDOTk3MDAzRUQwRkYgLyogREZHQ0ZHU2lt
cGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyNDAxN0EwQkJGRDAw
QThEQjgxIC8qIERGR0Nsb2JiZXJpemUuaCBpbiBIZWFkZXJzICovLApAQCAtMzk5NCw5ICszOTkz
LDcgQEAKIAkJCQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRjgxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9y
bWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQTE3QTBCOENDMDA3NzNBRDggLyogREZH
Rmx1c2hMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTg2QUU2QzRE
MTM2QTExRTQwMDk2MzAxMiAvKiBERkdGUFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVD
OURDNjEzMjhERjgyMDAyQjJBRDcgLyogREZHR2VuZXJhdGlvbkluZm8uaCBpbiBIZWFkZXJzICov
LAotCQkJCTg2QUU2QzRFMTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NkVDOURDODEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3MDREOTA2MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDMjExNTFFODAzQjAwQ0Q4OTEwIC8q
IERGR0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCkBAIC00MTM4LDYgKzQxMzUsNyBAQAog
CQkJCUMyNEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzJFNTI2QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjRFNTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBG
UFJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyog
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1Qjcx
IC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVE
OEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQyMTIs
NiArNDIxMCw3IEBACiAJCQkJQkMxOEM0MUYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTRnVuY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0
aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjExN0I2QjVBQjAwQTdBRTNG
IC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjI0RTU0
MTE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZGMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjMxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCNjZGNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQzODAsNiArNDM3OSw3IEBACiAJCQkJMEZC
MTA1OEMxNjc1NDgzMzAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCMTA1OEUxNjc1NDgzQTAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdFNpdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMTM5MTJDMTY3NzFDM0QwMDlDQ0IwNyAvKiBQcm9maWxlclBy
b2ZpbGVkQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjI0RTU0MjE3RUE5RjU5MDBB
QkIyMTcgLyogQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0ZCNjEwMDEwNDBD
MzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Qzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2MTU4QUIzMTU1QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBp
biBIZWFkZXJzICovLApAQCAtNDg5OSw3ICs0ODk5LDYgQEAKIAkJCQkwRjU1QzE5NDE3Mjc2RTQ2
MDBDRUFCRkQgLyogREZHQWJzdHJhY3RWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE2
MDE1RDE1NjE5OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYzOTQ4NDE1RTQ4MTE4MDA2QTU5N0MgLyogREZHQXJy
YXlNb2RlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGQzA5NzZFMTQ2OEFCNTEwMENGMjQ0MiAv
KiBERkdBc3NlbWJseUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEOUEyOTQxN0Ew
QkM3NDAwRUUyNjE4IC8qIERGR0F0VGFpbEFic3RyYWN0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY3MTRDQTQxNkVBOTJGMDAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00OTYyLDYgKzQ5NjEsNyBAQAog
CQkJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkVEMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdP
U1JFeGl0UHJlcGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUIxNEVGOTBB
RDAwQzcyNTMyIC8qIERGR1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMjRFNTQwMTdF
QTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTc4QTk3N0ExNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZCRTBGNzQxNkMxREIwOTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHJldmlzaW9u
IDE1NjExOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNkZWZpbmUgVmFsdWVSZWNvdmVy
eV9oCiAKICNpbmNsdWRlICJEYXRhRm9ybWF0LmgiCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2lu
Y2x1ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTMyMywyOSAr
MzI1LDI5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG91dC5wcmludGYoIihkb3VibGUpIik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgSW5HUFI6Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCIlJXIlZCIsIGdwcigpKTsKKyAgICAgICAgICAgIG91dC5wcmludChncHIoKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAg
ICAgICAgICBvdXQucHJpbnRmKCJpbnQzMiglJXIlZCkiLCBncHIoKSk7CisgICAgICAgICAgICBv
dXQucHJpbnQoImludDMyKCIsIGdwcigpLCAiKSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50ZigiaW50
NTIoJSVyJWQpIiwgZ3ByKCkpOworICAgICAgICAgICAgb3V0LnByaW50KCJpbnQ1MygiLCBncHIo
KSwgIikiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0
SW50NTJJbkdQUjoKLSAgICAgICAgICAgIG91dC5wcmludGYoInN0cmljdEludDUyKCUlciVkKSIs
IGdwcigpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgic3RyaWN0SW50NTIoIiwgZ3ByKCksICIp
Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQ
UjoKLSAgICAgICAgICAgIG91dC5wcmludGYoImJvb2woJSVyJWQpIiwgZ3ByKCkpOworICAgICAg
ICAgICAgb3V0LnByaW50KCJib29sKCIsIGdwcigpLCAiKSIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjYXNlIFVJbnQzMkluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50ZigidWlu
dDMyKCUlciVkKSIsIGdwcigpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgidWludDMyKCIsIGdw
cigpLCAiKSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIEluRlBSOgotICAg
ICAgICAgICAgb3V0LnByaW50ZigiJSVmciVkIiwgZnByKCkpOworICAgICAgICAgICAgb3V0LnBy
aW50KGZwcigpKTsKICAgICAgICAgICAgIHJldHVybjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQog
ICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAgIG91dC5wcmludGYoInBhaXIoJSVyJWQs
ICUlciVkKSIsIHRhZ0dQUigpLCBwYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgb3V0LnByaW50
KCJwYWlyKCIsIHRhZ0dQUigpLCAiLCAiLCBwYXlsb2FkR1BSKCksICIpIik7CiAgICAgICAgICAg
ICByZXR1cm47CiAjZW5kaWYKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3Bw
CShyZXZpc2lvbiAxNTYxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2Vt
Ymx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVycy5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQp
Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotRXhlY3V0YWJsZUJhc2UqIEFz
c2VtYmx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
KQotewotICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIHJldHVy
biBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci0gICAgCi0gICAgcmV0dXJuIGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpOwotfQotCi1WZWN0b3I8Qnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29kZU1hcEZv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBBU1NFUlQoY29kZUJsb2NrID09IGNvZGVC
bG9jay0+YmFzZWxpbmVWZXJzaW9uKCkpOwotICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUo
KSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+aml0Q29k
ZU1hcCgpKTsKLSAgICAKLSAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFu
ZE1hY2hpbmVPZmZzZXQ+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX2RlY29kZWRDb2RlTWFwcy5h
ZGQoY29kZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PigpKTsKLSAgICAK
LSAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGNvZGVCbG9jay0+aml0Q29kZU1h
cCgpLT5kZWNvZGUocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Ci0gICAgCi0gICAgcmV0dXJuIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi12
b2lkIEFzc2VtYmx5SGVscGVyczo6c2V0U2FtcGxpbmdGbGFnKGludDMyX3QgZmxhZykKLXsKLSAg
ICBBU1NFUlQoZmxhZyA+PSAxKTsKLSAgICBBU1NFUlQoZmxhZyA8PSAzMik7Ci0gICAgb3IzMihU
cnVzdGVkSW1tMzIoMXUgPDwgKGZsYWcgLSAxKSksIEFic29sdXRlQWRkcmVzcyhTYW1wbGluZ0Zs
YWdzOjphZGRyZXNzT2ZGbGFncygpKSk7Ci19Ci0KLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjbGVh
clNhbXBsaW5nRmxhZyhpbnQzMl90IGZsYWcpCi17Ci0gICAgQVNTRVJUKGZsYWcgPj0gMSk7Ci0g
ICAgQVNTRVJUKGZsYWcgPD0gMzIpOwotICAgIGFuZDMyKFRydXN0ZWRJbW0zMih+KDF1IDw8IChm
bGFnIC0gMSkpKSwgQWJzb2x1dGVBZGRyZXNzKFNhbXBsaW5nRmxhZ3M6OmFkZHJlc3NPZkZsYWdz
KCkpKTsKLX0KLSNlbmRpZgotCi0jaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQotI2lmIFVTRShK
U1ZBTFVFNjQpCi12b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNJbnQzMihHUFJSZWcg
Z3ByKQotewotI2lmIENQVShYODZfNjQpCi0gICAgSnVtcCBjaGVja0ludDMyID0gYnJhbmNoNjQo
QmVsb3dPckVxdWFsLCBncHIsIFRydXN0ZWRJbW02NChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4
RkZGRkZGRkZ1KSkpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0ludDMyLmxpbmsodGhp
cyk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShncHIpOwotI2VuZGlmCi19Ci0KLXZvaWQgQXNz
ZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnIGdwcikKLXsKLSAgICBKdW1w
IGNoZWNrSlNJbnQzMiA9IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0pTSW50MzIu
bGluayh0aGlzKTsKLX0KLQotdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNOdW1i
ZXIoR1BSUmVnIGdwcikKLXsKLSAgICBKdW1wIGNoZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKTsKLSAgICBicmVha3BvaW50KCk7Ci0gICAgY2hlY2tKU051bWJlci5saW5rKHRoaXMpOwot
fQotCi12b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcgZ3By
KQotewotICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgSnVtcCBjaGVja0pTTnVtYmVy
ID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgY2hlY2tKU0ludDMyLmxpbmsodGhpcyk7Ci0gICAg
YnJlYWtwb2ludCgpOwotICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsKLX0KLQotdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzQ2VsbChHUFJSZWcgZ3ByKQotewotICAgIEp1bXAg
Y2hlY2tDZWxsID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgYnJlYWtwb2ludCgpOwotICAgIGNoZWNrQ2VsbC5s
aW5rKHRoaXMpOwotfQotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLXZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjpqaXRBc3NlcnRJc0ludDMyKEdQUlJlZyBncHIpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGdw
cik7Ci19Ci0KLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVn
IGdwcikKLXsKLSAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDMyKEVxdWFsLCBncHIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBj
aGVja0pTSW50MzIubGluayh0aGlzKTsKLX0KLQotdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFz
c2VydElzSlNOdW1iZXIoR1BSUmVnIGdwcikKLXsKLSAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJy
YW5jaDMyKEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAg
IEp1bXAgY2hlY2tKU0RvdWJsZSA9IGJyYW5jaDMyKEJlbG93LCBncHIsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpMb3dlc3RUYWcpKTsKLSAgICBicmVha3BvaW50KCk7Ci0gICAgY2hlY2tKU0ludDMy
LmxpbmsodGhpcyk7Ci0gICAgY2hlY2tKU0RvdWJsZS5saW5rKHRoaXMpOwotfQotCi12b2lkIEFz
c2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcgZ3ByKQotewotICAgIEp1
bXAgY2hlY2tKU0RvdWJsZSA9IGJyYW5jaDMyKEJlbG93LCBncHIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpMb3dlc3RUYWcpKTsKLSAgICBicmVha3BvaW50KCk7Ci0gICAgY2hlY2tKU0RvdWJsZS5s
aW5rKHRoaXMpOwotfQotCi12b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNDZWxsKEdQ
UlJlZyBncHIpCi17Ci0gICAgSnVtcCBjaGVja0NlbGwgPSBicmFuY2gzMihFcXVhbCwgZ3ByLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBj
aGVja0NlbGwubGluayh0aGlzKTsKLX0KLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQotCi12
b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKQotewotICAg
IEp1bXAgY2hlY2tDRlIgPSBicmFuY2hUZXN0UHRyKFplcm8sIEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBUcnVzdGVkSW1tMzIoNykpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0NG
Ui5saW5rKHRoaXMpOwotfQotI2VuZGlmIC8vIERGR19FTkFCTEUoSklUX0FTU0VSVCkKLQotfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAko
cmV2aXNpb24gMTU2MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJs
eUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MzIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR0Fzc2Vt
Ymx5SGVscGVyc19oCi0jZGVmaW5lIERGR0Fzc2VtYmx5SGVscGVyc19oCi0KLSNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCi0jaW5jbHVkZSAiREZHRlBSSW5mby5oIgotI2luY2x1ZGUgIkRGR0dQUkluZm8uaCIK
LSNpbmNsdWRlICJERkdKSVRDb2RlLmgiCi0jaW5jbHVkZSAiREZHTm9kZS5oIgotI2luY2x1ZGUg
IlZNLmgiCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewotCi10eXBlZGVmIHZvaWQgKCpWX0RGR0RlYnVnT3BlcmF0aW9uX0VQUCko
RXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKTsKLQotY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVi
bGljIE1hY3JvQXNzZW1ibGVyIHsKLXB1YmxpYzoKLSAgICBBc3NlbWJseUhlbHBlcnMoVk0qIHZt
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICAgICAgOiBtX3ZtKHZtKQotICAgICAgICAsIG1f
Y29kZUJsb2NrKGNvZGVCbG9jaykKLSAgICAgICAgLCBtX2Jhc2VsaW5lQ29kZUJsb2NrKGNvZGVC
bG9jayA/IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkgOiAwKQotICAgIHsKLSAgICAgICAg
aWYgKG1fY29kZUJsb2NrKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9iYXNlbGluZUNvZGVCbG9j
ayk7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fYmFzZWxpbmVDb2RlQmxvY2stPmFsdGVybmF0aXZl
KCkpOwotICAgICAgICAgICAgQVNTRVJUKG1fYmFzZWxpbmVDb2RlQmxvY2stPmppdFR5cGUoKSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2soKSB7IHJldHVybiBtX2NvZGVCbG9jazsgfQotICAgIFZNKiB2bSgp
IHsgcmV0dXJuIG1fdm07IH0KLSAgICBBc3NlbWJsZXJUeXBlX1QmIGFzc2VtYmxlcigpIHsgcmV0
dXJuIG1fYXNzZW1ibGVyOyB9Ci0gICAgCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKLSAg
ICB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJSZWcgcmVnKQotICAgIHsK
LSAgICAgICAgcG9wKHJlZyk7Ci0gICAgfQotCi0gICAgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVz
c0JlZm9yZVJldHVybihHUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgcHVzaChyZWcpOwotICAg
IH0KLQotICAgIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBh
ZGRyZXNzKQotICAgIHsKLSAgICAgICAgcHVzaChhZGRyZXNzKTsKLSAgICB9Ci0jZW5kaWYgLy8g
Q1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKLQotI2lmIENQVShBUk0pCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKLSAg
ICB7Ci0gICAgICAgIG1vdmUobGlua1JlZ2lzdGVyLCByZWcpOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklE
IHJlZykKLSAgICB7Ci0gICAgICAgIG1vdmUocmVnLCBsaW5rUmVnaXN0ZXIpOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihB
ZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIGxpbmtSZWdp
c3Rlcik7Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBDUFUoTUlQUykKLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQotICAg
IHsKLSAgICAgICAgbW92ZShyZXR1cm5BZGRyZXNzUmVnaXN0ZXIsIHJlZyk7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJl
Z2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgbW92ZShyZWcsIHJldHVybkFkZHJlc3NSZWdp
c3Rlcik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRy
ZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWRQdHIo
YWRkcmVzcywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIENQ
VShTSDQpCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChSZWdpc3RlcklEIHJlZykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c3ByKHJl
Zyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bGRzcHIocmVnKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVy
bkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9h
ZFB0ckxpbmtSZWcoYWRkcmVzcyk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lkIGVtaXRHZXRG
cm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5
LCBHUFJSZWcgdG8pCi0gICAgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKLSAgICB9Ci0g
ICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoR1BSUmVnIGZyb20sIEpTU3RhY2s6OkNh
bGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQotICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAg
ICAgICBzdG9yZTY0KGZyb20sIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVu
dHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwotI2Vsc2UKLSAgICAgICAgc3RvcmUzMihmcm9tLCBB
ZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3Rl
cikpKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZy
YW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRy
eSkKLSAgICB7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIodmFsdWUpLCBBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsK
LSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaElmTm90Q2VsbChHUFJSZWcgcmVnKQotICAgIHsKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCByZWcsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0jZWxzZQotICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZWcsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgCi0gICAgc3Rh
dGljIEFkZHJlc3MgYWRkcmVzc0ZvcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IHZpcnR1YWxSZWdpc3RlciAqIHNpemVvZihSZWdpc3RlcikpOwotICAgIH0KLSAgICBzdGF0aWMg
QWRkcmVzcyBhZGRyZXNzRm9yKGludCBvcGVyYW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
ZHJlc3NGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIEFkZHJlc3MgdGFnRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIpCi0gICAgewotICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgdmlydHVhbFJlZ2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgfQotICAgIHN0YXRp
YyBBZGRyZXNzIHRhZ0ZvcihpbnQgb3BlcmFuZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWdG
b3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIEFkZHJlc3MgcGF5bG9hZEZvcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIHZpcnR1YWxSZWdpc3RlciAqIHNpemVvZihSZWdpc3RlcikgKyBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKLSAgICB9Ci0gICAgc3Rh
dGljIEFkZHJlc3MgcGF5bG9hZEZvcihpbnQgb3BlcmFuZCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBwYXlsb2FkRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpOwotICAg
IH0KLQotICAgIEp1bXAgYnJhbmNoSWZOb3RPYmplY3QoR1BSUmVnIHN0cnVjdHVyZVJlZykKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywg
U3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBl
KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIEdQUlJlZyBzZWxlY3RTY3JhdGNoR1BSKEdQUlJlZyBw
cmVzZXJ2ZTEgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcgcHJlc2VydmUyID0gSW52YWxpZEdQUlJl
ZywgR1BSUmVnIHByZXNlcnZlMyA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTQgPSBJ
bnZhbGlkR1BSUmVnKQotICAgIHsKLSAgICAgICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJbmZvOjpy
ZWdUMCAmJiBwcmVzZXJ2ZTIgIT0gR1BSSW5mbzo6cmVnVDAgJiYgcHJlc2VydmUzICE9IEdQUklu
Zm86OnJlZ1QwICYmIHByZXNlcnZlNCAhPSBHUFJJbmZvOjpyZWdUMCkKLSAgICAgICAgICAgIHJl
dHVybiBHUFJJbmZvOjpyZWdUMDsKLQotICAgICAgICBpZiAocHJlc2VydmUxICE9IEdQUkluZm86
OnJlZ1QxICYmIHByZXNlcnZlMiAhPSBHUFJJbmZvOjpyZWdUMSAmJiBwcmVzZXJ2ZTMgIT0gR1BS
SW5mbzo6cmVnVDEgJiYgcHJlc2VydmU0ICE9IEdQUkluZm86OnJlZ1QxKQotICAgICAgICAgICAg
cmV0dXJuIEdQUkluZm86OnJlZ1QxOwotCi0gICAgICAgIGlmIChwcmVzZXJ2ZTEgIT0gR1BSSW5m
bzo6cmVnVDIgJiYgcHJlc2VydmUyICE9IEdQUkluZm86OnJlZ1QyICYmIHByZXNlcnZlMyAhPSBH
UFJJbmZvOjpyZWdUMiAmJiBwcmVzZXJ2ZTQgIT0gR1BSSW5mbzo6cmVnVDIpCi0gICAgICAgICAg
ICByZXR1cm4gR1BSSW5mbzo6cmVnVDI7Ci0KLSAgICAgICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJ
bmZvOjpyZWdUMyAmJiBwcmVzZXJ2ZTIgIT0gR1BSSW5mbzo6cmVnVDMgJiYgcHJlc2VydmUzICE9
IEdQUkluZm86OnJlZ1QzICYmIHByZXNlcnZlNCAhPSBHUFJJbmZvOjpyZWdUMykKLSAgICAgICAg
ICAgIHJldHVybiBHUFJJbmZvOjpyZWdUMzsKLQotICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVn
VDQ7Ci0gICAgfQotCi0gICAgLy8gQWRkIGEgZGVidWcgY2FsbC4gVGhpcyBjYWxsIGhhcyBubyBl
ZmZlY3Qgb24gSklUIGNvZGUgZXhlY3V0aW9uIHN0YXRlLgotICAgIHZvaWQgZGVidWdDYWxsKFZf
REZHRGVidWdPcGVyYXRpb25fRVBQIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKLSAgICB7Ci0g
ICAgICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7Ci0g
ICAgICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSBtX3ZtLT5zY3JhdGNoQnVmZmVy
Rm9yU2l6ZShzY3JhdGNoU2l6ZSk7Ci0gICAgICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBz
dGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7
Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzOyArK2kpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgc3RvcmU2NChH
UFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsKLSNlbHNlCi0gICAgICAgICAgICBz
dG9yZTMyKEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2VuZGlmCi0gICAg
ICAgIH0KLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZl
ciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86OnJlZ1QwKTsKLSAg
ICAgICAgICAgIHN0b3JlRG91YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVj
aCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUp
LCBHUFJJbmZvOjpyZWdUMCk7Ci0KLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUo
TUlQUykgfHwgQ1BVKFNINCkKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmd1bWVu
dCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIEdQUlJlZyBzY3Jh
dGNoID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSNlbGlmIENQVShYODYpCi0gICAg
ICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDApOwotICAgICAgICBwb2tlKFRy
dXN0ZWRJbW1QdHIoYXJndW1lbnQpLCAxKTsKLSAgICAgICAgcG9rZShUcnVzdGVkSW1tUHRyKGJ1
ZmZlciksIDIpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IEdQUkluZm86OnJlZ1QwOwotI2Vs
c2UKLSNlcnJvciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgotI2Vu
ZGlmCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihm
dW5jdGlvbikpLCBzY3JhdGNoKTsKLSAgICAgICAgY2FsbChzY3JhdGNoKTsKLQotICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEdQUkluZm86
OnJlZ1QwKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1
ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86OnJlZ1QwKTsK
LSAgICAgICAgICAgIGxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OnRvUmVnaXN0
ZXIoaSkpOwotICAgICAgICB9Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgIGxvYWQ2NChidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbHNl
Ci0gICAgICAgICAgICBsb2FkMzIoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7
Ci0jZW5kaWYKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRoZXNlIG1ldGhvZHMgSklUIGdl
bmVyYXRlIGR5bmFtaWMsIGRlYnVnLW9ubHkgY2hlY2tzIC0gYWtpbiB0byBBU1NFUlRzLgotI2lm
IERGR19FTkFCTEUoSklUX0FTU0VSVCkKLSAgICB2b2lkIGppdEFzc2VydElzSW50MzIoR1BSUmVn
KTsKLSAgICB2b2lkIGppdEFzc2VydElzSlNJbnQzMihHUFJSZWcpOwotICAgIHZvaWQgaml0QXNz
ZXJ0SXNKU051bWJlcihHUFJSZWcpOwotICAgIHZvaWQgaml0QXNzZXJ0SXNKU0RvdWJsZShHUFJS
ZWcpOwotICAgIHZvaWQgaml0QXNzZXJ0SXNDZWxsKEdQUlJlZyk7Ci0gICAgdm9pZCBqaXRBc3Nl
cnRIYXNWYWxpZENhbGxGcmFtZSgpOwotI2Vsc2UKLSAgICB2b2lkIGppdEFzc2VydElzSW50MzIo
R1BSUmVnKSB7IH0KLSAgICB2b2lkIGppdEFzc2VydElzSlNJbnQzMihHUFJSZWcpIHsgfQotICAg
IHZvaWQgaml0QXNzZXJ0SXNKU051bWJlcihHUFJSZWcpIHsgfQotICAgIHZvaWQgaml0QXNzZXJ0
SXNKU0RvdWJsZShHUFJSZWcpIHsgfQotICAgIHZvaWQgaml0QXNzZXJ0SXNDZWxsKEdQUlJlZykg
eyB9Ci0gICAgdm9pZCBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpIHsgfQotI2VuZGlmCi0K
LSAgICAvLyBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiBkb3VibGVzLCBhbmQgZG91Ymxl
cyBib3hlZCBhbmQgSlNWYWx1ZXMuCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBHUFJSZWcgYm94
RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJlZyBncHIpCi0gICAgewotICAgICAgICBtb3ZlRG91Ymxl
VG82NChmcHIsIGdwcik7Ci0gICAgICAgIHN1YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3RlciwgZ3ByKTsKLSAgICAgICAgaml0QXNzZXJ0SXNKU0RvdWJsZShncHIpOwotICAgICAgICBy
ZXR1cm4gZ3ByOwotICAgIH0KLSAgICBGUFJSZWcgdW5ib3hEb3VibGUoR1BSUmVnIGdwciwgRlBS
UmVnIGZwcikKLSAgICB7Ci0gICAgICAgIGppdEFzc2VydElzSlNEb3VibGUoZ3ByKTsKLSAgICAg
ICAgYWRkNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOwotICAgICAgICBt
b3ZlNjRUb0RvdWJsZShncHIsIGZwcik7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAgfQotICAg
IAotICAgIHZvaWQgYm94SW50NTIoR1BSUmVnIHNvdXJjZSwgR1BSUmVnIHRhcmdldCwgR1BSUmVn
IHNjcmF0Y2gsIEZQUlJlZyBmcFNjcmF0Y2gpCi0gICAgewotICAgICAgICAvLyBJcyBpdCBhbiBp
bnQzMj8KLSAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoc291cmNlLCBzY3JhdGNoKTsKLSAgICAg
ICAgSnVtcCBpc0ludDMyID0gYnJhbmNoNjQoRXF1YWwsIHNvdXJjZSwgc2NyYXRjaCk7Ci0gICAg
ICAgIAotICAgICAgICAvLyBOb3BlLCBpdCdzIG5vdCwgYnV0IHJlZ1QwIGNvbnRhaW5zIHRoZSBp
bnQ2NCB2YWx1ZS4KLSAgICAgICAgY29udmVydEludDY0VG9Eb3VibGUoc291cmNlLCBmcFNjcmF0
Y2gpOwotICAgICAgICBib3hEb3VibGUoZnBTY3JhdGNoLCB0YXJnZXQpOwotICAgICAgICBKdW1w
IGRvbmUgPSBqdW1wKCk7Ci0gICAgICAgIAotICAgICAgICBpc0ludDMyLmxpbmsodGhpcyk7Ci0g
ICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKHNvdXJjZSwgdGFyZ2V0KTsKLSAgICAgICAgb3I2NChH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRhcmdldCk7Ci0gICAgICAgIAotICAgICAg
ICBkb25lLmxpbmsodGhpcyk7Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBVU0UoSlNWQUxVRTMyXzY0
KQotICAgIHZvaWQgYm94RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBw
YXlsb2FkR1BSKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZVRvSW50cyhmcHIsIHBheWxvYWRH
UFIsIHRhZ0dQUik7Ci0gICAgfQotICAgIHZvaWQgdW5ib3hEb3VibGUoR1BSUmVnIHRhZ0dQUiwg
R1BSUmVnIHBheWxvYWRHUFIsIEZQUlJlZyBmcHIsIEZQUlJlZyBzY3JhdGNoRlBSKQotICAgIHsK
LSAgICAgICAgbW92ZUludHNUb0RvdWJsZShwYXlsb2FkR1BSLCB0YWdHUFIsIGZwciwgc2NyYXRj
aEZQUik7Ci0gICAgfQotI2VuZGlmCi0gICAgCi0gICAgZW51bSBFeGNlcHRpb25DaGVja0tpbmQg
eyBOb3JtYWxFeGNlcHRpb25DaGVjaywgSW52ZXJ0ZWRFeGNlcHRpb25DaGVjayB9OwotICAgIEp1
bXAgZW1pdEV4Y2VwdGlvbkNoZWNrKEV4Y2VwdGlvbkNoZWNrS2luZCBraW5kID0gTm9ybWFsRXhj
ZXB0aW9uQ2hlY2spCi0gICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgcmV0dXJuIGJyYW5j
aFRlc3Q2NChraW5kID09IE5vcm1hbEV4Y2VwdGlvbkNoZWNrID8gTm9uWmVybyA6IFplcm8sIEFi
c29sdXRlQWRkcmVzcyh2bSgpLT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkpOwotI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICByZXR1cm4gYnJhbmNoMzIoa2luZCA9PSBOb3JtYWxFeGNlcHRpb25D
aGVjayA/IE5vdEVxdWFsIDogRXF1YWwsIEFic29sdXRlQWRkcmVzcyhyZWludGVycHJldF9jYXN0
PGNoYXIqPih2bSgpLT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNW
YWx1ZSwgdS5hc0JpdHMudGFnKSksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFn
KSk7Ci0jZW5kaWYKLSAgICB9Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfQ09VTlRFUlMpCi0gICAg
c3RhdGljIHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVyJiBqaXQsIEFic3RyYWN0U2FtcGxp
bmdDb3VudGVyJiBjb3VudGVyLCBpbnQzMl90IGluY3JlbWVudCA9IDEpCi0gICAgewotICAgICAg
ICBqaXQuYWRkNjQoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3Vu
dGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwotICAgIH0KLSAgICB2b2lkIGVtaXRDb3VudChBYnN0
cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgaW50MzJfdCBpbmNyZW1lbnQgPSAxKQotICAg
IHsKLSAgICAgICAgYWRkNjQoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVz
cyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwotICAgIH0KLSNlbmRpZgotCi0jaWYgRU5B
QkxFKFNBTVBMSU5HX0ZMQUdTKQotICAgIHZvaWQgc2V0U2FtcGxpbmdGbGFnKGludDMyX3QpOwot
ICAgIHZvaWQgY2xlYXJTYW1wbGluZ0ZsYWcoaW50MzJfdCBmbGFnKTsKLSNlbmRpZgotCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0g
ICAgewotICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBzdHJpY3RNb2RlRm9yKENvZGVPcmlnaW4gY29k
ZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUp
Ci0gICAgICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpOwotICAgICAg
ICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKS0+aXNTdHJpY3RNb2RlKCk7Ci0gICAgfQotICAgIAot
ICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVP
cmlnaW4pOwotICAgIAotICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBiYXNlbGluZUNv
ZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGJhc2VsaW5l
Q29kZUJsb2NrKCkpOwotICAgIH0KLSAgICAKLSAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrRm9yKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQotICAgIHsKLSAgICAgICAg
aWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxv
Y2soKTsKLSAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1l
KGlubGluZUNhbGxGcmFtZSk7Ci0gICAgfQotICAgIAotICAgIENvZGVCbG9jayogYmFzZWxpbmVD
b2RlQmxvY2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmFzZWxpbmVDb2RlQmxvY2s7Ci0g
ICAgfQotICAgIAotICAgIGludCBhcmd1bWVudHNSZWdpc3RlckZvcihJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQot
ICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5hcmd1bWVudHNSZWdpc3RlcigpOwotICAg
ICAgICAKLSAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1l
KAotICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lKS0+YXJndW1lbnRzUmVnaXN0ZXIoKSArIGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7Ci0gICAgfQotICAgIAotICAgIGludCBhcmd1bWVu
dHNSZWdpc3RlckZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFyZ3VtZW50c1JlZ2lzdGVyRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KTsKLSAgICB9Ci0gICAgCi0gICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlRm9yKGNv
bnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1cm4gYmFzZWxp
bmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCk7Ci0gICAgfQotCi0gICAg
aW50IG9mZnNldE9mTG9jYWxzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCi0gICAgewot
ICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpOwotICAgIH0KLQotICAgIGludCBvZmZzZXRPZkFyZ3Vt
ZW50c0luY2x1ZGluZ1RoaXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKLSAgICB7Ci0g
ICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1
cm4gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkgKiBzaXplb2YoUmVn
aXN0ZXIpOwotICAgICAgICByZXR1cm4gKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApKSAqIHNp
emVvZihSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9m
ZnNldD4mIGRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayopOwotICAgIAotcHJvdGVjdGVkOgot
ICAgIFZNKiBtX3ZtOwotICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgQ29kZUJsb2Nr
KiBtX2Jhc2VsaW5lQ29kZUJsb2NrOwotCi0gICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBWZWN0b3I8
Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiA+IG1fZGVjb2RlZENvZGVNYXBzOwotfTsKLQotfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNl
bmRpZiAvLyBERkdBc3NlbWJseUhlbHBlcnNfaAotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0JpbmFyeVN3aXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmluYXJ5U3dpdGNoLmgJKHJldmlzaW9uIDE1NjExOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmluYXJ5U3dpdGNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZHR1BSSW5m
by5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTU2MTE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlw
ZS5oIgogI2luY2x1ZGUgIkRGR0FycmF5TW9kZS5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGll
cy5oIgorI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5o
IgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCShy
ZXZpc2lvbiAxNTYxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVs
cGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR0NDYWxsSGVscGVyc19o
Ci0jZGVmaW5lIERGR0NDYWxsSGVscGVyc19oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
LQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQXNzZW1ibHlIZWxwZXJzLmgi
Ci0jaW5jbHVkZSAiREZHR1BSSW5mby5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7Ci0KLWNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewotcHVi
bGljOgotICAgIENDYWxsSGVscGVycyhWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrID0gMCkK
LSAgICAgICAgOiBBc3NlbWJseUhlbHBlcnModm0sIGNvZGVCbG9jaykKLSAgICB7Ci0gICAgfQot
Ci0gICAgLy8gVGhlc2UgbWV0aG9kcyB1c2VkIHRvIHNvcnQgYXJndW1lbnRzIGludG8gdGhlIGNv
cnJlY3QgcmVnaXN0ZXJzLgotICAgIC8vIE9uIFg4NiB3ZSB1c2UgY2RlY2wgY2FsbGluZyBjb252
ZW50aW9ucywgd2hpY2ggcGFzcyBhbGwgYXJndW1lbnRzIG9uIHRoZQotICAgIC8vIHN0YWNrLiBP
biBvdGhlciBhcmNoaXRlY3R1cmVzIHdlIG1heSBuZWVkIHRvIHNvcnQgdmFsdWVzIGludG8gdGhl
Ci0gICAgLy8gY29ycmVjdCByZWdpc3RlcnMuCi0jaWYgIU5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJ
U1RFUlMKLSAgICB1bnNpZ25lZCBtX2NhbGxBcmd1bWVudE9mZnNldDsKLSAgICB2b2lkIHJlc2V0
Q2FsbEFyZ3VtZW50cygpIHsgbV9jYWxsQXJndW1lbnRPZmZzZXQgPSAwOyB9Ci0KLSAgICAvLyBU
aGVzZSBtZXRob2RzIGFyZSB1c2luZyBpbnRlcm5hbGx5IHRvIGltcGxlbWVudCB0aGUgY2FsbE9w
ZXJhdGlvbiBtZXRob2RzLgotICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEdQUlJlZyB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIHBva2UodmFsdWUsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAg
IH0KLSAgICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tMzIgaW1tKQotICAgIHsKLSAg
ICAgICAgcG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAgIH0KLSAgICB2b2lk
IGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tUHRyIHBvaW50ZXIpCi0gICAgewotICAgICAgICBw
b2tlKHBvaW50ZXIsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAgIH0KLSAgICB2b2lkIGFk
ZENhbGxBcmd1bWVudChGUFJSZWcgdmFsdWUpCi0gICAgewotICAgICAgICBzdG9yZURvdWJsZSh2
YWx1ZSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgbV9jYWxsQXJndW1lbnRPZmZzZXQg
KiBzaXplb2Yodm9pZCopKSk7Ci0gICAgICAgIG1fY2FsbEFyZ3VtZW50T2Zmc2V0ICs9IHNpemVv
Zihkb3VibGUpIC8gc2l6ZW9mKHZvaWQqKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFy
ZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQot
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxKQotICAg
IHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcxKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzIpOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcxKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJn
dW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQotICAgIHsKLSAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIHJl
c2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgfQot
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyIGFyZzEpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEpCi0gICAgewot
ICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxs
QXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKLSAg
ICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBU
cnVzdGVkSW1tMzIgYXJnMikKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwot
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcy
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIHJl
c2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFy
ZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJn
MikKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmcz
KQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxB
cmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJ
bW1QdHIgYXJnMykKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0z
MiBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygp
OwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwot
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRy
dXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAgICByZXNl
dENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQotICAgIHsKLSAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
LSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3Rl
ZEltbVB0ciBhcmczKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwot
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZElt
bVB0ciBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICB9Ci0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJn
NCkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVn
IGFyZzQsIEdQUlJlZyBhcmc1KQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0g
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmc0KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcz
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCi0gICAgewotICAgICAgICBy
ZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsK
LSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRy
dXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICB9Ci0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKLSAg
ICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkK
LSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQot
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVn
IGFyZzUpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwot
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxs
QXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgfQot
I2VuZGlmIC8vICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCi0gICAgLy8gVGhlc2UgbWV0
aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92aWRl
cyBmb3IKLSAgICAvLyBhdCBsZWFzdCA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBYODZfNjQs
IEFSTXY3LgotI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotICAgIHRlbXBs
YXRlPEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCPgotICAgIHZvaWQgc2V0dXBUd29TdHViQXJn
cyhHUFJSZWcgc3JjQSwgR1BSUmVnIHNyY0IpCi0gICAgewotICAgICAgICAvLyBBc3N1bWluZyB0
aGF0IHNyY0EgIT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdp
c3RlcnMgbWF5IGJlIGluOgotICAgICAgICAvLyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcg
cmVncywgdGhlIHJpZ2h0IHdheSBhcm91bmQuCi0gICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJl
YWR5IGluIGFyZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4KLSAgICAgICAgLy8gKDMpIG5l
aXRoZXIgYXJlIGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgotICAgICAgICAvLyAoNCkgc3Jj
QSBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0gICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBp
bmNvcnJlY3QgcmVnLgotICAgICAgICAvLyAoNikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcu
Ci0gICAgICAgIC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAv
LwotICAgICAgICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28g
bW92ZXMsIHRvIHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBpbgotICAgICAgICAvLyBwbGFj
ZSAodGhlIE1hY3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFw
cG9yYWNoIHdpbGwgYmUgc2FmZSBpbgotICAgICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBh
bmQgaW4gY2FzZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAy
Ci0gICAgICAgIC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJz
dCwgdG8gYXZvaWQgdHJhbXBsaW5nLikKLQotICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgewot
ICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4K
LSAgICAgICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOwotICAgICAgICAgICAgbW92ZShzcmNCLCBk
ZXN0Qik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0QikgewotICAgICAgICAgICAg
Ly8gSGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBmaXJz
dC4KLSAgICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOwotICAgICAgICAgICAgbW92ZShzcmNB
LCBkZXN0QSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3dhcChkZXN0QSwgZGVzdEIp
OwotICAgIH0KLSNpZiBDUFUoWDg2XzY0KQotICAgIHRlbXBsYXRlPEZQUlJlZyBkZXN0QSwgRlBS
UmVnIGRlc3RCPgotICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhGUFJSZWcgc3JjQSwgRlBSUmVn
IHNyY0IpCi0gICAgewotICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNyY0EgIT0gc3JjQiwgdGhl
cmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMgbWF5IGJlIGluOgotICAg
ICAgICAvLyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywgdGhlIHJpZ2h0IHdheSBh
cm91bmQuCi0gICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUg
d3Jvbmcgd2F5IGFyb3VuZC4KLSAgICAgICAgLy8gKDMpIG5laXRoZXIgYXJlIGN1cnJlbnRseSBp
biBhcmcgcmVnaXN0ZXJzLgotICAgICAgICAvLyAoNCkgc3JjQSBpbiBpbiBpdHMgY29ycmVjdCBy
ZWcuCi0gICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAg
ICAvLyAoNikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0gICAgICAgIC8vICg3KSBzcmNC
IGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAvLwotICAgICAgICAvLyBUaGUgdHJp
dmlhbCBhcHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMsIHRvIHB1dCBzcmNBIGlu
IHBsYWNlIHRoZW4gc3JjQiBpbgotICAgICAgICAvLyBwbGFjZSAodGhlIE1hY3JvQXNzZW1ibGVy
IHdpbGwgb21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNoIHdpbGwgYmUgc2FmZSBp
bgotICAgICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4gY2FzZXMgd2hlcmUgc3Jj
QT09c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCi0gICAgICAgIC8vIChyZXF1aXJl
cyBhIHN3YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8gYXZvaWQgdHJhbXBsaW5n
LikKLQotICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgewotICAgICAgICAgICAgLy8gSGFuZGxl
IHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KLSAgICAgICAgICAgIG1vdmVEb3Vi
bGUoc3JjQSwgZGVzdEEpOwotICAgICAgICAgICAgbW92ZURvdWJsZShzcmNCLCBkZXN0Qik7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChzcmNB
ICE9IGRlc3RCKSB7Ci0gICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5vbi1zd2FwIGNhc2UgLSBq
dXN0IHB1dCBzcmNCIGluIHBsYWNlIGZpcnN0LgotICAgICAgICAgICAgbW92ZURvdWJsZShzcmNC
LCBkZXN0Qik7Ci0gICAgICAgICAgICBtb3ZlRG91YmxlKHNyY0EsIGRlc3RBKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChzcmNCID09IGRlc3RBICYm
IHNyY0EgPT0gZGVzdEIpOwotICAgICAgICAvLyBOZWVkIHRvIHN3YXA7IHBpY2sgYSB0ZW1wb3Jh
cnkgcmVnaXN0ZXIuCi0gICAgICAgIEZQUlJlZyB0ZW1wOwotICAgICAgICBpZiAoZGVzdEEgIT0g
RlBSSW5mbzo6YXJndW1lbnRGUFIzICYmIGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMykK
LSAgICAgICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjM7Ci0gICAgICAgIGVsc2Ug
aWYgKGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMiAmJiBkZXN0QSAhPSBGUFJJbmZvOjph
cmd1bWVudEZQUjIpCi0gICAgICAgICAgICB0ZW1wID0gRlBSSW5mbzo6YXJndW1lbnRGUFIyOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChkZXN0QSAhPSBGUFJJbmZvOjphcmd1
bWVudEZQUjEgJiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICAgICAgICAg
IHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjE7Ci0gICAgICAgIH0KLSAgICAgICAgbW92ZURv
dWJsZShkZXN0QSwgdGVtcCk7Ci0gICAgICAgIG1vdmVEb3VibGUoZGVzdEIsIGRlc3RBKTsKLSAg
ICAgICAgbW92ZURvdWJsZSh0ZW1wLCBkZXN0Qik7Ci0gICAgfQotI2VuZGlmCi0gICAgdm9pZCBz
ZXR1cFN0dWJBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAg
ICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMj4oYXJnMSwgYXJnMik7Ci0gICAgfQotICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRz
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICAv
LyBJZiBuZWl0aGVyIG9mIGFyZzIvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92
ZSBhcmcxIGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0
dWJBcmdzIHRvIGZpeCBhcmcyL2FyZzMuCi0gICAgICAgIGlmIChhcmcyICE9IEdQUkluZm86OmFy
Z3VtZW50R1BSMSAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSkgewotICAgICAgICAg
ICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICAgICAgc2V0dXBU
d29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4o
YXJnMiwgYXJnMyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBJZiBuZWl0aGVyIG9mIGFyZzEvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92
ZSBhcmcyIGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0
dWJBcmdzIHRvIGZpeCBhcmcxL2FyZzMuCi0gICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFy
Z3VtZW50R1BSMiAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMikgewotICAgICAgICAg
ICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICAgICAgc2V0dXBU
d29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4o
YXJnMSwgYXJnMyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBJZiBuZWl0aGVyIG9mIGFyZzEvYXJnMiBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92
ZSBhcmczIGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0
dWJBcmdzIHRvIGZpeCBhcmcxL2FyZzIuCi0gICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFy
Z3VtZW50R1BSMyAmJiBhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMykgewotICAgICAgICAg
ICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICAgICAgc2V0dXBU
d29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMj4o
YXJnMSwgYXJnMik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBJZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gbW92ZSBhbnkgb2YgYXJn
MS9hcmcyL2FyZzMuCi0gICAgICAgIC8vIFNpbmNlIGFsbCB0aHJlZSBhcmUgYmxvY2tlZCwgdGhl
biBhbGwgdGhyZWUgbXVzdCBhbHJlYWR5IGJlIGluIHRoZSBhcmd1bWVudCByZWdpc3Rlci4KLSAg
ICAgICAgLy8gQnV0IGFyZSB0aGV5IGluIHRoZSByaWdodCBvbmVzPwotCi0gICAgICAgIC8vIEZp
cnN0LCBlbnN1cmUgYXJnMSBpcyBpbiBwbGFjZS4KLSAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSB7Ci0gICAgICAgICAgICBzd2FwKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0KLSAgICAgICAgICAgIC8vIElmIGFyZzEgd2Fzbid0IGluIGFyZ3VtZW50R1BS
MSwgb25lIG9mIGFyZzIvYXJnMyBtdXN0IGJlLgotICAgICAgICAgICAgQVNTRVJUKGFyZzIgPT0g
R1BSSW5mbzo6YXJndW1lbnRHUFIxIHx8IGFyZzMgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
LSAgICAgICAgICAgIC8vIElmIGFyZzIgd2FzIGluIGFyZ3VtZW50R1BSMSBpdCBubyBsb25nZXIg
aXMgKGR1ZSB0byB0aGUgc3dhcCkuCi0gICAgICAgICAgICAvLyBPdGhlcndpc2UgYXJnMyBtdXN0
IGhhdmUgYmVlbi4gTWFyayBoaW0gYXMgbW92ZWQuCi0gICAgICAgICAgICBpZiAoYXJnMiA9PSBH
UFJJbmZvOjphcmd1bWVudEdQUjEpCi0gICAgICAgICAgICAgICAgYXJnMiA9IGFyZzE7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnMyA9IGFyZzE7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBFaXRoZXIgYXJnMiAmIGFyZzMgbmVlZCBzd2FwcGluZywgb3Igd2UncmUgYWxs
IGRvbmUuCi0gICAgICAgIEFTU0VSVCgoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgfHwg
YXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpCi0gICAgICAgICAgICB8fCAoYXJnMiA9PSBH
UFJJbmZvOjphcmd1bWVudEdQUjMgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsK
LQotICAgICAgICBpZiAoYXJnMiAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjIpCi0gICAgICAgICAg
ICBzd2FwKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAg
ICB9Ci0KLSNpZiBDUFUoTUlQUykKLSNkZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgNAotI2Vs
c2UKLSNkZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgMAotI2VuZGlmCi0KLSNpZiBDUFUoWDg2
XzY0KQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkK
LSAgICB7Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFy
ZzEsIEZQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgc2V0dXBUd29TdHViQXJnczxGUFJJbmZv
Ojphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMT4oYXJnMSwgYXJnMik7Ci0gICAg
fQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShh
cmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQ
UlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOwotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgfQotI2VsaWYgQ1BVKEFSTSkKLSNpZiBDUFUoQVJNX0hBUkRGUCkKLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAg
ICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJn
MikKLSAgICB7Ci0gICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgewot
ICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAg
ICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgICAg
ICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7Ci0gICAgICAgICAg
ICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgICAgICAgICBt
b3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCi0gICAgICAgICAgICBtb3ZlRG91Ymxl
KEZQUkluZm86OmFyZ3VtZW50RlBSMCwgQVJNUmVnaXN0ZXJzOjpkMik7Ci0gICAgICAgICAgICBt
b3ZlRG91YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsK
LSAgICAgICAgICAgIG1vdmVEb3VibGUoQVJNUmVnaXN0ZXJzOjpkMiwgRlBSSW5mbzo6YXJndW1l
bnRGUFIxKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsK
LSAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAg
ICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJs
ZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICBzZXR1cFN0dWJBcmd1bWVu
dHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIsIEZQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwot
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIsIEZQUlJl
ZyBhcmc0KQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmc0LCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOwotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgfQotCi0jZWxzZQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhG
UFJSZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIp
Ci0gICAgewotICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKLSAgICAgICAgYXNzZW1ibGVyKCkudm1vdihH
UFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJnMik7Ci0gICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShG
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIGFyZzEpOwotICAgICAgICBtb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0K
LQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgYXNzZW1ibGVyKCku
dm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQUjAsIGFyZzMpOwot
ICAgICAgICBwb2tlKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEs
IEZQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnMywgUE9L
RV9BUkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7Ci0gICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgRlBSUmVnIGFyZzQpCi0gICAgewotICAgICAg
ICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIG1vdmUo
YXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAgICAgICAgYXNzZW1ibGVyKCkudm1vdihH
UFJJbmZvOjpub25BcmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIxLCBhcmc0KTsKLSAgICAgICAg
cG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Ci0gICAgICAg
IHBva2UoR1BSSW5mbzo6bm9uQXJnR1BSMSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKLSAg
ICB9Ci0jZW5kaWYgLy8gQ1BVKEFSTV9IQVJERlApCi0jZWxpZiBDUFUoTUlQUykKLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAg
ICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJn
MikKLSAgICB7Ci0gICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgewot
ICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAg
ICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgICAg
ICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7Ci0gICAgICAgICAg
ICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgICAgICAgICBt
b3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCi0gICAgICAgICAgICBzd2FwRG91Ymxl
KEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgYXNzZW1ibGVy
KCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJn
MSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgICAgIHBva2UoYXJnMiwgNCk7Ci0gICAgfQotCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEZQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJndW1lbnRz
KGFyZzEsIGFyZzIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwb2tlKGFyZzMsIDQpOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyIGFyZzEsIEZQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcyLCBhcmczKTsKLSAgICB9Ci0KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEZQUlJlZyBhcmc0KQotICAgIHsKLSAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzQpOwotICAgIH0K
LSNlbGlmIENQVShTSDQpCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQ
UlJlZyBhcmcxKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCi0gICAgewotICAgICAgICBpZiAoYXJnMiAhPSBG
UFJJbmZvOjphcmd1bWVudEZQUjApIHsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5m
bzo6YXJndW1lbnRGUFIxKTsKLSAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQUkluZm86OmFy
Z3VtZW50RlBSMSkgewotICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1
bWVudEZQUjEpOwotICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN3YXBEb3VibGUoRlBSSW5mbzo6
YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOwotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0g
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQotICAgIHsK
LSAgICAgICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAg
ICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotI2Vsc2UK
LSNlcnJvciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgotI2VuZGlm
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCi0g
ICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQot
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1l
bnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjE+KGFyZzEsIGFyZzIpOwotICAgIH0KLSAgICAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcx
KQotICAgIHsKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpCi0g
ICAgewotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEp
Ci0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSkKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MikKLSAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAg
ICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCi0gICAgewotICAgICAgICBt
b3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0jaWYgQ1BVKFg4Nl82NCkgICAg
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJS
ZWcgYXJnMSwgVHJ1c3RlZEltbTY0IGFyZzIpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tNjQgYXJnMSwgR1BSUmVnIGFyZzIp
Ci0gICAgewotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7IC8vIE1v
dmUgdGhpcyBmaXJzdCwgc28gc2V0dGluZyBhcmcxIGRvZXMgbm90IHRyYW1wbGUhCi0gICAgICAg
IG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0jZW5k
aWYKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBJbW1QdHIgYXJnMikKLSAg
ICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAg
bW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0ciBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9l
cyBub3QgdHJhbXBsZSEKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7
Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlz
IGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKLSAgICAgICAgbW92ZShh
cmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLSAgICAKLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEltbVB0ciBhcmcx
LCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJh
bXBsZSEKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQotICAgIHsKLSAgICAg
ICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKGFyZzIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEs
IFRydXN0ZWRJbW1QdHIgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
OwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKLSAg
ICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAg
bW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFy
Z3VtZW50cyhhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBzZXR1cFN0dWJBcmd1
bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRH
UFIzKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVn
IGFyZzMpCi0gICAgewotICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsKLSAgICAgICAgbW92ZShh
cmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRy
dXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAgICBtb3Zl
KGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjMpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3Rl
ZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAg
ICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVn
IGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQotICAgIHsKLSAg
ICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKGFy
ZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6
YXJndW1lbnRHUFIzKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1
c3RlZEltbVB0ciBhcmczKQotICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEs
IGFyZzIpOwotICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmcz
KQotICAgIHsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAg
ICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJn
MiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcx
LCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgbW92ZShh
cmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bTMyIGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAg
bW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVw
VHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+
KGFyZzIsIGFyZzMpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJn
MykKLSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzIsIGFyZzMpOwotICAgICAgICBtb3ZlKGFyZzEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEs
IFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQotICAgIHsKLSAgICAgICAg
bW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKGFyZzIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1l
bnRHUFIzKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJn
MiwgVHJ1c3RlZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgIH0KLQotI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBjb252ZW50aW9u
IHRoYXQgcHJvdmlkZXMgZm9yCi0gICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50IHJlZ2lzdGVycywg
ZS5nLiBBUk12Ny4KLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAg
ICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCi0gICAgewotICAgICAgICBw
b2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQotICAgIHsKLSAgICAg
ICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Ci0gICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVz
dGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFy
ZzUpCi0gICAgewotICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7
Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKLSAg
ICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwg
VHJ1c3RlZEltbTMyIGFyZzUpCi0gICAgewotICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1F
TlRfT0ZGU0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBH
UFJSZWcgYXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1t
UHRyIGFyZzQpCi0gICAgewotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VU
KTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQs
IEdQUlJlZyBhcmc1KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09G
RlNFVCArIDEpOwotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQp
Ci0gICAgewotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0K
LQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBh
cmc0KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Ci0g
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0
ZWRJbW1QdHIgYXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9P
RkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBh
cmczLCBHUFJSZWcgYXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVO
VF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmcz
LCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCi0gICAgewotICAgICAgICBwb2tlKGFyZzUsIFBP
S0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVO
VF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmcz
LCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCi0gICAgewotICAgICAgICBwb2tlKGFy
ZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9B
UkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbVB0ciBhcmc1KQotICAgIHsKLSAgICAgICAg
cG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwotICAgICAgICBwb2tlKGFyZzQs
IFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1KQotICAg
IHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwotICAgICAg
ICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEs
IFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJl
ZyBhcmc1KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCAr
IDEpOwotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJl
ZyBhcmc1KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCAr
IDEpOwotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQot
I2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAotCi0jaWYgTlVNQkVS
X09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA1Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBU
cnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICBzZXR1cFR3b1N0
dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFI0Pihhcmcx
LCBhcmc0KTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAg
ICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQot
I2VuZGlmCi0KLSAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0
QikKLSAgICB7Ci0gICAgICAgIEdQUlJlZyBzcmNBID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFI7
Ci0gICAgICAgIEdQUlJlZyBzcmNCID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyOwotCi0gICAg
ICAgIGlmIChkZXN0QSA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgbW92ZShzcmNCLCBk
ZXN0Qik7Ci0gICAgICAgIGVsc2UgaWYgKGRlc3RCID09IEludmFsaWRHUFJSZWcpCi0gICAgICAg
ICAgICBtb3ZlKHNyY0EsIGRlc3RBKTsKLSAgICAgICAgZWxzZSBpZiAoc3JjQiAhPSBkZXN0QSkg
ewotICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zl
cy4KLSAgICAgICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOwotICAgICAgICAgICAgbW92ZShzcmNC
LCBkZXN0Qik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0QikgewotICAgICAgICAg
ICAgLy8gSGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBm
aXJzdC4KLSAgICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOwotICAgICAgICAgICAgbW92ZShz
cmNBLCBkZXN0QSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3dhcChkZXN0QSwgZGVz
dEIpOwotICAgIH0KLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHQ0NhbGxIZWxwZXJzX2gKLQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNp
b24gMTU2MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxv
Y2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHSklU
Q29kZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZv
LmgJKHJldmlzaW9uIDE1NjExOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBS
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgREZHRlBSSW5mb19oCi0jZGVm
aW5lIERGR0ZQUkluZm9faAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdS
ZWdpc3RlckJhbmsuaCIKLSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLXR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0
ZXJJRCBGUFJSZWc7Ci0jZGVmaW5lIEludmFsaWRGUFJSZWcgKChGUFJSZWcpLTEpCi0KLSNpZiBD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotCi1jbGFzcyBGUFJJbmZvIHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51
bWJlck9mUmVnaXN0ZXJzID0gNjsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZB
cmd1bWVudFJlZ2lzdGVycyA9IDg7Ci0KLSAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgotICAg
IHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9IFg4NlJlZ2lzdGVyczo6eG1tMDsKLSAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDEgPSBYODZSZWdpc3RlcnM6OnhtbTE7Ci0gICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QyID0gWDg2UmVnaXN0ZXJzOjp4bW0yOwotICAgIHN0YXRp
YyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IFg4NlJlZ2lzdGVyczo6eG1tMzsKLSAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDQgPSBYODZSZWdpc3RlcnM6OnhtbTQ7Ci0gICAgc3RhdGljIGNv
bnN0IEZQUlJlZyBmcFJlZ1Q1ID0gWDg2UmVnaXN0ZXJzOjp4bW01OwotI2lmIENQVShYODZfNjQp
Ci0gICAgLy8gT25seSBYODZfNjQgcGFzc2VzIGFndW1lbnRzIGluIHhtbSByZWdpc3RlcnMKLSAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IFg4NlJlZ2lzdGVyczo6eG1tMDsg
Ly8gZnBSZWdUMAotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIxID0gWDg2UmVn
aXN0ZXJzOjp4bW0xOyAvLyBmcFJlZ1QxCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVu
dEZQUjIgPSBYODZSZWdpc3RlcnM6OnhtbTI7IC8vIGZwUmVnVDIKLSAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIGFyZ3VtZW50RlBSMyA9IFg4NlJlZ2lzdGVyczo6eG1tMzsgLy8gZnBSZWdUMwotI2Vu
ZGlmCi0gICAgLy8gT24gWDg2IHRoZSByZXR1cm4gd2lsbCBhY3R1YWxseSBiZSBvbiB0aGUgeDg3
IHN0YWNrLAotICAgIC8vIHNvIHdlJ2xsIGNvcHkgdG8geG1tMCBmb3Igc2FuaXR5IQotICAgIHN0
YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFsdWVGUFIgPSBYODZSZWdpc3RlcnM6OnhtbTA7IC8v
IGZwUmVnVDAKLQotICAgIC8vIEZQUlJlZyBtYXBwaW5nIGlzIGRpcmVjdCwgdGhlIG1hY2hpbmUg
cmVnc2l0ZXIgbnVtYmVycyBjYW4KLSAgICAvLyBiZSB1c2VkIGRpcmVjdGx5IGFzIGluZGljZXMg
aW50byB0aGUgRlBSIFJlZ2lzdGVyQmFuay4KLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3Rl
cnM6OnhtbTAgPT0gMCwgeG1tMF9pc18wKTsKLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3Rl
cnM6OnhtbTEgPT0gMSwgeG1tMV9pc18xKTsKLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3Rl
cnM6OnhtbTIgPT0gMiwgeG1tMl9pc18yKTsKLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3Rl
cnM6OnhtbTMgPT0gMywgeG1tM19pc18zKTsKLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3Rl
cnM6OnhtbTQgPT0gNCwgeG1tNF9pc180KTsKLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3Rl
cnM6OnhtbTUgPT0gNSwgeG1tNV9pc181KTsKLSAgICBzdGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIo
dW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gKEZQUlJlZylpbmRleDsKLSAg
ICB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVnIHJlZykKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAodW5zaWduZWQpcmVnOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgRlBSUmVn
IHRvQXJndW1lbnRSZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biAoRlBSUmVnKWluZGV4OwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05h
bWUoRlBSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJl
Zyk7Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVn
KSA8IDE2KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0g
PSB7Ci0gICAgICAgICAgICAieG1tMCIsICJ4bW0xIiwgInhtbTIiLCAieG1tMyIsCi0gICAgICAg
ICAgICAieG1tNCIsICJ4bW01IiwgInhtbTYiLCAieG1tNyIsCi0gICAgICAgICAgICAieG1tOCIs
ICJ4bW05IiwgInhtbTEwIiwgInhtbTExIiwKLSAgICAgICAgICAgICJ4bW0xMiIsICJ4bW0xMyIs
ICJ4bW0xNCIsICJ4bW0xNSIKLSAgICAgICAgfTsKLSNlbGlmIENQVShYODYpCi0gICAgICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCA4KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIG5hbWVGb3JSZWdpc3Rlcls4XSA9IHsKLSAgICAgICAgICAgICJ4bW0wIiwgInhtbTEiLCAi
eG1tMiIsICJ4bW0zIiwKLSAgICAgICAgICAgICJ4bW00IiwgInhtbTUiLCAieG1tNiIsICJ4bW03
IgotICAgICAgICB9OwotI2VuZGlmCi0gICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVn
XTsKLSAgICB9Ci19OwotCi0jZW5kaWYKLQotI2lmIENQVShBUk0pCi0KLWNsYXNzIEZQUkluZm8g
ewotcHVibGljOgotICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OwotCi0gICAgLy8gVGVtcG9yYXJ5
IHJlZ2lzdGVycy4KLSAgICAvLyBkNyBpcyB1c2UgYnkgdGhlIE1hY3JvQXNzZW1ibGVyIGFzIGZw
VGVtcFJlZ2lzdGVyLgotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9IEFSTVJlZ2lz
dGVyczo6ZDA7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gQVJNUmVnaXN0ZXJz
OjpkMTsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIgPSBBUk1SZWdpc3RlcnM6OmQy
OwotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IEFSTVJlZ2lzdGVyczo6ZDM7Ci0g
ICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gQVJNUmVnaXN0ZXJzOjpkNDsKLSAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUgPSBBUk1SZWdpc3RlcnM6OmQ1OwotICAgIC8vIEFS
TXY3IGRvZXNuJ3QgcGFzcyBhcmd1bWVudHMgaW4gZnAgcmVnaXN0ZXJzLiBUaGUgcmV0dXJuCi0g
ICAgLy8gdmFsdWUgaXMgYWxzbyBhY3R1YWxseSBpbiBpbnRlZ2VyIHJlZ2lzdGVycywgZm9yIG5v
dwotICAgIC8vIHdlJ2xsIHJldHVybiBpbiBkMCBmb3Igc2ltcGxpY2l0eS4KLSAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gQVJNUmVnaXN0ZXJzOjpkMDsgLy8gZnBSZWdU
MAotCi0jaWYgQ1BVKEFSTV9IQVJERlApCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVu
dEZQUjAgPSBBUk1SZWdpc3RlcnM6OmQwOyAvLyBmcFJlZ1QwCi0gICAgc3RhdGljIGNvbnN0IEZQ
UlJlZyBhcmd1bWVudEZQUjEgPSBBUk1SZWdpc3RlcnM6OmQxOyAvLyBmcFJlZ1QxCi0jZW5kaWYK
LQotICAgIC8vIEZQUlJlZyBtYXBwaW5nIGlzIGRpcmVjdCwgdGhlIG1hY2hpbmUgcmVnc2l0ZXIg
bnVtYmVycyBjYW4KLSAgICAvLyBiZSB1c2VkIGRpcmVjdGx5IGFzIGluZGljZXMgaW50byB0aGUg
RlBSIFJlZ2lzdGVyQmFuay4KLSAgICBDT01QSUxFX0FTU0VSVChBUk1SZWdpc3RlcnM6OmQwID09
IDAsIGQwX2lzXzApOwotICAgIENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lzdGVyczo6ZDEgPT0gMSwg
ZDFfaXNfMSk7Ci0gICAgQ09NUElMRV9BU1NFUlQoQVJNUmVnaXN0ZXJzOjpkMiA9PSAyLCBkMl9p
c18yKTsKLSAgICBDT01QSUxFX0FTU0VSVChBUk1SZWdpc3RlcnM6OmQzID09IDMsIGQzX2lzXzMp
OwotICAgIENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lzdGVyczo6ZDQgPT0gNCwgZDRfaXNfNCk7Ci0g
ICAgQ09NUElMRV9BU1NFUlQoQVJNUmVnaXN0ZXJzOjpkNSA9PSA1LCBkNV9pc181KTsKLSAgICBz
dGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gKEZQUlJlZylpbmRleDsKLSAgICB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgo
RlBSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIHJldHVybiAodW5zaWduZWQpcmVnOwotICAgIH0K
LQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVnIHJlZykKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChzdGF0
aWNfY2FzdDxpbnQ+KHJlZykgPCAzMik7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1l
Rm9yUmVnaXN0ZXJbMzJdID0gewotICAgICAgICAgICAgImQwIiwgImQxIiwgImQyIiwgImQzIiwK
LSAgICAgICAgICAgICJkNCIsICJkNSIsICJkNiIsICJkNyIsCi0gICAgICAgICAgICAiZDgiLCAi
ZDkiLCAiZDEwIiwgImQxMSIsCi0gICAgICAgICAgICAiZDEyIiwgImQxMyIsICJkMTQiLCAiZDE1
IiwKLSAgICAgICAgICAgICJkMTYiLCAiZDE3IiwgImQxOCIsICJkMTkiLAotICAgICAgICAgICAg
ImQyMCIsICJkMjEiLCAiZDIyIiwgImQyMyIsCi0gICAgICAgICAgICAiZDI0IiwgImQyNSIsICJk
MjYiLCAiZDI3IiwKLSAgICAgICAgICAgICJkMjgiLCAiZDI5IiwgImQzMCIsICJkMzEiCi0gICAg
ICAgIH07Ci0gICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKLSAgICB9Ci19Owot
Ci0jZW5kaWYKLQotI2lmIENQVShNSVBTKQotCi1jbGFzcyBGUFJJbmZvIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG51bWJlck9mUmVnaXN0ZXJzID0gNjsKLQotICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCi0g
ICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6ZjA7Ci0gICAg
c3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6ZjQ7Ci0gICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QyID0gTUlQU1JlZ2lzdGVyczo6ZjY7Ci0gICAgc3RhdGlj
IGNvbnN0IEZQUlJlZyBmcFJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6Zjg7Ci0gICAgc3RhdGljIGNv
bnN0IEZQUlJlZyBmcFJlZ1Q0ID0gTUlQU1JlZ2lzdGVyczo6ZjEwOwotICAgIHN0YXRpYyBjb25z
dCBGUFJSZWcgZnBSZWdUNSA9IE1JUFNSZWdpc3RlcnM6OmYxODsKLQotICAgIHN0YXRpYyBjb25z
dCBGUFJSZWcgcmV0dXJuVmFsdWVGUFIgPSBNSVBTUmVnaXN0ZXJzOjpmMDsKLQotICAgIHN0YXRp
YyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIwID0gTUlQU1JlZ2lzdGVyczo6ZjEyOwotICAgIHN0
YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIxID0gTUlQU1JlZ2lzdGVyczo6ZjE0OwotCi0g
ICAgc3RhdGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJz
XSA9IHsKLSAgICAgICAgICAgIGZwUmVnVDAsIGZwUmVnVDEsIGZwUmVnVDIsIGZwUmVnVDMsIGZw
UmVnVDQsIGZwUmVnVDUgfTsKLQotICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lz
dGVycyk7Ci0gICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKLSAgICAgICAgQVNTRVJUKHJlZyA8IDIwKTsK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMjBdID0gewot
ICAgICAgICAgICAgMCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwK
LSAgICAgICAgICAgIDEsIEludmFsaWRJbmRleCwgMiwgSW52YWxpZEluZGV4LAotICAgICAgICAg
ICAgMywgSW52YWxpZEluZGV4LCA0LCBJbnZhbGlkSW5kZXgsCi0gICAgICAgICAgICBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsCi0gICAgICAg
ICAgICBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgNSwgSW52YWxpZEluZGV4LAotICAgICAg
ICB9OwotICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107Ci0g
ICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQUlJlZyBy
ZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwotICAgICAg
ICBBU1NFUlQocmVnIDwgMzIpOwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJl
Z2lzdGVyWzMyXSA9IHsKLSAgICAgICAgICAgICJmMCIsICJmMSIsICJmMiIsICJmMyIsCi0gICAg
ICAgICAgICAiZjQiLCAiZjUiLCAiZjYiLCAiZjciLAotICAgICAgICAgICAgImY4IiwgImY5Iiwg
ImYxMCIsICJmMTEiLAotICAgICAgICAgICAgImYxMiIsICJmMTMiLCAiZjE0IiwgImYxNSIKLSAg
ICAgICAgICAgICJmMTYiLCAiZjE3IiwgImYxOCIsICJmMTkiCi0gICAgICAgICAgICAiZjIwIiwg
ImYyMSIsICJmMjIiLCAiZjIzIgotICAgICAgICAgICAgImYyNCIsICJmMjUiLCAiZjI2IiwgImYy
NyIKLSAgICAgICAgICAgICJmMjgiLCAiZjI5IiwgImYzMCIsICJmMzEiCi0gICAgICAgIH07Ci0g
ICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKLSAgICB9Ci1wcml2YXRlOgotCi0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Ci19Owot
Ci0jZW5kaWYKLQotI2lmIENQVShTSDQpCi0KLWNsYXNzIEZQUkluZm8gewotcHVibGljOgotICAg
IHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bnVtYmVyT2ZSZWdpc3RlcnMgPSA2OwotCi0gICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KLSAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBTSDRSZWdpc3RlcnM6OmRyMDsKLSAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDEgPSBTSDRSZWdpc3RlcnM6OmRyMjsKLSAgICBzdGF0
aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIgPSBTSDRSZWdpc3RlcnM6OmRyNDsKLSAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDMgPSBTSDRSZWdpc3RlcnM6OmRyNjsKLSAgICBzdGF0aWMgY29u
c3QgRlBSUmVnIGZwUmVnVDQgPSBTSDRSZWdpc3RlcnM6OmRyODsKLSAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIGZwUmVnVDUgPSBTSDRSZWdpc3RlcnM6OmRyMTA7Ci0KLSAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIHJldHVyblZhbHVlRlBSID0gU0g0UmVnaXN0ZXJzOjpkcjA7Ci0KLSAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IFNINFJlZ2lzdGVyczo6ZHI0OwotICAgIHN0YXRp
YyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIxID0gU0g0UmVnaXN0ZXJzOjpkcjY7Ci0KLSAgICBz
dGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0g
ewotICAgICAgICAgICAgZnBSZWdUMCwgZnBSZWdUMSwgZnBSZWdUMiwgZnBSZWdUMywgZnBSZWdU
NCwgZnBSZWdUNSB9OwotCi0gICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJz
KTsKLSAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwotICAgIH0KLQotICAg
IHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRGUFJSZWcpOwotICAgICAgICBBU1NFUlQocmVnIDwgMTYpOwotICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7Ci0gICAg
ICAgICAgICAwLCBJbnZhbGlkSW5kZXgsIDEsIEludmFsaWRJbmRleCwKLSAgICAgICAgICAgIDIs
IEludmFsaWRJbmRleCwgMywgSW52YWxpZEluZGV4LAotICAgICAgICAgICAgNCwgSW52YWxpZElu
ZGV4LCA1LCBJbnZhbGlkSW5kZXgsCi0gICAgICAgICAgICBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgKLSAgICAgICAgfTsKLSAgICAgICAgdW5z
aWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOwotICAgICAgICBBU1NFUlQocmVz
dWx0ICE9IEludmFsaWRJbmRleCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0g
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKLSAgICAgICAgQVNTRVJUKHJlZyA8IDE2
KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7Ci0g
ICAgICAgICAgICAiZHIwIiwgImZyMSIsICJkcjIiLCAiZnIzIiwKLSAgICAgICAgICAgICJkcjQi
LCAiZnI1IiwgImRyNiIsICJmcjciLAotICAgICAgICAgICAgImRyOCIsICJmcjkiLCAiZHIxMCIs
ICJmcjExIiwKLSAgICAgICAgICAgICJkcjEyIiwgImZyMTMiLCAiZHIxNCIsICJmcjE1IgotICAg
ICAgICB9OwotICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZm
ZmZmOwotfTsKLQotI2VuZGlmCi0KLXR5cGVkZWYgUmVnaXN0ZXJCYW5rPEZQUkluZm8+OjppdGVy
YXRvciBmcHJfaXRlcmF0b3I7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlm
Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCShyZXZp
c2lvbiAxNTYxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2NDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR0dQUkluZm9faAotI2RlZmluZSBERkdH
UFJJbmZvX2gKLQotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotCi0jaWYgRU5BQkxFKERGR19K
SVQpCi0KLSNpbmNsdWRlICJERkdSZWdpc3RlckJhbmsuaCIKLSNpbmNsdWRlICJNYWNyb0Fzc2Vt
Ymxlci5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLXR5cGVkZWYgTWFj
cm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgR1BSUmVnOwotI2RlZmluZSBJbnZhbGlkR1BSUmVnICgo
OjpKU0M6OkRGRzo6R1BSUmVnKS0xKQotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLWNsYXNzIEpTVmFs
dWVSZWdzIHsKLXB1YmxpYzoKLSAgICBKU1ZhbHVlUmVncygpCi0gICAgICAgIDogbV9ncHIoSW52
YWxpZEdQUlJlZykKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IEpTVmFsdWVSZWdz
KEdQUlJlZyBncHIpCi0gICAgICAgIDogbV9ncHIoZ3ByKQotICAgIHsKLSAgICB9Ci0gICAgCi0g
ICAgc3RhdGljIEpTVmFsdWVSZWdzIHBheWxvYWRPbmx5KEdQUlJlZyBncHIpCi0gICAgewotICAg
ICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MoZ3ByKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBJbnZhbGlkR1BSUmVnOyB9Ci0gICAgCi0g
ICAgR1BSUmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9Ci0gICAgR1BSUmVnIHBheWxv
YWRHUFIoKSBjb25zdCB7IHJldHVybiBtX2dwcjsgfQotICAgIAotcHJpdmF0ZToKLSAgICBHUFJS
ZWcgbV9ncHI7Ci19OwotCi1jbGFzcyBKU1ZhbHVlU291cmNlIHsKLXB1YmxpYzoKLSAgICBKU1Zh
bHVlU291cmNlKCkKLSAgICAgICAgOiBtX29mZnNldChub3RBZGRyZXNzKCkpCi0gICAgICAgICwg
bV9iYXNlKEludmFsaWRHUFJSZWcpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBKU1ZhbHVlU291
cmNlKEpTVmFsdWVSZWdzIHJlZ3MpCi0gICAgICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygpKQot
ICAgICAgICAsIG1fYmFzZShyZWdzLmdwcigpKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgZXhw
bGljaXQgSlNWYWx1ZVNvdXJjZShHUFJSZWcgZ3ByKQotICAgICAgICA6IG1fb2Zmc2V0KG5vdEFk
ZHJlc3MoKSkKLSAgICAgICAgLCBtX2Jhc2UoZ3ByKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAg
SlNWYWx1ZVNvdXJjZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhZGRyZXNzKQotICAgICAgICA6
IG1fb2Zmc2V0KGFkZHJlc3Mub2Zmc2V0KQotICAgICAgICAsIG1fYmFzZShhZGRyZXNzLmJhc2Up
Ci0gICAgewotICAgICAgICBBU1NFUlQobV9vZmZzZXQgIT0gbm90QWRkcmVzcygpKTsKLSAgICAg
ICAgQVNTRVJUKG1fYmFzZSAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICB9Ci0gICAgCi0gICAgc3Rh
dGljIEpTVmFsdWVTb3VyY2UgdW5ib3hlZENlbGwoR1BSUmVnIHBheWxvYWRHUFIpCi0gICAgewot
ICAgICAgICByZXR1cm4gSlNWYWx1ZVNvdXJjZShwYXlsb2FkR1BSKTsKLSAgICB9Ci0gICAgCi0g
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2Jhc2UgPT0gSW52YWxpZEdQUlJl
ZzsgfQotICAgIAotICAgIGJvb2wgaXNBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQg
IT0gbm90QWRkcmVzcygpOyB9Ci0gICAgCi0gICAgaW50MzJfdCBvZmZzZXQoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKGlzQWRkcmVzcygpKTsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0
OwotICAgIH0KLSAgICAKLSAgICBHUFJSZWcgYmFzZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBB
U1NFUlQoaXNBZGRyZXNzKCkpOwotICAgICAgICByZXR1cm4gbV9iYXNlOwotICAgIH0KLSAgICAK
LSAgICBHUFJSZWcgZ3ByKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNBZGRyZXNz
KCkpOwotICAgICAgICByZXR1cm4gbV9iYXNlOwotICAgIH0KLSAgICAKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyBhc0FkZHJlc3MoKSBjb25zdCB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlKCksIG9mZnNldCgpKTsgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdGF0aWMg
aW5saW5lIGludDMyX3Qgbm90QWRkcmVzcygpIHsgcmV0dXJuIDB4ODAwMDAwMDA7IH0gICAgIAot
ICAgICAgICAgIAotICAgIGludDMyX3QgbV9vZmZzZXQ7Ci0gICAgR1BSUmVnIG1fYmFzZTsKLX07
Ci0jZW5kaWYKLQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi1jbGFzcyBKU1ZhbHVlUmVncyB7Ci1w
dWJsaWM6Ci0gICAgSlNWYWx1ZVJlZ3MoKQotICAgICAgICA6IG1fdGFnR1BSKHN0YXRpY19jYXN0
PGludDhfdD4oSW52YWxpZEdQUlJlZykpCi0gICAgICAgICwgbV9wYXlsb2FkR1BSKHN0YXRpY19j
YXN0PGludDhfdD4oSW52YWxpZEdQUlJlZykpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBKU1Zh
bHVlUmVncyhHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKLSAgICAgICAgOiBtX3Rh
Z0dQUih0YWdHUFIpCi0gICAgICAgICwgbV9wYXlsb2FkR1BSKHBheWxvYWRHUFIpCi0gICAgewot
ICAgIH0KLSAgICAKLSAgICBzdGF0aWMgSlNWYWx1ZVJlZ3MgcGF5bG9hZE9ubHkoR1BSUmVnIGdw
cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhJbnZhbGlkR1BSUmVnLCBncHIp
OwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3RhZ0dQUikgPT0gSW52YWxpZEdQUlJlZwot
ICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWRHUFIpID09IEludmFs
aWRHUFJSZWc7Ci0gICAgfQotICAgIAotICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fdGFnR1BSKTsgfQotICAgIEdQUlJlZyBwYXlsb2FkR1BS
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWRHUFIpOyB9Ci0g
ICAgR1BSUmVnIGdwcihXaGljaFZhbHVlV29yZCB3aGljaCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHN3aXRjaCAod2hpY2gpIHsKLSAgICAgICAgY2FzZSBUYWdXb3JkOgotICAgICAgICAgICAgcmV0
dXJuIHRhZ0dQUigpOwotICAgICAgICBjYXNlIFBheWxvYWRXb3JkOgotICAgICAgICAgICAgcmV0
dXJuIHBheWxvYWRHUFIoKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIHRhZ0dQUigpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBpbnQ4
X3QgbV90YWdHUFI7Ci0gICAgaW50OF90IG1fcGF5bG9hZEdQUjsKLX07Ci0KLWNsYXNzIEpTVmFs
dWVTb3VyY2UgewotcHVibGljOgotICAgIEpTVmFsdWVTb3VyY2UoKQotICAgICAgICA6IG1fb2Zm
c2V0KG5vdEFkZHJlc3MoKSkKLSAgICAgICAgLCBtX2Jhc2VPclRhZyhzdGF0aWNfY2FzdDxpbnQ4
X3Q+KEludmFsaWRHUFJSZWcpKQotICAgICAgICAsIG1fcGF5bG9hZChzdGF0aWNfY2FzdDxpbnQ4
X3Q+KEludmFsaWRHUFJSZWcpKQotICAgICAgICAsIG1fdGFnVHlwZSgwKQotICAgIHsKLSAgICB9
Ci0gICAgCi0gICAgSlNWYWx1ZVNvdXJjZShKU1ZhbHVlUmVncyByZWdzKQotICAgICAgICA6IG1f
b2Zmc2V0KG5vdEFkZHJlc3MoKSkKLSAgICAgICAgLCBtX2Jhc2VPclRhZyhyZWdzLnRhZ0dQUigp
KQotICAgICAgICAsIG1fcGF5bG9hZChyZWdzLnBheWxvYWRHUFIoKSkKLSAgICAgICAgLCBtX3Rh
Z1R5cGUoMCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEpTVmFsdWVTb3VyY2UoR1BSUmVnIHRh
Z0dQUiwgR1BSUmVnIHBheWxvYWRHUFIpCi0gICAgICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygp
KQotICAgICAgICAsIG1fYmFzZU9yVGFnKHN0YXRpY19jYXN0PGludDhfdD4odGFnR1BSKSkKLSAg
ICAgICAgLCBtX3BheWxvYWQoc3RhdGljX2Nhc3Q8aW50OF90PihwYXlsb2FkR1BSKSkKLSAgICAg
ICAgLCBtX3RhZ1R5cGUoMCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEpTVmFsdWVTb3VyY2Uo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MgYWRkcmVzcykKLSAgICAgICAgOiBtX29mZnNldChhZGRy
ZXNzLm9mZnNldCkKLSAgICAgICAgLCBtX2Jhc2VPclRhZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KGFk
ZHJlc3MuYmFzZSkpCi0gICAgICAgICwgbV9wYXlsb2FkKHN0YXRpY19jYXN0PGludDhfdD4oSW52
YWxpZEdQUlJlZykpCi0gICAgICAgICwgbV90YWdUeXBlKDApCi0gICAgewotICAgICAgICBBU1NF
UlQobV9vZmZzZXQgIT0gbm90QWRkcmVzcygpKTsKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0
PEdQUlJlZz4obV9iYXNlT3JUYWcpICE9IEludmFsaWRHUFJSZWcpOwotICAgIH0KLSAgICAKLSAg
ICBzdGF0aWMgSlNWYWx1ZVNvdXJjZSB1bmJveGVkQ2VsbChHUFJSZWcgcGF5bG9hZEdQUikKLSAg
ICB7Ci0gICAgICAgIEpTVmFsdWVTb3VyY2UgcmVzdWx0OwotICAgICAgICByZXN1bHQubV9vZmZz
ZXQgPSBub3RBZGRyZXNzKCk7Ci0gICAgICAgIHJlc3VsdC5tX2Jhc2VPclRhZyA9IHN0YXRpY19j
YXN0PGludDhfdD4oSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIHJlc3VsdC5tX3BheWxvYWQgPSBz
dGF0aWNfY2FzdDxpbnQ4X3Q+KHBheWxvYWRHUFIpOwotICAgICAgICByZXN1bHQubV90YWdUeXBl
ID0gc3RhdGljX2Nhc3Q8aW50OF90PihKU1ZhbHVlOjpDZWxsVGFnKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9iYXNlT3JUYWcpID09IEludmFs
aWRHUFJSZWcKLSAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PEdQUlJlZz4obV9wYXlsb2FkKSA9
PSBJbnZhbGlkR1BSUmVnOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQWRkcmVzcygpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQoISEqdGhpcyk7Ci0gICAgICAgIHJldHVybiBtX29mZnNl
dCAhPSBub3RBZGRyZXNzKCk7Ci0gICAgfQotICAgIAotICAgIGludDMyX3Qgb2Zmc2V0KCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc0FkZHJlc3MoKSk7Ci0gICAgICAgIHJldHVybiBt
X29mZnNldDsKLSAgICB9Ci0gICAgCi0gICAgR1BSUmVnIGJhc2UoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGlzQWRkcmVzcygpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQ
UlJlZz4obV9iYXNlT3JUYWcpOwotICAgIH0KLSAgICAKLSAgICBHUFJSZWcgdGFnR1BSKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNBZGRyZXNzKCkgJiYgc3RhdGljX2Nhc3Q8R1BS
UmVnPihtX2Jhc2VPclRhZykgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHUFJSZWc+KG1fYmFzZU9yVGFnKTsKLSAgICB9Ci0gICAgCi0gICAgR1BSUmVnIHBh
eWxvYWRHUFIoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0FkZHJlc3MoKSk7Ci0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fcGF5bG9hZCk7Ci0gICAgfQotICAg
IAotICAgIGJvb2wgaGFzS25vd25UYWcoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCEh
KnRoaXMpOwotICAgICAgICBBU1NFUlQoIWlzQWRkcmVzcygpKTsKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdQUlJlZz4obV9iYXNlT3JUYWcpID09IEludmFsaWRHUFJSZWc7Ci0gICAgfQot
ICAgIAotICAgIHVpbnQzMl90IHRhZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obV90YWdUeXBlKTsKLSAgICB9Ci0gICAgCi0gICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MgYXNBZGRyZXNzKHVuc2lnbmVkIGFkZGl0aW9uYWxPZmZzZXQgPSAwKSBj
b25zdCB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKCksIG9mZnNldCgpICsg
YWRkaXRpb25hbE9mZnNldCk7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgc3RhdGljIGlubGluZSBp
bnQzMl90IG5vdEFkZHJlc3MoKSB7IHJldHVybiAweDgwMDAwMDAwOyB9ICAgICAKLSAgICAgICAg
ICAKLSAgICBpbnQzMl90IG1fb2Zmc2V0OwotICAgIGludDhfdCBtX2Jhc2VPclRhZzsKLSAgICBp
bnQ4X3QgbV9wYXlsb2FkOyAKLSAgICBpbnQ4X3QgbV90YWdUeXBlOyAvLyBDb250YWlucyB0aGUg
bG93IGJpdHMgb2YgdGhlIHRhZy4KLX07Ci0jZW5kaWYKLQotI2lmIENQVShYODYpCi0jZGVmaW5l
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgMAotCi1jbGFzcyBHUFJJbmZvIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7
Ci0KLSAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnVDAgPSBYODZSZWdpc3RlcnM6OmVheDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Qx
ID0gWDg2UmVnaXN0ZXJzOjplZHg7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IFg4
NlJlZ2lzdGVyczo6ZWN4OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBYODZSZWdp
c3RlcnM6OmVieDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gWDg2UmVnaXN0ZXJz
Ojplc2k7Ci0gICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCi0g
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOwotICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7Ci0gICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWRp
OwotICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVy
YWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCi0gICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBYODZSZWdpc3RlcnM6OmVjeDsgLy8gcmVnVDIK
LSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWR4
OyAvLyByZWdUMQotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lz
dGVyczo6ZWF4OyAvLyByZWdUMAotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9
IFg4NlJlZ2lzdGVyczo6ZWJ4OyAvLyByZWdUMwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9u
QXJnR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZXNpOyAvLyByZWdUNAotICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKLSAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAv
LyByZWdUMQotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BS
ID0gWDg2UmVnaXN0ZXJzOjplY3g7Ci0KLSAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5z
aWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lz
dGVycyk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1i
ZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCB9Owot
ICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07Ci0gICAgfQotCi0gICAgc3Rh
dGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChy
ZWcgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJl
ZykgPCA4KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJb
OF0gPSB7IDAsIDIsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA0LCBJbnZhbGlk
SW5kZXggfTsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWdd
OwotICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJS
ZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKLSAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDgpOwotICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzhdID0gewotICAgICAgICAgICAgImVheCIsICJl
Y3giLCAiZWR4IiwgImVieCIsCi0gICAgICAgICAgICAiZXNwIiwgImVicCIsICJlc2kiLCAiZWRp
IiwKLSAgICAgICAgfTsKLSAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOwotICAg
IH0KLXByaXZhdGU6Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0g
MHhmZmZmZmZmZjsKLX07Ci0KLSNlbmRpZgotCi0jaWYgQ1BVKFg4Nl82NCkKLSNkZWZpbmUgTlVN
QkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA2Ci0KLWNsYXNzIEdQUkluZm8gewotcHVibGljOgot
ICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA5OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsKLQot
ICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsK
LSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJz
OjpyMTM7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIgPSBY
ODZSZWdpc3RlcnM6OnIxNDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHRhZ01hc2tSZWdpc3Rl
ciA9IFg4NlJlZ2lzdGVyczo6cjE1OwotICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCi0gICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgcmVnVDEgPSBYODZSZWdpc3RlcnM6OmVkeDsKLSAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJlZ1QyID0gWDg2UmVnaXN0ZXJzOjplY3g7Ci0gICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUMyA9IFg4NlJlZ2lzdGVyczo6ZWJ4OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnVDQgPSBYODZSZWdpc3RlcnM6OmVkaTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1
ID0gWDg2UmVnaXN0ZXJzOjplc2k7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNiA9IFg4
NlJlZ2lzdGVyczo6cjg7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNyA9IFg4NlJlZ2lz
dGVyczo6cjk7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOCA9IFg4NlJlZ2lzdGVyczo6
cjEwOwotICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdl
bmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCi0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBYODZSZWdpc3RlcnM6OmVkaTsgLy8gcmVn
VDQKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6
ZXNpOyAvLyByZWdUNQotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gWDg2
UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVu
dEdQUjMgPSBYODZSZWdpc3RlcnM6OmVjeDsgLy8gcmVnVDIKLSAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGFyZ3VtZW50R1BSNCA9IFg4NlJlZ2lzdGVyczo6cjg7ICAvLyByZWdUNgotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFI1ID0gWDg2UmVnaXN0ZXJzOjpyOTsgIC8vIHJlZ1Q3
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjplYXg7
IC8vIHJlZ1QwCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0
ZXJzOjplYng7IC8vIHJlZ1QzCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0g
WDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q4Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1
cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAotICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxCi0g
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdp
c3RlcnM6OmVzaTsKLQotICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRl
eCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0
ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYs
IHJlZ1Q3LCByZWdUOCB9OwotICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07
Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBHUFJSZWcgdG9Bcmd1bWVudFJlZ2lzdGVyKHVuc2ln
bmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVycyk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRl
eFtudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzXSA9IHsgYXJndW1lbnRHUFIwLCBhcmd1bWVudEdQ
UjEsIGFyZ3VtZW50R1BSMiwgYXJndW1lbnRHUFIzLCBhcmd1bWVudEdQUjQsIGFyZ3VtZW50R1BS
NSB9OwotICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07Ci0gICAgfQotICAg
IAotICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCi0gICAgewotICAgICAg
ICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8aW50PihyZWcpIDwgMTYpOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhG
b3JSZWdpc3RlclsxNl0gPSB7IDAsIDIsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCA1LCA0LCA2LCA3LCA4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCB9OwotICAgICAgICB1bnNpZ25lZCByZXN1bHQg
PSBpbmRleEZvclJlZ2lzdGVyW3JlZ107Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxp
ZEluZGV4KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29u
c3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVn
ICE9IEludmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcp
IDwgMTYpOwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9
IHsKLSAgICAgICAgICAgICJyYXgiLCAicmN4IiwgInJkeCIsICJyYngiLAotICAgICAgICAgICAg
InJzcCIsICJyYnAiLCAicnNpIiwgInJkaSIsCi0gICAgICAgICAgICAicjgiLCAicjkiLCAicjEw
IiwgInIxMSIsCi0gICAgICAgICAgICAicjEyIiwgInIxMyIsICJyMTQiLCAicjE1IgotICAgICAg
ICB9OwotICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107Ci0gICAgfQotcHJpdmF0
ZToKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZm
OwotfTsKLQotI2VuZGlmCi0KLSNpZiBDUFUoQVJNKQotI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1F
TlRfUkVHSVNURVJTIDQKLQotY2xhc3MgR1BSSW5mbyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBH
UFJSZWcgUmVnaXN0ZXJUeXBlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJl
Z2lzdGVycyA9IDg7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOwotCi0gICAgLy8gVGVtcG9y
YXJ5IHJlZ2lzdGVycy4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gQVJNUmVnaXN0
ZXJzOjpyMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpy
MTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gQVJNUmVnaXN0ZXJzOjpyMjsKLSAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gQVJNUmVnaXN0ZXJzOjpyNDsKLSAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gQVJNUmVnaXN0ZXJzOjpyODsKLSAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJlZ1Q1ID0gQVJNUmVnaXN0ZXJzOjpyOTsKLSAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ1Q2ID0gQVJNUmVnaXN0ZXJzOjpyMTA7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUNyA9IEFSTVJlZ2lzdGVyczo6cjExOwotICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0
aGUgYmFzZWxpbmUgSklULgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVn
aXN0ZXIgPSByZWdUMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lz
dGVyMiA9IHJlZ1QxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIg
PSBBUk1SZWdpc3RlcnM6OnI1OwotICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBu
YW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdp
c3RlcnMuCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBBUk1SZWdpc3Rl
cnM6OnIwOyAvLyByZWdUMAotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0g
QVJNUmVnaXN0ZXJzOjpyMTsgLy8gcmVnVDEKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3Vt
ZW50R1BSMiA9IEFSTVJlZ2lzdGVyczo6cjI7IC8vIHJlZ1QyCi0gICAgLy8gRklYTUU6IHIzIGlz
IGN1cnJlbnRseSB1c2VkIGJlIHRoZSBNYWNyb0Fzc2VtYmxlciBhcyBhIHRlbXBvcmFyeSAtIGl0
IHNlZW1zCi0gICAgLy8gVGhpcyBjb3VsZCB0aHJlb3JldGljYWxseSBiZSBhIHByb2JsZW0gaWYg
dGhpcyBpcyB1c2VkIGluIGNvZGUgZ2VuZXJhdGlvbgotICAgIC8vIGJldHdlZW4gdGhlIGFyZ3Vt
ZW50cyBiZWluZyBzZXQgdXAsIGFuZCB0aGUgY2FsbCBiZWluZyBtYWRlLiBUaGF0IHNhaWQsCi0g
ICAgLy8gYW55IGNoYW5nZSBpbnRyb2R1Y2luZyBhIHByb2JsZW0gaGVyZSBpcyBsaWtlbHkgdG8g
YmUgaW1tZWRpYXRlbHkgYXBwYXJlbnQhCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVu
dEdQUjMgPSBBUk1SZWdpc3RlcnM6OnIzOyAvLyBGSVhNRSEKLSAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vbkFyZ0dQUjAgPSBBUk1SZWdpc3RlcnM6OnI0OyAvLyByZWdUMwotICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTVJlZ2lzdGVyczo6cjg7IC8vIHJlZ1Q0Ci0gICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0gQVJNUmVnaXN0ZXJzOjpyOTsgLy8gcmVn
VDUKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gQVJNUmVnaXN0ZXJz
OjpyMDsgLy8gcmVnVDAKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9
IEFSTVJlZ2lzdGVyczo6cjE7IC8vIHJlZ1QxCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25Q
cmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBBUk1SZWdpc3RlcnM6OnIyOwotCi0gICAgc3RhdGljIEdQ
UlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwotICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJl
Z2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1Qy
LCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcgfTsKLSAgICAgICAgcmV0dXJuIHJl
Z2lzdGVyRm9ySW5kZXhbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyB1bnNpZ25lZCB0b0lu
ZGV4KEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHJlZykgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocmVnKSA8IDE2KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4
Rm9yUmVnaXN0ZXJbMTZdID0geyAwLCAxLCAyLCBJbnZhbGlkSW5kZXgsIDMsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDQsIDUsIDYsIDcsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCB9OwotICAgICAgICB1bnNp
Z25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107Ci0gICAgICAgIEFTU0VSVChyZXN1
bHQgIT0gSW52YWxpZEluZGV4KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCi0gICAgewotICAgICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlZykgIT0gSW52YWxpZEdQUlJlZyk7Ci0g
ICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVnKSA8IDE2KTsKLSAgICAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7Ci0gICAgICAgICAgICAi
cjAiLCAicjEiLCAicjIiLCAicjMiLAotICAgICAgICAgICAgInI0IiwgInI1IiwgInI2IiwgInI3
IiwKLSAgICAgICAgICAgICJyOCIsICJyOSIsICJyMTAiLCAicjExIiwKLSAgICAgICAgICAgICJy
MTIiLCAicjEzIiwgInIxNCIsICJyMTUiCi0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiBuYW1l
Rm9yUmVnaXN0ZXJbcmVnXTsKLSAgICB9Ci1wcml2YXRlOgotCi0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Ci19OwotCi0jZW5kaWYKLQotI2lmIENQ
VShNSVBTKQotI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKLQotY2xhc3Mg
R1BSSW5mbyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7Ci0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJH
VU1FTlRfUkVHSVNURVJTOwotCi0gICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KLSAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7Ci0gICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUMSA9IE1JUFNSZWdpc3RlcnM6OnYxOwotICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjp0NDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6dDU7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
NCA9IE1JUFNSZWdpc3RlcnM6OnQ2OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBN
SVBTUmVnaXN0ZXJzOjp0NzsKLSAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2Vs
aW5lIEpJVC4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0g
cmVnVDA7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSBy
ZWdUMTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gTUlQU1Jl
Z2lzdGVyczo6czA7Ci0gICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZv
ciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4K
LSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IE1JUFNSZWdpc3RlcnM6OmEw
OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gTUlQU1JlZ2lzdGVyczo6
YTE7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBNSVBTUmVnaXN0ZXJz
OjphMjsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IE1JUFNSZWdpc3Rl
cnM6OmEzOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1QyOwotICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1QzOwotICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uQXJnR1BSMiA9IHJlZ1Q0OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIgPSByZWdUMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVl
R1BSMiA9IHJlZ1QxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0
dXJuR1BSID0gcmVnVDU7Ci0KLSAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQg
aW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJl
Z2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUgfTsK
LSAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwotICAgIH0KLQotICAgIHN0
YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQo
cmVnICE9IEludmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NFUlQocmVnIDwgMTYpOwotICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7IEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgNCwgNSB9OwotICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgIT0g
SW52YWxpZEluZGV4KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NFUlQocmVnIDwgMTYpOwotICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKLSAgICAgICAg
ICAgICJ6ZXJvIiwgImF0IiwgInYwIiwgInYxIiwKLSAgICAgICAgICAgICJhMCIsICJhMSIsICJh
MiIsICJhMyIsCi0gICAgICAgICAgICAidDAiLCAidDEiLCAidDIiLCAidDMiLAotICAgICAgICAg
ICAgInQ0IiwgInQ1IiwgInQ2IiwgInQ3IgotICAgICAgICB9OwotICAgICAgICByZXR1cm4gbmFt
ZUZvclJlZ2lzdGVyW3JlZ107Ci0gICAgfQotcHJpdmF0ZToKLQotICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwotfTsKLQotI2VuZGlmCi0KLSNpZiBD
UFUoU0g0KQotI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKLQotY2xhc3Mg
R1BSSW5mbyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDEwOwotCi0gICAgLy8g
VGVtcG9yYXJ5IHJlZ2lzdGVycy4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gU0g0
UmVnaXN0ZXJzOjpyMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gU0g0UmVnaXN0
ZXJzOjpyMTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gU0g0UmVnaXN0ZXJzOjpy
MjsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gU0g0UmVnaXN0ZXJzOjpyMTA7Ci0g
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IFNINFJlZ2lzdGVyczo6cjQ7Ci0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUNSA9IFNINFJlZ2lzdGVyczo6cjU7Ci0gICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUNiA9IFNINFJlZ2lzdGVyczo6cjY7Ci0gICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUNyA9IFNINFJlZ2lzdGVyczo6cjc7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUOCA9IFNINFJlZ2lzdGVyczo6cjg7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOSA9
IFNINFJlZ2lzdGVyczo6cjk7Ci0gICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNl
bGluZSBKSVQuCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9
IHJlZ1QwOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0g
cmVnVDE7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFNINFJl
Z2lzdGVyczo6ZnA7Ci0gICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZv
ciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4K
LSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IHJlZ1Q0OwotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gcmVnVDU7Ci0gICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyBhcmd1bWVudEdQUjIgPSByZWdUNjsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3Vt
ZW50R1BSMyA9IHJlZ1Q3OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJl
Z1QzOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q4OwotICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9IHJlZ1Q5OwotICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJl
dHVyblZhbHVlR1BSMiA9IHJlZ1QxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2Vy
dmVkTm9uUmV0dXJuR1BSID0gcmVnVDI7Ci0KLSAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIo
dW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJl
Z2lzdGVycyk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtu
dW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwg
cmVnVDUsIHJlZ1Q2LCByZWdUNywgcmVnVDgsIHJlZ1Q5IH07Ci0gICAgICAgIHJldHVybiByZWdp
c3RlckZvckluZGV4W2luZGV4XTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRl
eChHUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVn
KTsKLSAgICAgICAgQVNTRVJUKHJlZyA8IDE0KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTRdID0geyAwLCAxLCAyLCBJbnZhbGlkSW5kZXgsIDQsIDUs
IDYsIDcsIDgsIDksIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgg
fTsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOwotICAg
ICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVn
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAg
QVNTRVJUKHJlZyA8IDE2KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdp
c3RlclsxNl0gPSB7Ci0gICAgICAgICAgICAicjAiLCAicjEiLCAicjIiLCAicjMiLCAicjQiLCAi
cjUiLCAicjYiLCAicjciLAotICAgICAgICAgICAgInI4IiwgInI5IiwgInIxMCIsICJyMTEiLCAi
cjEyIiwgInIxMyIsICJyMTQiLCAicjE1IgotICAgICAgICB9OwotICAgICAgICByZXR1cm4gbmFt
ZUZvclJlZ2lzdGVyW3JlZ107Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwotfTsKLQotI2VuZGlmCi0KLXR5cGVk
ZWYgUmVnaXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRlcmF0b3I7Ci0KLX0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxNTYxMTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRU
eXBlLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlclNldC5oIgorI2luY2x1ZGUgIkRGR0pJVENvZGUu
aCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25FeGVjdXRhYmxlRHVtcC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTU2MTE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw3ICszMiw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdBcmd1
bWVudFBvc2l0aW9uLmgiCi0jaW5jbHVkZSAiREZHQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVk
ZSAiQXNzZW1ibHlIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgogI2luY2x1
ZGUgIkRGR0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24g
MTU2MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTAgQEAKIAogI2luY2x1ZGUgIkNhbGxGcmFtZUlu
bGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJERkdDQ2FsbEhlbHBl
cnMuaCIKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJERkdEaXNhc3NlbWJs
ZXIuaCIKLSNpbmNsdWRlICJERkdGUFJJbmZvLmgiCi0jaW5jbHVkZSAiREZHR1BSSW5mby5oIgor
I2luY2x1ZGUgIkZQUkluZm8uaCIKKyNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiREZH
R3JhcGguaCIKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdENv
bXBpbGF0aW9uSW5mby5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuY3BwCShyZXZpc2lvbiAxNTYxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFC
TEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVycy5oIgorI2luY2x1ZGUg
IkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZH
U3BlY3VsYXRpdmVKSVQuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkocmV2aXNpb24gMTU2MTE4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9u
LmgiCiAjaW5jbHVkZSAiREZHRXhpdFByb2ZpbGUuaCIKLSNpbmNsdWRlICJERkdHUFJJbmZvLmgi
CisjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRCYXNlLmgiCiAjaW5j
bHVkZSAiREZHVmFsdWVSZWNvdmVyeU92ZXJyaWRlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXIuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXIuaAkocmV2aXNpb24gMTU2MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiAj
aWYgRU5BQkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKLSNp
bmNsdWRlICJERkdDQ2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIK
KyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5j
bHVkZSAiREZHT3BlcmF0aW9ucy5oIgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDE1NjExOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQog
Ci0jaW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgi
CiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgJ
KHJldmlzaW9uIDE1NjExOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0
ZXJCYW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBFTkFCTEUoREZH
X0pJVCkKIAogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNp
bmNsdWRlICJGUFJJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApA
QCAtMzU4LDYgKzM2MCw5IEBAIHByaXZhdGU6CiAgICAgTWFwRW50cnkgbV9kYXRhW05VTV9SRUdT
XTsKIH07CiAKK3R5cGVkZWYgUmVnaXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRl
cmF0b3I7Cit0eXBlZGVmIFJlZ2lzdGVyQmFuazxGUFJJbmZvPjo6aXRlcmF0b3IgZnByX2l0ZXJh
dG9yOworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAkocmV2aXNpb24gMTU2MTE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlclNldC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw4ICszMCw4IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUg
IkRGR0ZQUkluZm8uaCIKLSNpbmNsdWRlICJERkdHUFJJbmZvLmgiCisjaW5jbHVkZSAiRlBSSW5m
by5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gMTU2MTE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBA
QAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgot
I2luY2x1ZGUgIkRGR0NDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgog
I2luY2x1ZGUgIkRGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkRGR1Nw
ZWN1bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaAko
cmV2aXNpb24gMTU2MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRS
ZWdpc3RlclNhdmVQbGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKICNpZiBF
TkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgotI2luY2x1ZGUgIkRGR0ZQ
UkluZm8uaCIKLSNpbmNsdWRlICJERkdHUFJJbmZvLmgiCisjaW5jbHVkZSAiRlBSSW5mby5oIgor
I2luY2x1ZGUgIkdQUkluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCShyZXZpc2lvbiAx
NTYxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5j
bHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCi0jaW5jbHVkZSAiREZHRlBSSW5mby5oIgotI2luY2x1
ZGUgIkRGR0dQUkluZm8uaCIKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRlICJG
UFJJbmZvLmgiCisjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRDb21w
aWxlci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcAkocmV2aXNpb24gMTU2MTE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKLSNp
bmNsdWRlICJERkdGUFJJbmZvLmgiCi0jaW5jbHVkZSAiREZHR1BSSW5mby5oIgorI2luY2x1ZGUg
IkZQUkluZm8uaCIKKyNpbmNsdWRlICJHUFJJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDQXJndW1l
bnRHZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENB
cmd1bWVudEdldHRlci5oCShyZXZpc2lvbiAxNTYxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENBcmd1bWVudEdldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3
IEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAotI2luY2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVy
cy5oIgorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkZUTFZhbHVlRm9y
bWF0LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogICAgIC8vIFBlZWsgb2Zmc2V0IGlzIHRoZSBudW1iZXIgb2YgdGhpbmdzIG9u
IHRoZSBzdGFjayBiZWxvdyB0aGUgZmlyc3QgYXJndW1lbnQuCiAgICAgLy8gSXQgd2lsbCBiZSAx
IGlmIHlvdSBoYXZlbid0IHB1c2hlZCBvciBwb3BwZWQgYWZ0ZXIgdGhlIGNhbGw7IGkuZS4gdGhl
IG9ubHkKICAgICAvLyB0aGluZyBpcyB0aGUgcmV0dXJuIGFkZHJlc3MuCi0gICAgQ0FyZ3VtZW50
R2V0dGVyKERGRzo6QXNzZW1ibHlIZWxwZXJzJiBqaXQsIGludCBwZWVrT2Zmc2V0ID0gMSkKKyAg
ICBDQXJndW1lbnRHZXR0ZXIoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGludCBwZWVrT2Zmc2V0ID0g
MSkKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9wZWVrT2Zmc2V0KHBlZWtPZmZz
ZXQpCiAgICAgICAgICwgbV9ncHJBcmd1bWVudEluZGV4KDApCkBAIC02Miw1MiArNjIsNTIgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCBsb2FkTmV4dDgoREZHOjpHUFJS
ZWcgZGVzdGluYXRpb24pCisgICAgdm9pZCBsb2FkTmV4dDgoR1BSUmVnIGRlc3RpbmF0aW9uKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0FyZ3VtZW50UmVnaXN0ZXI8REZHOjpHUFJJbmZvPihk
ZXN0aW5hdGlvbikpOwotICAgICAgICBpZiAobV9ncHJBcmd1bWVudEluZGV4IDwgREZHOjpHUFJJ
bmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3Zl
KERGRzo6R1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG1fZ3ByQXJndW1lbnRJbmRleCsrKSwg
ZGVzdGluYXRpb24pOworICAgICAgICBBU1NFUlQoIWlzQXJndW1lbnRSZWdpc3RlcjxHUFJJbmZv
PihkZXN0aW5hdGlvbikpOworICAgICAgICBpZiAobV9ncHJBcmd1bWVudEluZGV4IDwgR1BSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykgeworICAgICAgICAgICAgbV9qaXQubW92ZShH
UFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobV9ncHJBcmd1bWVudEluZGV4KyspLCBkZXN0aW5h
dGlvbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IG1faml0LmxvYWQ4KG5leHRBZGRyZXNzKCksIGRlc3RpbmF0aW9uKTsKICAgICB9CiAgICAgCi0g
ICAgdm9pZCBsb2FkTmV4dDMyKERGRzo6R1BSUmVnIGRlc3RpbmF0aW9uKQorICAgIHZvaWQgbG9h
ZE5leHQzMihHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgewotICAgICAgICBBU1NFUlQoIWlzQXJn
dW1lbnRSZWdpc3RlcjxERkc6OkdQUkluZm8+KGRlc3RpbmF0aW9uKSk7Ci0gICAgICAgIGlmICht
X2dwckFyZ3VtZW50SW5kZXggPCBERkc6OkdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnMpIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoREZHOjpHUFJJbmZvOjp0b0FyZ3VtZW50UmVn
aXN0ZXIobV9ncHJBcmd1bWVudEluZGV4KyspLCBkZXN0aW5hdGlvbik7CisgICAgICAgIEFTU0VS
VCghaXNBcmd1bWVudFJlZ2lzdGVyPEdQUkluZm8+KGRlc3RpbmF0aW9uKSk7CisgICAgICAgIGlm
IChtX2dwckFyZ3VtZW50SW5kZXggPCBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJz
KSB7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlciht
X2dwckFyZ3VtZW50SW5kZXgrKyksIGRlc3RpbmF0aW9uKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZDMyKG5leHRBZGRyZXNzKCks
IGRlc3RpbmF0aW9uKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBsb2FkTmV4dDY0KERGRzo6R1BS
UmVnIGRlc3RpbmF0aW9uKQorICAgIHZvaWQgbG9hZE5leHQ2NChHUFJSZWcgZGVzdGluYXRpb24p
CiAgICAgewotICAgICAgICBBU1NFUlQoIWlzQXJndW1lbnRSZWdpc3RlcjxERkc6OkdQUkluZm8+
KGRlc3RpbmF0aW9uKSk7Ci0gICAgICAgIGlmIChtX2dwckFyZ3VtZW50SW5kZXggPCBERkc6OkdQ
UkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpIHsKLSAgICAgICAgICAgIG1faml0Lm1v
dmUoREZHOjpHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobV9ncHJBcmd1bWVudEluZGV4Kysp
LCBkZXN0aW5hdGlvbik7CisgICAgICAgIEFTU0VSVCghaXNBcmd1bWVudFJlZ2lzdGVyPEdQUklu
Zm8+KGRlc3RpbmF0aW9uKSk7CisgICAgICAgIGlmIChtX2dwckFyZ3VtZW50SW5kZXggPCBHUFJJ
bmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBtX2ppdC5tb3Zl
KEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihtX2dwckFyZ3VtZW50SW5kZXgrKyksIGRlc3Rp
bmF0aW9uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgbV9qaXQubG9hZDY0KG5leHRBZGRyZXNzKCksIGRlc3RpbmF0aW9uKTsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBsb2FkTmV4dFB0cihERkc6OkdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICB2b2lk
IGxvYWROZXh0UHRyKEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICB7CiAgICAgICAgIGxvYWROZXh0
NjQoZGVzdGluYXRpb24pOwogICAgIH0KICAgICAKLSAgICB2b2lkIGxvYWROZXh0RG91YmxlKERG
Rzo6RlBSUmVnIGRlc3RpbmF0aW9uKQorICAgIHZvaWQgbG9hZE5leHREb3VibGUoRlBSUmVnIGRl
c3RpbmF0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUKAotICAgICAgICAgICAgIWlzQXJndW1l
bnRSZWdpc3RlcjxERkc6OkZQUkluZm8+KGRlc3RpbmF0aW9uKQotICAgICAgICAgICAgfHwgZGVz
dGluYXRpb24gPT0gREZHOjpGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICAgICAgIWlz
QXJndW1lbnRSZWdpc3RlcjxGUFJJbmZvPihkZXN0aW5hdGlvbikKKyAgICAgICAgICAgIHx8IGRl
c3RpbmF0aW9uID09IEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CiAgICAgICAgIAotICAgICAgICBp
ZiAobV9mcHJBcmd1bWVudEluZGV4IDwgREZHOjpGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVn
aXN0ZXJzKSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKERGRzo6RlBSSW5mbzo6dG9B
cmd1bWVudFJlZ2lzdGVyKG1fZnByQXJndW1lbnRJbmRleCsrKSwgZGVzdGluYXRpb24pOworICAg
ICAgICBpZiAobV9mcHJBcmd1bWVudEluZGV4IDwgRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVycykgeworICAgICAgICAgICAgbV9qaXQubW92ZURvdWJsZShGUFJJbmZvOjp0b0FyZ3Vt
ZW50UmVnaXN0ZXIobV9mcHJBcmd1bWVudEluZGV4KyspLCBkZXN0aW5hdGlvbik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMTUsOCArMTE1LDggQEAgcHVi
bGljOgogICAgIH0KICAgICAKICAgICB2b2lkIGxvYWROZXh0QW5kQm94KAotICAgICAgICBWYWx1
ZUZvcm1hdCwgREZHOjpHUFJSZWcgZGVzdGluYXRpb24sCi0gICAgICAgIERGRzo6R1BSUmVnIHNj
cmF0Y2gxID0gSW52YWxpZEdQUlJlZywgREZHOjpHUFJSZWcgc2NyYXRjaDIgPSBJbnZhbGlkR1BS
UmVnKTsKKyAgICAgICAgVmFsdWVGb3JtYXQsIEdQUlJlZyBkZXN0aW5hdGlvbiwKKyAgICAgICAg
R1BSUmVnIHNjcmF0Y2gxID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHNjcmF0Y2gyID0gSW52YWxp
ZEdQUlJlZyk7CiAKIHByaXZhdGU6CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MgbmV4dEFk
ZHJlc3MoKQpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAobV9wZWVr
T2Zmc2V0ICsgbV9zdGFja0FyZ3VtZW50SW5kZXgrKykgKiBzaXplb2Yodm9pZCopKTsKICAgICB9
CiAgICAgICAgICAgICAKLSAgICBERkc6OkFzc2VtYmx5SGVscGVycyYgbV9qaXQ7CisgICAgQXNz
ZW1ibHlIZWxwZXJzJiBtX2ppdDsKICAgICB1bnNpZ25lZCBtX3BlZWtPZmZzZXQ7CiAgICAgdW5z
aWduZWQgbV9ncHJBcmd1bWVudEluZGV4OwogICAgIHVuc2lnbmVkIG1fZnByQXJndW1lbnRJbmRl
eDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNp
b24gMTU2MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShGVExfSklUKQogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKLSNpbmNsdWRlICJERkdDQ2FsbEhlbHBl
cnMuaCIKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIK
ICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJGVExKSVRDb2RlLmgiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRUaHVua0dlbmVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFRodW5rR2VuZXJhdG9y
LmgJKHJldmlzaW9uIDE1NjExOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhp
dFRodW5rR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE0ICszMCwxNCBAQAogCiAj
aWYgRU5BQkxFKEZUTF9KSVQpCiAKLSNpbmNsdWRlICJERkdDQ2FsbEhlbHBlcnMuaCIKKyNpbmNs
dWRlICJDQ2FsbEhlbHBlcnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewog
CiBjbGFzcyBTdGF0ZTsKIHN0cnVjdCBPU1JFeGl0Q29tcGlsYXRpb25JbmZvOwogCi1jbGFzcyBF
eGl0VGh1bmtHZW5lcmF0b3IgOiBwdWJsaWMgREZHOjpDQ2FsbEhlbHBlcnMgeworY2xhc3MgRXhp
dFRodW5rR2VuZXJhdG9yIDogcHVibGljIENDYWxsSGVscGVycyB7CiBwdWJsaWM6CiAgICAgRXhp
dFRodW5rR2VuZXJhdG9yKFN0YXRlJiBzdGF0ZSk7CiAgICAgfkV4aXRUaHVua0dlbmVyYXRvcigp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAxNTYx
MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKLSNpbmNsdWRlICJERkdDQ2FsbEhlbHBl
cnMuaCIKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIK
ICNpbmNsdWRlICJGVExKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAJKHJldmlzaW9uIDE1NjExOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKLSNpbmNsdWRlICJERkdH
UFJJbmZvLmgiCi0jaW5jbHVkZSAiREZHRlBSSW5mby5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIK
KyNpbmNsdWRlICJGUFJJbmZvLmgiCiAjaW5jbHVkZSAiRlRMT1NSRXhpdENvbXBpbGVyLmgiCiAj
aW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAxNTYwNzUpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlI
ZWxwZXJzLmNwcDoxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVycy5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworRXhlY3V0YWJsZUJhc2UqIEFzc2Vt
Ymx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQor
eworICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIHJldHVybiBt
X2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CisgICAgCisgICAgcmV0dXJuIGNvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpOworfQorCitWZWN0b3I8Qnl0ZWNv
ZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29kZU1hcEZvcihD
b2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBBU1NFUlQoY29kZUJsb2NrID09IGNvZGVCbG9j
ay0+YmFzZWxpbmVWZXJzaW9uKCkpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0Q29kZU1h
cCgpKTsKKyAgICAKKyAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1h
Y2hpbmVPZmZzZXQ+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX2RlY29kZWRDb2RlTWFwcy5hZGQo
Y29kZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PigpKTsKKyAgICAKKyAg
ICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgp
LT5kZWNvZGUocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CisgICAgCisgICAgcmV0dXJuIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7Cit9CisKKyNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCit2b2lk
IEFzc2VtYmx5SGVscGVyczo6c2V0U2FtcGxpbmdGbGFnKGludDMyX3QgZmxhZykKK3sKKyAgICBB
U1NFUlQoZmxhZyA+PSAxKTsKKyAgICBBU1NFUlQoZmxhZyA8PSAzMik7CisgICAgb3IzMihUcnVz
dGVkSW1tMzIoMXUgPDwgKGZsYWcgLSAxKSksIEFic29sdXRlQWRkcmVzcyhTYW1wbGluZ0ZsYWdz
OjphZGRyZXNzT2ZGbGFncygpKSk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjbGVhclNh
bXBsaW5nRmxhZyhpbnQzMl90IGZsYWcpCit7CisgICAgQVNTRVJUKGZsYWcgPj0gMSk7CisgICAg
QVNTRVJUKGZsYWcgPD0gMzIpOworICAgIGFuZDMyKFRydXN0ZWRJbW0zMih+KDF1IDw8IChmbGFn
IC0gMSkpKSwgQWJzb2x1dGVBZGRyZXNzKFNhbXBsaW5nRmxhZ3M6OmFkZHJlc3NPZkZsYWdzKCkp
KTsKK30KKyNlbmRpZgorCisjaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQorI2lmIFVTRShKU1ZB
TFVFNjQpCit2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNJbnQzMihHUFJSZWcgZ3By
KQoreworI2lmIENQVShYODZfNjQpCisgICAgSnVtcCBjaGVja0ludDMyID0gYnJhbmNoNjQoQmVs
b3dPckVxdWFsLCBncHIsIFRydXN0ZWRJbW02NChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4RkZG
RkZGRkZ1KSkpOworICAgIGJyZWFrcG9pbnQoKTsKKyAgICBjaGVja0ludDMyLmxpbmsodGhpcyk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShncHIpOworI2VuZGlmCit9CisKK3ZvaWQgQXNzZW1i
bHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnIGdwcikKK3sKKyAgICBKdW1wIGNo
ZWNrSlNJbnQzMiA9IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOworICAgIGJyZWFrcG9pbnQoKTsKKyAgICBjaGVja0pTSW50MzIubGlu
ayh0aGlzKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNOdW1iZXIo
R1BSUmVnIGdwcikKK3sKKyAgICBKdW1wIGNoZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KTsKKyAgICBicmVha3BvaW50KCk7CisgICAgY2hlY2tKU051bWJlci5saW5rKHRoaXMpOworfQor
Cit2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcgZ3ByKQor
eworICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgSnVtcCBjaGVja0pTTnVtYmVyID0g
YnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgY2hlY2tKU0ludDMyLmxpbmsodGhpcyk7CisgICAgYnJl
YWtwb2ludCgpOworICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsKK30KKwordm9pZCBBc3Nl
bWJseUhlbHBlcnM6OmppdEFzc2VydElzQ2VsbChHUFJSZWcgZ3ByKQoreworICAgIEp1bXAgY2hl
Y2tDZWxsID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86
OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgYnJlYWtwb2ludCgpOworICAgIGNoZWNrQ2VsbC5saW5r
KHRoaXMpOworfQorI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK3ZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpqaXRBc3NlcnRJc0ludDMyKEdQUlJlZyBncHIpCit7CisgICAgVU5VU0VEX1BBUkFNKGdwcik7
Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnIGdw
cikKK3sKKyAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDMyKEVxdWFsLCBncHIsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgIGJyZWFrcG9pbnQoKTsKKyAgICBjaGVj
a0pTSW50MzIubGluayh0aGlzKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2Vy
dElzSlNOdW1iZXIoR1BSUmVnIGdwcikKK3sKKyAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5j
aDMyKEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworICAgIEp1
bXAgY2hlY2tKU0RvdWJsZSA9IGJyYW5jaDMyKEJlbG93LCBncHIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpMb3dlc3RUYWcpKTsKKyAgICBicmVha3BvaW50KCk7CisgICAgY2hlY2tKU0ludDMyLmxp
bmsodGhpcyk7CisgICAgY2hlY2tKU0RvdWJsZS5saW5rKHRoaXMpOworfQorCit2b2lkIEFzc2Vt
Ymx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcgZ3ByKQoreworICAgIEp1bXAg
Y2hlY2tKU0RvdWJsZSA9IGJyYW5jaDMyKEJlbG93LCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpMb3dlc3RUYWcpKTsKKyAgICBicmVha3BvaW50KCk7CisgICAgY2hlY2tKU0RvdWJsZS5saW5r
KHRoaXMpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNDZWxsKEdQUlJl
ZyBncHIpCit7CisgICAgSnVtcCBjaGVja0NlbGwgPSBicmFuY2gzMihFcXVhbCwgZ3ByLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgIGJyZWFrcG9pbnQoKTsKKyAgICBjaGVj
a0NlbGwubGluayh0aGlzKTsKK30KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQorCit2b2lk
IEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKQoreworICAgIEp1
bXAgY2hlY2tDRlIgPSBicmFuY2hUZXN0UHRyKFplcm8sIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBUcnVzdGVkSW1tMzIoNykpOworICAgIGJyZWFrcG9pbnQoKTsKKyAgICBjaGVja0NGUi5s
aW5rKHRoaXMpOworfQorI2VuZGlmIC8vIERGR19FTkFCTEUoSklUX0FTU0VSVCkKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtp
bmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjQsMTEgKzI0LDExIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVycy5oIgorI2luY2x1ZGUgIkFzc2VtYmx5
SGVscGVycy5oIgogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKEpJVCkKIAotbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworbmFtZXNwYWNlIEpTQyB7CiAKIEV4ZWN1dGFi
bGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYg
Y29kZU9yaWdpbikKIHsKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNs
ZWFyU2FtcGxpbmdGbGFnKAogfQogI2VuZGlmCiAKLSNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQp
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAogI2lmIFVTRShKU1ZBTFVFNjQpCiB2b2lkIEFzc2VtYmx5
SGVscGVyczo6aml0QXNzZXJ0SXNJbnQzMihHUFJSZWcgZ3ByKQogewpAQCAtMTUzLDkgKzE1Myw5
IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRIYXNWYWxpZEMKICAgICBicmVha3Bv
aW50KCk7CiAgICAgY2hlY2tDRlIubGluayh0aGlzKTsKIH0KLSNlbmRpZiAvLyBERkdfRU5BQkxF
KEpJVF9BU1NFUlQpCisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCi19IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCit9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTU2MDc1KQkoZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oOjE1NjA3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBERkdBc3NlbWJseUhlbHBlcnNfaAorI2RlZmluZSBERkdBc3Nl
bWJseUhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkRGR0ZQUkluZm8u
aCIKKyNpbmNsdWRlICJERkdHUFJJbmZvLmgiCisjaW5jbHVkZSAiREZHSklUQ29kZS5oIgorI2lu
Y2x1ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordHlwZWRlZiB2b2lk
ICgqVl9ERkdEZWJ1Z09wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKik7CisK
K2NsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CitwdWJsaWM6
CisgICAgQXNzZW1ibHlIZWxwZXJzKFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAg
ICAgIDogbV92bSh2bSkKKyAgICAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgICAg
ICwgbV9iYXNlbGluZUNvZGVCbG9jayhjb2RlQmxvY2sgPyBjb2RlQmxvY2stPmJhc2VsaW5lVmVy
c2lvbigpIDogMCkKKyAgICB7CisgICAgICAgIGlmIChtX2NvZGVCbG9jaykgeworICAgICAgICAg
ICAgQVNTRVJUKG1fYmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICAgICAgQVNTRVJUKCFtX2Jh
c2VsaW5lQ29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2Jh
c2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgeyByZXR1cm4g
bV9jb2RlQmxvY2s7IH0KKyAgICBWTSogdm0oKSB7IHJldHVybiBtX3ZtOyB9CisgICAgQXNzZW1i
bGVyVHlwZV9UJiBhc3NlbWJsZXIoKSB7IHJldHVybiBtX2Fzc2VtYmxlcjsgfQorICAgIAorI2lm
IENQVShYODZfNjQpIHx8IENQVShYODYpCisgICAgdm9pZCBwcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIHBvcChyZWcpOworICAgIH0KKwor
ICAgIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSUmVnIHJlZykKKyAg
ICB7CisgICAgICAgIHB1c2gocmVnKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHB1c2go
YWRkcmVzcyk7CisgICAgfQorI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShYODYpCisKKyNp
ZiBDUFUoQVJNKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtb3ZlKGxpbmtSZWdpc3Rl
ciwgcmVnKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFk
ZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtb3ZlKHJl
ZywgbGlua1JlZ2lzdGVyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9y
ZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbG9hZFB0cihhZGRyZXNzLCBsaW5rUmVnaXN0ZXIpOworICAgIH0KKyNlbmRpZgorCisjaWYg
Q1BVKE1JUFMpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0Fm
dGVyQ2FsbChSZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUocmV0dXJuQWRkcmVz
c1JlZ2lzdGVyLCByZWcpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3Jl
UmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAg
IG1vdmUocmVnLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIHJldHVybkFkZHJlc3NSZWdpc3Rl
cik7CisgICAgfQorI2VuZGlmCisKKyNpZiBDUFUoU0g0KQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdHNwcihyZWcpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkc3ByKHJlZyk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIGxvYWRQdHJMaW5rUmVnKGFkZHJlc3MpOworICAgIH0K
KyNlbmRpZgorCisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNr
OjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvKQorICAgIHsKKyAgICAgICAg
bG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVv
ZihSZWdpc3RlcikpLCB0byk7CisgICAgfQorICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVh
ZGVyKEdQUlJlZyBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKKyAg
ICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgc3RvcmU2NChmcm9tLCBBZGRyZXNzKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsKKyNl
bHNlCisgICAgICAgIHN0b3JlMzIoZnJvbSwgQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2
b2lkIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgSlNTdGFj
azo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgeworICAgICAgICBzdG9yZVB0cihU
cnVzdGVkSW1tUHRyKHZhbHVlKSwgQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
ZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hJZk5v
dENlbGwoR1BSUmVnIHJlZykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgcmVnLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgcmVnLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwor
I2VuZGlmCisgICAgfQorICAgIAorICAgIHN0YXRpYyBBZGRyZXNzIGFkZHJlc3NGb3IoVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKKyAgICB7CisgICAgICAgIHJldHVybiBBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0ZXIgKiBzaXplb2YoUmVn
aXN0ZXIpKTsKKyAgICB9CisgICAgc3RhdGljIEFkZHJlc3MgYWRkcmVzc0ZvcihpbnQgb3BlcmFu
ZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZGRyZXNzRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxS
ZWdpc3Rlcj4ob3BlcmFuZCkpOworICAgIH0KKworICAgIHN0YXRpYyBBZGRyZXNzIHRhZ0ZvcihW
aXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3RlciAqIHNpemVv
ZihSZWdpc3RlcikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNC
aXRzLnRhZykpOworICAgIH0KKyAgICBzdGF0aWMgQWRkcmVzcyB0YWdGb3IoaW50IG9wZXJhbmQp
CisgICAgeworICAgICAgICByZXR1cm4gdGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rl
cj4ob3BlcmFuZCkpOworICAgIH0KKworICAgIHN0YXRpYyBBZGRyZXNzIHBheWxvYWRGb3IoVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKKyAgICB7CisgICAgICAgIHJldHVybiBBZGRy
ZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0ZXIgKiBzaXplb2Yo
UmVnaXN0ZXIpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSk7CisgICAgfQorICAgIHN0YXRpYyBBZGRyZXNzIHBheWxvYWRGb3IoaW50IG9w
ZXJhbmQpCisgICAgeworICAgICAgICByZXR1cm4gcGF5bG9hZEZvcihzdGF0aWNfY2FzdDxWaXJ0
dWFsUmVnaXN0ZXI+KG9wZXJhbmQpKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaElmTm90T2Jq
ZWN0KEdQUlJlZyBzdHJ1Y3R1cmVSZWcpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoOChC
ZWxvdywgQWRkcmVzcyhzdHJ1Y3R1cmVSZWcsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOworICAgIH0KKworICAgIHN0YXRpYyBHUFJS
ZWcgc2VsZWN0U2NyYXRjaEdQUihHUFJSZWcgcHJlc2VydmUxID0gSW52YWxpZEdQUlJlZywgR1BS
UmVnIHByZXNlcnZlMiA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTMgPSBJbnZhbGlk
R1BSUmVnLCBHUFJSZWcgcHJlc2VydmU0ID0gSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAg
IGlmIChwcmVzZXJ2ZTEgIT0gR1BSSW5mbzo6cmVnVDAgJiYgcHJlc2VydmUyICE9IEdQUkluZm86
OnJlZ1QwICYmIHByZXNlcnZlMyAhPSBHUFJJbmZvOjpyZWdUMCAmJiBwcmVzZXJ2ZTQgIT0gR1BS
SW5mbzo6cmVnVDApCisgICAgICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDA7CisKKyAgICAg
ICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJbmZvOjpyZWdUMSAmJiBwcmVzZXJ2ZTIgIT0gR1BSSW5m
bzo6cmVnVDEgJiYgcHJlc2VydmUzICE9IEdQUkluZm86OnJlZ1QxICYmIHByZXNlcnZlNCAhPSBH
UFJJbmZvOjpyZWdUMSkKKyAgICAgICAgICAgIHJldHVybiBHUFJJbmZvOjpyZWdUMTsKKworICAg
ICAgICBpZiAocHJlc2VydmUxICE9IEdQUkluZm86OnJlZ1QyICYmIHByZXNlcnZlMiAhPSBHUFJJ
bmZvOjpyZWdUMiAmJiBwcmVzZXJ2ZTMgIT0gR1BSSW5mbzo6cmVnVDIgJiYgcHJlc2VydmU0ICE9
IEdQUkluZm86OnJlZ1QyKQorICAgICAgICAgICAgcmV0dXJuIEdQUkluZm86OnJlZ1QyOworCisg
ICAgICAgIGlmIChwcmVzZXJ2ZTEgIT0gR1BSSW5mbzo6cmVnVDMgJiYgcHJlc2VydmUyICE9IEdQ
UkluZm86OnJlZ1QzICYmIHByZXNlcnZlMyAhPSBHUFJJbmZvOjpyZWdUMyAmJiBwcmVzZXJ2ZTQg
IT0gR1BSSW5mbzo6cmVnVDMpCisgICAgICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDM7CisK
KyAgICAgICAgcmV0dXJuIEdQUkluZm86OnJlZ1Q0OworICAgIH0KKworICAgIC8vIEFkZCBhIGRl
YnVnIGNhbGwuIFRoaXMgY2FsbCBoYXMgbm8gZWZmZWN0IG9uIEpJVCBjb2RlIGV4ZWN1dGlvbiBz
dGF0ZS4KKyAgICB2b2lkIGRlYnVnQ2FsbChWX0RGR0RlYnVnT3BlcmF0aW9uX0VQUCBmdW5jdGlv
biwgdm9pZCogYXJndW1lbnQpCisgICAgeworICAgICAgICBzaXplX3Qgc2NyYXRjaFNpemUgPSBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpICogKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNo
QnVmZmVyID0gbV92bS0+c2NyYXRjaEJ1ZmZlckZvclNpemUoc2NyYXRjaFNpemUpOworICAgICAg
ICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihz
Y3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVy
ICsgaSk7CisjZWxzZQorICAgICAgICAgICAgc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
LCBidWZmZXIgKyBpKTsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVy
cyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBzdG9yZURvdWJsZShGUFJJbmZv
Ojp0b1JlZ2lzdGVyKGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFj
dGl2ZSBkdXJpbmcgY2FsbC4KKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZm
ZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBzdG9yZVB0
cihUcnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXplKSwgR1BSSW5mbzo6cmVnVDApOworCisjaWYgQ1BV
KFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKE1JUFMpIHx8IENQVShTSDQpCisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihidWZmZXIpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwor
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHNlbGVjdFNjcmF0Y2hHUFIoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50
R1BSMik7CisjZWxpZiBDUFUoWDg2KQorICAgICAgICBwb2tlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCAwKTsKKyAgICAgICAgcG9rZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgMSk7Cisg
ICAgICAgIHBva2UoVHJ1c3RlZEltbVB0cihidWZmZXIpLCAyKTsKKyAgICAgICAgR1BSUmVnIHNj
cmF0Y2ggPSBHUFJJbmZvOjpyZWdUMDsKKyNlbHNlCisjZXJyb3IgIkRGRyBKSVQgbm90IHN1cHBv
cnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKKyNlbmRpZgorICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSwgc2NyYXRjaCk7CisgICAgICAg
IGNhbGwoc2NyYXRjaCk7CisKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZm
ZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBzdG9yZVB0
cihUcnVzdGVkSW1tUHRyKDApLCBHUFJJbmZvOjpyZWdUMCk7CisKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBsb2FkRG91YmxlKEdQUklu
Zm86OnJlZ1QwLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgfQorICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkg
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBsb2FkNjQoYnVmZmVyICsgaSwgR1BS
SW5mbzo6dG9SZWdpc3RlcihpKSk7CisjZWxzZQorICAgICAgICAgICAgbG9hZDMyKGJ1ZmZlciAr
IGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBUaGVzZSBtZXRob2RzIEpJVCBnZW5lcmF0ZSBkeW5hbWljLCBkZWJ1Zy1vbmx5IGNo
ZWNrcyAtIGFraW4gdG8gQVNTRVJUcy4KKyNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCisgICAg
dm9pZCBqaXRBc3NlcnRJc0ludDMyKEdQUlJlZyk7CisgICAgdm9pZCBqaXRBc3NlcnRJc0pTSW50
MzIoR1BSUmVnKTsKKyAgICB2b2lkIGppdEFzc2VydElzSlNOdW1iZXIoR1BSUmVnKTsKKyAgICB2
b2lkIGppdEFzc2VydElzSlNEb3VibGUoR1BSUmVnKTsKKyAgICB2b2lkIGppdEFzc2VydElzQ2Vs
bChHUFJSZWcpOworICAgIHZvaWQgaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKKyNlbHNl
CisgICAgdm9pZCBqaXRBc3NlcnRJc0ludDMyKEdQUlJlZykgeyB9CisgICAgdm9pZCBqaXRBc3Nl
cnRJc0pTSW50MzIoR1BSUmVnKSB7IH0KKyAgICB2b2lkIGppdEFzc2VydElzSlNOdW1iZXIoR1BS
UmVnKSB7IH0KKyAgICB2b2lkIGppdEFzc2VydElzSlNEb3VibGUoR1BSUmVnKSB7IH0KKyAgICB2
b2lkIGppdEFzc2VydElzQ2VsbChHUFJSZWcpIHsgfQorICAgIHZvaWQgaml0QXNzZXJ0SGFzVmFs
aWRDYWxsRnJhbWUoKSB7IH0KKyNlbmRpZgorCisgICAgLy8gVGhlc2UgbWV0aG9kcyBjb252ZXJ0
IGJldHdlZW4gZG91YmxlcywgYW5kIGRvdWJsZXMgYm94ZWQgYW5kIEpTVmFsdWVzLgorI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgR1BSUmVnIGJveERvdWJsZShGUFJSZWcgZnByLCBHUFJSZWcgZ3By
KQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZVRvNjQoZnByLCBncHIpOworICAgICAgICBzdWI2
NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdwcik7CisgICAgICAgIGppdEFzc2Vy
dElzSlNEb3VibGUoZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisgICAgRlBSUmVn
IHVuYm94RG91YmxlKEdQUlJlZyBncHIsIEZQUlJlZyBmcHIpCisgICAgeworICAgICAgICBqaXRB
c3NlcnRJc0pTRG91YmxlKGdwcik7CisgICAgICAgIGFkZDY0KEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlciwgZ3ByKTsKKyAgICAgICAgbW92ZTY0VG9Eb3VibGUoZ3ByLCBmcHIpOworICAg
ICAgICByZXR1cm4gZnByOworICAgIH0KKyAgICAKKyAgICB2b2lkIGJveEludDUyKEdQUlJlZyBz
b3VyY2UsIEdQUlJlZyB0YXJnZXQsIEdQUlJlZyBzY3JhdGNoLCBGUFJSZWcgZnBTY3JhdGNoKQor
ICAgIHsKKyAgICAgICAgLy8gSXMgaXQgYW4gaW50MzI/CisgICAgICAgIHNpZ25FeHRlbmQzMlRv
UHRyKHNvdXJjZSwgc2NyYXRjaCk7CisgICAgICAgIEp1bXAgaXNJbnQzMiA9IGJyYW5jaDY0KEVx
dWFsLCBzb3VyY2UsIHNjcmF0Y2gpOworICAgICAgICAKKyAgICAgICAgLy8gTm9wZSwgaXQncyBu
b3QsIGJ1dCByZWdUMCBjb250YWlucyB0aGUgaW50NjQgdmFsdWUuCisgICAgICAgIGNvbnZlcnRJ
bnQ2NFRvRG91YmxlKHNvdXJjZSwgZnBTY3JhdGNoKTsKKyAgICAgICAgYm94RG91YmxlKGZwU2Ny
YXRjaCwgdGFyZ2V0KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVtcCgpOworICAgICAgICAKKyAg
ICAgICAgaXNJbnQzMi5saW5rKHRoaXMpOworICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihzb3Vy
Y2UsIHRhcmdldCk7CisgICAgICAgIG9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
LCB0YXJnZXQpOworICAgICAgICAKKyAgICAgICAgZG9uZS5saW5rKHRoaXMpOworICAgIH0KKyNl
bmRpZgorCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICB2b2lkIGJveERvdWJsZShGUFJSZWcg
ZnByLCBHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKKyAgICB7CisgICAgICAgIG1v
dmVEb3VibGVUb0ludHMoZnByLCBwYXlsb2FkR1BSLCB0YWdHUFIpOworICAgIH0KKyAgICB2b2lk
IHVuYm94RG91YmxlKEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2FkR1BSLCBGUFJSZWcgZnBy
LCBGUFJSZWcgc2NyYXRjaEZQUikKKyAgICB7CisgICAgICAgIG1vdmVJbnRzVG9Eb3VibGUocGF5
bG9hZEdQUiwgdGFnR1BSLCBmcHIsIHNjcmF0Y2hGUFIpOworICAgIH0KKyNlbmRpZgorICAgIAor
ICAgIGVudW0gRXhjZXB0aW9uQ2hlY2tLaW5kIHsgTm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEludmVy
dGVkRXhjZXB0aW9uQ2hlY2sgfTsKKyAgICBKdW1wIGVtaXRFeGNlcHRpb25DaGVjayhFeGNlcHRp
b25DaGVja0tpbmQga2luZCA9IE5vcm1hbEV4Y2VwdGlvbkNoZWNrKQorICAgIHsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIHJldHVybiBicmFuY2hUZXN0NjQoa2luZCA9PSBOb3JtYWxFeGNlcHRp
b25DaGVjayA/IE5vblplcm8gOiBaZXJvLCBBYnNvbHV0ZUFkZHJlc3Modm0oKS0+YWRkcmVzc09m
RXhjZXB0aW9uKCkpKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgcmV0dXJuIGJyYW5j
aDMyKGtpbmQgPT0gTm9ybWFsRXhjZXB0aW9uQ2hlY2sgPyBOb3RFcXVhbCA6IEVxdWFsLCBBYnNv
bHV0ZUFkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odm0oKS0+YWRkcmVzc09mRXhjZXB0
aW9uKCkpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworI2VuZGlmCisgICAgfQorCisjaWYgRU5B
QkxFKFNBTVBMSU5HX0NPVU5URVJTKQorICAgIHN0YXRpYyB2b2lkIGVtaXRDb3VudChNYWNyb0Fz
c2VtYmxlciYgaml0LCBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgaW50MzJfdCBp
bmNyZW1lbnQgPSAxKQorICAgIHsKKyAgICAgICAgaml0LmFkZDY0KFRydXN0ZWRJbW0zMihpbmNy
ZW1lbnQpLCBBYnNvbHV0ZUFkZHJlc3MoY291bnRlci5hZGRyZXNzT2ZDb3VudGVyKCkpKTsKKyAg
ICB9CisgICAgdm9pZCBlbWl0Q291bnQoQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXImIGNvdW50ZXIs
IGludDMyX3QgaW5jcmVtZW50ID0gMSkKKyAgICB7CisgICAgICAgIGFkZDY0KFRydXN0ZWRJbW0z
MihpbmNyZW1lbnQpLCBBYnNvbHV0ZUFkZHJlc3MoY291bnRlci5hZGRyZXNzT2ZDb3VudGVyKCkp
KTsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKKyAgICB2b2lk
IHNldFNhbXBsaW5nRmxhZyhpbnQzMl90KTsKKyAgICB2b2lkIGNsZWFyU2FtcGxpbmdGbGFnKGlu
dDMyX3QgZmxhZyk7CisjZW5kaWYKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RG
b3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7CisgICAgfQorICAgIAorICAgIGJvb2wg
c3RyaWN0TW9kZUZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCisgICAgeworICAgICAgICBpZiAo
IWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKTsKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSktPmlz
U3RyaWN0TW9kZSgpOworICAgIH0KKyAgICAKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJs
ZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKTsKKyAgICAKKyAgICBDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCisgICAg
eworICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNv
ZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jaygpKTsKKyAgICB9CisgICAgCisg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSkKKyAgICB7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQorICAgICAg
ICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrKCk7CisgICAgICAgIHJldHVybiBiYXNlbGlu
ZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOworICAgIH0KKyAg
ICAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2Jhc2VsaW5lQ29kZUJsb2NrOworICAgIH0KKyAgICAKKyAgICBpbnQgYXJndW1lbnRz
UmVnaXN0ZXJGb3IoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCisgICAgeworICAg
ICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2so
KS0+YXJndW1lbnRzUmVnaXN0ZXIoKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBiYXNlbGlu
ZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZSgKKyAgICAgICAgICAgIGlubGluZUNhbGxGcmFt
ZSktPmFyZ3VtZW50c1JlZ2lzdGVyKCkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0Owor
ICAgIH0KKyAgICAKKyAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXJGb3IoY29uc3QgQ29kZU9yaWdp
biYgY29kZU9yaWdpbikKKyAgICB7CisgICAgICAgIHJldHVybiBhcmd1bWVudHNSZWdpc3RlckZv
cihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgfQorICAgIAorICAgIFNoYXJlZFN5
bWJvbFRhYmxlKiBzeW1ib2xUYWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pLT5z
eW1ib2xUYWJsZSgpOworICAgIH0KKworICAgIGludCBvZmZzZXRPZkxvY2Fscyhjb25zdCBDb2Rl
T3JpZ2luJiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKTsKKyAg
ICB9CisKKyAgICBpbnQgb2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKGNvbnN0IENvZGVP
cmlnaW4mIGNvZGVPcmlnaW4pCisgICAgeworICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJ
bmNsdWRpbmdUaGlzKDApICogc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIChjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50
T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSkgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgIH0KKworICAg
IFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBkZWNvZGVkQ29kZU1hcEZvcihDb2Rl
QmxvY2sqKTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBWTSogbV92bTsKKyAgICBDb2RlQmxvY2sq
IG1fY29kZUJsb2NrOworICAgIENvZGVCbG9jayogbV9iYXNlbGluZUNvZGVCbG9jazsKKworICAg
IEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gPiBt
X2RlY29kZWRDb2RlTWFwczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHQXNzZW1ibHlIZWxwZXJzX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3
b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyNCArMjMsMjMgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpZm5kZWYgREZHQXNzZW1ibHlIZWxwZXJzX2gKLSNkZWZpbmUgREZHQXNzZW1ibHlI
ZWxwZXJzX2gKKyNpZm5kZWYgQXNzZW1ibHlIZWxwZXJzX2gKKyNkZWZpbmUgQXNzZW1ibHlIZWxw
ZXJzX2gKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgRU5BQkxFKERGR19KSVQp
CisjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkRG
R0ZQUkluZm8uaCIKLSNpbmNsdWRlICJERkdHUFJJbmZvLmgiCi0jaW5jbHVkZSAiREZHSklUQ29k
ZS5oIgotI2luY2x1ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJGUFJJbmZvLmgiCisjaW5jbHVk
ZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJWTS5oIgogI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKK25hbWVzcGFjZSBKU0MgewogCi10eXBlZGVmIHZvaWQgKCpWX0RGR0RlYnVnT3BlcmF0aW9u
X0VQUCkoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKTsKK3R5cGVkZWYgdm9pZCAoKlZfRGVidWdP
cGVyYXRpb25fRVBQKShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCopOwogCiBjbGFzcyBBc3NlbWJs
eUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogcHVibGljOgpAQCAtNTIsNyArNTEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2NvZGVCbG9jaykgewogICAgICAgICAgICAgQVNT
RVJUKG1fYmFzZWxpbmVDb2RlQmxvY2spOwogICAgICAgICAgICAgQVNTRVJUKCFtX2Jhc2VsaW5l
Q29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Jhc2VsaW5l
Q29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAg
ICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKG1fYmFzZWxpbmVDb2RlQmxvY2stPmpp
dFR5cGUoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMjA1LDcgKzIwNCw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICAvLyBBZGQgYSBkZWJ1ZyBjYWxsLiBUaGlzIGNhbGwgaGFzIG5v
IGVmZmVjdCBvbiBKSVQgY29kZSBleGVjdXRpb24gc3RhdGUuCi0gICAgdm9pZCBkZWJ1Z0NhbGwo
Vl9ERkdEZWJ1Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQorICAgIHZv
aWQgZGVidWdDYWxsKFZfRGVidWdPcGVyYXRpb25fRVBQIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVu
dCkKICAgICB7CiAgICAgICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVycyk7CiAgICAgICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSBtX3ZtLT5z
Y3JhdGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7CkBAIC0yMzksNyArMjM4LDcgQEAgcHVi
bGljOgogICAgICAgICBwb2tlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgMik7CiAgICAgICAgIEdQ
UlJlZyBzY3JhdGNoID0gR1BSSW5mbzo6cmVnVDA7CiAjZWxzZQotI2Vycm9yICJERkcgSklUIG5v
dCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCisjZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVk
IG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCBzY3JhdGNoKTsKICAgICAgICAgY2Fs
bChzY3JhdGNoKTsKQEAgLTI2MSw3ICsyNjAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8g
VGhlc2UgbWV0aG9kcyBKSVQgZ2VuZXJhdGUgZHluYW1pYywgZGVidWctb25seSBjaGVja3MgLSBh
a2luIHRvIEFTU0VSVHMuCi0jaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQorI2lmICFBU1NFUlRf
RElTQUJMRUQKICAgICB2b2lkIGppdEFzc2VydElzSW50MzIoR1BSUmVnKTsKICAgICB2b2lkIGpp
dEFzc2VydElzSlNJbnQzMihHUFJSZWcpOwogICAgIHZvaWQgaml0QXNzZXJ0SXNKU051bWJlcihH
UFJSZWcpOwpAQCAtNDI0LDkgKzQyMyw5IEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFwPENvZGVC
bG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+ID4gbV9kZWNvZGVkQ29kZU1h
cHM7CiB9OwogCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCit9IC8vIG5hbWVzcGFjZSBKU0MK
IAotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKLSNl
bmRpZiAvLyBERkdBc3NlbWJseUhlbHBlcnNfaAorI2VuZGlmIC8vIEFzc2VtYmx5SGVscGVyc19o
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNp
b24gMTU2MDc1KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVy
cy5oOjE1NjA3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQ0NhbGxIZWxwZXJzX2gKKyNkZWZp
bmUgREZHQ0NhbGxIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYg
RU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNs
dWRlICJERkdHUFJJbmZvLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwor
Y2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CitwdWJsaWM6Cisg
ICAgQ0NhbGxIZWxwZXJzKFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwKQorICAgICAg
ICA6IEFzc2VtYmx5SGVscGVycyh2bSwgY29kZUJsb2NrKQorICAgIHsKKyAgICB9CisKKyAgICAv
LyBUaGVzZSBtZXRob2RzIHVzZWQgdG8gc29ydCBhcmd1bWVudHMgaW50byB0aGUgY29ycmVjdCBy
ZWdpc3RlcnMuCisgICAgLy8gT24gWDg2IHdlIHVzZSBjZGVjbCBjYWxsaW5nIGNvbnZlbnRpb25z
LCB3aGljaCBwYXNzIGFsbCBhcmd1bWVudHMgb24gdGhlCisgICAgLy8gc3RhY2suIE9uIG90aGVy
IGFyY2hpdGVjdHVyZXMgd2UgbWF5IG5lZWQgdG8gc29ydCB2YWx1ZXMgaW50byB0aGUKKyAgICAv
LyBjb3JyZWN0IHJlZ2lzdGVycy4KKyNpZiAhTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUwor
ICAgIHVuc2lnbmVkIG1fY2FsbEFyZ3VtZW50T2Zmc2V0OworICAgIHZvaWQgcmVzZXRDYWxsQXJn
dW1lbnRzKCkgeyBtX2NhbGxBcmd1bWVudE9mZnNldCA9IDA7IH0KKworICAgIC8vIFRoZXNlIG1l
dGhvZHMgYXJlIHVzaW5nIGludGVybmFsbHkgdG8gaW1wbGVtZW50IHRoZSBjYWxsT3BlcmF0aW9u
IG1ldGhvZHMuCisgICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoR1BSUmVnIHZhbHVlKQorICAgIHsK
KyAgICAgICAgcG9rZSh2YWx1ZSwgbV9jYWxsQXJndW1lbnRPZmZzZXQrKyk7CisgICAgfQorICAg
IHZvaWQgYWRkQ2FsbEFyZ3VtZW50KFRydXN0ZWRJbW0zMiBpbW0pCisgICAgeworICAgICAgICBw
b2tlKGltbSwgbV9jYWxsQXJndW1lbnRPZmZzZXQrKyk7CisgICAgfQorICAgIHZvaWQgYWRkQ2Fs
bEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIgcG9pbnRlcikKKyAgICB7CisgICAgICAgIHBva2UocG9p
bnRlciwgbV9jYWxsQXJndW1lbnRPZmZzZXQrKyk7CisgICAgfQorICAgIHZvaWQgYWRkQ2FsbEFy
Z3VtZW50KEZQUlJlZyB2YWx1ZSkKKyAgICB7CisgICAgICAgIHN0b3JlRG91YmxlKHZhbHVlLCBB
ZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBtX2NhbGxBcmd1bWVudE9mZnNldCAqIHNpemVv
Zih2b2lkKikpKTsKKyAgICAgICAgbV9jYWxsQXJndW1lbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJs
ZSkgLyBzaXplb2Yodm9pZCopOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAg
ICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCisgICAgeworICAg
ICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMik7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
cyhUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMo
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpCisgICAgeworICAgICAgICByZXNl
dENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxs
QXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIgYXJnMSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSkKKyAgICB7CisgICAgICAg
IHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyKQorICAgIHsKKyAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW0zMiBhcmcyKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFk
ZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxs
QXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMikKKyAg
ICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBh
cmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyKQorICAg
IHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBh
cmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAg
eworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbVB0ciBh
cmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIs
IEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZElt
bTMyIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFy
Z3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBy
ZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tUHRy
IGFyZzMpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFy
ZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQorICAg
IHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwg
R1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Cisg
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzQpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0
Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFk
ZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZElt
bVB0ciBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQorICAgIHsK
KyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcx
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0z
MiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAg
IHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkK
KyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAg
ICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICB9CisjZW5kaWYg
Ly8gIU5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFy
ZSBzdWl0YWJsZSBmb3IgYW55IGNhbGxpbmcgY29udmVudGlvbiB0aGF0IHByb3ZpZGVzIGZvcgor
ICAgIC8vIGF0IGxlYXN0IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIFg4Nl82NCwgQVJNdjcu
CisjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0CisgICAgdGVtcGxhdGU8R1BS
UmVnIGRlc3RBLCBHUFJSZWcgZGVzdEI+CisgICAgdm9pZCBzZXR1cFR3b1N0dWJBcmdzKEdQUlJl
ZyBzcmNBLCBHUFJSZWcgc3JjQikKKyAgICB7CisgICAgICAgIC8vIEFzc3VtaW5nIHRoYXQgc3Jj
QSAhPSBzcmNCLCB0aGVyZSBhcmUgNyBpbnRlcmVzdGluZyBzdGF0ZXMgdGhlIHJlZ2lzdGVycyBt
YXkgYmUgaW46CisgICAgICAgIC8vICgxKSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0
aGUgcmlnaHQgd2F5IGFyb3VuZC4KKyAgICAgICAgLy8gKDIpIGJvdGggYXJlIGFscmVhZHkgaW4g
YXJnIHJlZ3MsIHRoZSB3cm9uZyB3YXkgYXJvdW5kLgorICAgICAgICAvLyAoMykgbmVpdGhlciBh
cmUgY3VycmVudGx5IGluIGFyZyByZWdpc3RlcnMuCisgICAgICAgIC8vICg0KSBzcmNBIGluIGlu
IGl0cyBjb3JyZWN0IHJlZy4KKyAgICAgICAgLy8gKDUpIHNyY0EgaW4gaW4gdGhlIGluY29ycmVj
dCByZWcuCisgICAgICAgIC8vICg2KSBzcmNCIGluIGluIGl0cyBjb3JyZWN0IHJlZy4KKyAgICAg
ICAgLy8gKDcpIHNyY0IgaW4gaW4gdGhlIGluY29ycmVjdCByZWcuCisgICAgICAgIC8vCisgICAg
ICAgIC8vIFRoZSB0cml2aWFsIGFwcHJvYWNoIGlzIHRvIHNpbXBseSBlbWl0IHR3byBtb3Zlcywg
dG8gcHV0IHNyY0EgaW4gcGxhY2UgdGhlbiBzcmNCIGluCisgICAgICAgIC8vIHBsYWNlICh0aGUg
TWFjcm9Bc3NlbWJsZXIgd2lsbCBvbWl0IHJlZHVuZGFudCBtb3ZlcykuIFRoaXMgYXBwb3JhY2gg
d2lsbCBiZSBzYWZlIGluCisgICAgICAgIC8vIGNhc2VzIDEsIDMsIDQsIDUsIDYsIGFuZCBpbiBj
YXNlcyB3aGVyZSBzcmNBPT1zcmNCLiBUaGUgdHdvIHByb2JsZW0gY2FzZXMgYXJlIDIKKyAgICAg
ICAgLy8gKHJlcXVpcmVzIGEgc3dhcCkgYW5kIDcgKG11c3QgbW92ZSBzcmNCIGZpcnN0LCB0byBh
dm9pZCB0cmFtcGxpbmcuKQorCisgICAgICAgIGlmIChzcmNCICE9IGRlc3RBKSB7CisgICAgICAg
ICAgICAvLyBIYW5kbGUgdGhlIGVhc3kgY2FzZXMgLSB0d28gc2ltcGxlIG1vdmVzLgorICAgICAg
ICAgICAgbW92ZShzcmNBLCBkZXN0QSk7CisgICAgICAgICAgICBtb3ZlKHNyY0IsIGRlc3RCKTsK
KyAgICAgICAgfSBlbHNlIGlmIChzcmNBICE9IGRlc3RCKSB7CisgICAgICAgICAgICAvLyBIYW5k
bGUgdGhlIG5vbi1zd2FwIGNhc2UgLSBqdXN0IHB1dCBzcmNCIGluIHBsYWNlIGZpcnN0LgorICAg
ICAgICAgICAgbW92ZShzcmNCLCBkZXN0Qik7CisgICAgICAgICAgICBtb3ZlKHNyY0EsIGRlc3RB
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzd2FwKGRlc3RBLCBkZXN0Qik7CisgICAg
fQorI2lmIENQVShYODZfNjQpCisgICAgdGVtcGxhdGU8RlBSUmVnIGRlc3RBLCBGUFJSZWcgZGVz
dEI+CisgICAgdm9pZCBzZXR1cFR3b1N0dWJBcmdzKEZQUlJlZyBzcmNBLCBGUFJSZWcgc3JjQikK
KyAgICB7CisgICAgICAgIC8vIEFzc3VtaW5nIHRoYXQgc3JjQSAhPSBzcmNCLCB0aGVyZSBhcmUg
NyBpbnRlcmVzdGluZyBzdGF0ZXMgdGhlIHJlZ2lzdGVycyBtYXkgYmUgaW46CisgICAgICAgIC8v
ICgxKSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUgcmlnaHQgd2F5IGFyb3VuZC4K
KyAgICAgICAgLy8gKDIpIGJvdGggYXJlIGFscmVhZHkgaW4gYXJnIHJlZ3MsIHRoZSB3cm9uZyB3
YXkgYXJvdW5kLgorICAgICAgICAvLyAoMykgbmVpdGhlciBhcmUgY3VycmVudGx5IGluIGFyZyBy
ZWdpc3RlcnMuCisgICAgICAgIC8vICg0KSBzcmNBIGluIGluIGl0cyBjb3JyZWN0IHJlZy4KKyAg
ICAgICAgLy8gKDUpIHNyY0EgaW4gaW4gdGhlIGluY29ycmVjdCByZWcuCisgICAgICAgIC8vICg2
KSBzcmNCIGluIGluIGl0cyBjb3JyZWN0IHJlZy4KKyAgICAgICAgLy8gKDcpIHNyY0IgaW4gaW4g
dGhlIGluY29ycmVjdCByZWcuCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoZSB0cml2aWFsIGFw
cHJvYWNoIGlzIHRvIHNpbXBseSBlbWl0IHR3byBtb3ZlcywgdG8gcHV0IHNyY0EgaW4gcGxhY2Ug
dGhlbiBzcmNCIGluCisgICAgICAgIC8vIHBsYWNlICh0aGUgTWFjcm9Bc3NlbWJsZXIgd2lsbCBv
bWl0IHJlZHVuZGFudCBtb3ZlcykuIFRoaXMgYXBwb3JhY2ggd2lsbCBiZSBzYWZlIGluCisgICAg
ICAgIC8vIGNhc2VzIDEsIDMsIDQsIDUsIDYsIGFuZCBpbiBjYXNlcyB3aGVyZSBzcmNBPT1zcmNC
LiBUaGUgdHdvIHByb2JsZW0gY2FzZXMgYXJlIDIKKyAgICAgICAgLy8gKHJlcXVpcmVzIGEgc3dh
cCkgYW5kIDcgKG11c3QgbW92ZSBzcmNCIGZpcnN0LCB0byBhdm9pZCB0cmFtcGxpbmcuKQorCisg
ICAgICAgIGlmIChzcmNCICE9IGRlc3RBKSB7CisgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGVh
c3kgY2FzZXMgLSB0d28gc2ltcGxlIG1vdmVzLgorICAgICAgICAgICAgbW92ZURvdWJsZShzcmNB
LCBkZXN0QSk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKHNyY0IsIGRlc3RCKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHNyY0EgIT0gZGVz
dEIpIHsKKyAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgbm9uLXN3YXAgY2FzZSAtIGp1c3QgcHV0
IHNyY0IgaW4gcGxhY2UgZmlyc3QuCisgICAgICAgICAgICBtb3ZlRG91YmxlKHNyY0IsIGRlc3RC
KTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoc3JjQSwgZGVzdEEpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHNyY0IgPT0gZGVzdEEgJiYgc3JjQSA9
PSBkZXN0Qik7CisgICAgICAgIC8vIE5lZWQgdG8gc3dhcDsgcGljayBhIHRlbXBvcmFyeSByZWdp
c3Rlci4KKyAgICAgICAgRlBSUmVnIHRlbXA7CisgICAgICAgIGlmIChkZXN0QSAhPSBGUFJJbmZv
Ojphcmd1bWVudEZQUjMgJiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIzKQorICAgICAg
ICAgICAgdGVtcCA9IEZQUkluZm86OmFyZ3VtZW50RlBSMzsKKyAgICAgICAgZWxzZSBpZiAoZGVz
dEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIyICYmIGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50
RlBSMikKKyAgICAgICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjI7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBS
MSAmJiBkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICAgICAgdGVtcCA9
IEZQUkluZm86OmFyZ3VtZW50RlBSMTsKKyAgICAgICAgfQorICAgICAgICBtb3ZlRG91YmxlKGRl
c3RBLCB0ZW1wKTsKKyAgICAgICAgbW92ZURvdWJsZShkZXN0QiwgZGVzdEEpOworICAgICAgICBt
b3ZlRG91YmxlKHRlbXAsIGRlc3RCKTsKKyAgICB9CisjZW5kaWYKKyAgICB2b2lkIHNldHVwU3R1
YkFyZ3VtZW50cyhHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBzZXR1
cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
PihhcmcxLCBhcmcyKTsKKyAgICB9CisgICAgdm9pZCBzZXR1cFN0dWJBcmd1bWVudHMoR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIC8vIElmIG5l
aXRoZXIgb2YgYXJnMi9hcmczIGFyZSBpbiBvdXIgd2F5LCB0aGVuIHdlIGNhbiBtb3ZlIGFyZzEg
aW50byBwbGFjZS4KKyAgICAgICAgLy8gVGhlbiB3ZSBjYW4gdXNlIHNldHVwVHdvU3R1YkFyZ3Mg
dG8gZml4IGFyZzIvYXJnMy4KKyAgICAgICAgaWYgKGFyZzIgIT0gR1BSSW5mbzo6YXJndW1lbnRH
UFIxICYmIGFyZzMgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKSB7CisgICAgICAgICAgICBtb3Zl
KGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgICAgICBzZXR1cFR3b1N0dWJB
cmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcyLCBh
cmczKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIG5l
aXRoZXIgb2YgYXJnMS9hcmczIGFyZSBpbiBvdXIgd2F5LCB0aGVuIHdlIGNhbiBtb3ZlIGFyZzIg
aW50byBwbGFjZS4KKyAgICAgICAgLy8gVGhlbiB3ZSBjYW4gdXNlIHNldHVwVHdvU3R1YkFyZ3Mg
dG8gZml4IGFyZzEvYXJnMy4KKyAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5mbzo6YXJndW1lbnRH
UFIyICYmIGFyZzMgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIyKSB7CisgICAgICAgICAgICBtb3Zl
KGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgICAgICBzZXR1cFR3b1N0dWJB
cmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBh
cmczKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIG5l
aXRoZXIgb2YgYXJnMS9hcmcyIGFyZSBpbiBvdXIgd2F5LCB0aGVuIHdlIGNhbiBtb3ZlIGFyZzMg
aW50byBwbGFjZS4KKyAgICAgICAgLy8gVGhlbiB3ZSBjYW4gdXNlIHNldHVwVHdvU3R1YkFyZ3Mg
dG8gZml4IGFyZzEvYXJnMi4KKyAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5mbzo6YXJndW1lbnRH
UFIzICYmIGFyZzIgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7CisgICAgICAgICAgICBtb3Zl
KGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgICAgICBzZXR1cFR3b1N0dWJB
cmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyPihhcmcxLCBh
cmcyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHdl
IGdldCBoZXJlLCB3ZSBoYXZlbid0IGJlZW4gYWJsZSB0byBtb3ZlIGFueSBvZiBhcmcxL2FyZzIv
YXJnMy4KKyAgICAgICAgLy8gU2luY2UgYWxsIHRocmVlIGFyZSBibG9ja2VkLCB0aGVuIGFsbCB0
aHJlZSBtdXN0IGFscmVhZHkgYmUgaW4gdGhlIGFyZ3VtZW50IHJlZ2lzdGVyLgorICAgICAgICAv
LyBCdXQgYXJlIHRoZXkgaW4gdGhlIHJpZ2h0IG9uZXM/CisKKyAgICAgICAgLy8gRmlyc3QsIGVu
c3VyZSBhcmcxIGlzIGluIHBsYWNlLgorICAgICAgICBpZiAoYXJnMSAhPSBHUFJJbmZvOjphcmd1
bWVudEdQUjEpIHsKKyAgICAgICAgICAgIHN3YXAoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKKworICAgICAgICAgICAgLy8gSWYgYXJnMSB3YXNuJ3QgaW4gYXJndW1lbnRHUFIxLCBvbmUg
b2YgYXJnMi9hcmczIG11c3QgYmUuCisgICAgICAgICAgICBBU1NFUlQoYXJnMiA9PSBHUFJJbmZv
Ojphcmd1bWVudEdQUjEgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAg
ICAgICAgLy8gSWYgYXJnMiB3YXMgaW4gYXJndW1lbnRHUFIxIGl0IG5vIGxvbmdlciBpcyAoZHVl
IHRvIHRoZSBzd2FwKS4KKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSBhcmczIG11c3QgaGF2ZSBi
ZWVuLiBNYXJrIGhpbSBhcyBtb3ZlZC4KKyAgICAgICAgICAgIGlmIChhcmcyID09IEdQUkluZm86
OmFyZ3VtZW50R1BSMSkKKyAgICAgICAgICAgICAgICBhcmcyID0gYXJnMTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBhcmczID0gYXJnMTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEVpdGhlciBhcmcyICYgYXJnMyBuZWVkIHN3YXBwaW5nLCBvciB3ZSdyZSBhbGwgZG9uZS4K
KyAgICAgICAgQVNTRVJUKChhcmcyID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiB8fCBhcmczID09
IEdQUkluZm86OmFyZ3VtZW50R1BSMykKKyAgICAgICAgICAgIHx8IChhcmcyID09IEdQUkluZm86
OmFyZ3VtZW50R1BSMyB8fCBhcmczID09IEdQUkluZm86OmFyZ3VtZW50R1BSMikpOworCisgICAg
ICAgIGlmIChhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMikKKyAgICAgICAgICAgIHN3YXAo
R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgIH0KKwor
I2lmIENQVShNSVBTKQorI2RlZmluZSBQT0tFX0FSR1VNRU5UX09GRlNFVCA0CisjZWxzZQorI2Rl
ZmluZSBQT0tFX0FSR1VNRU5UX09GRlNFVCAwCisjZW5kaWYKKworI2lmIENQVShYODZfNjQpCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxKQorICAgIHsK
KyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBS
UmVnIGFyZzIpCisgICAgeworICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxPihhcmcxLCBhcmcyKTsKKyAgICB9CisgICAg
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFy
ZzMpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzMsIEZQUkluZm86OmFyZ3VtZW50RlBS
MCk7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICB9CisjZWxpZiBDUFUoQVJNKQorI2lmIENQVShBUk1fSEFSREZQKQorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmVE
b3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAg
IHsKKyAgICAgICAgaWYgKGFyZzIgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIwKSB7CisgICAgICAg
ICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgICAg
ICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoYXJnMSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjEpIHsKKyAgICAgICAgICAgIG1vdmVE
b3VibGUoYXJnMiwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgICAgIG1vdmVEb3Vi
bGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIFN3YXAgYXJnMSwgYXJnMi4KKyAgICAgICAgICAgIG1vdmVEb3VibGUoRlBSSW5m
bzo6YXJndW1lbnRGUFIwLCBBUk1SZWdpc3RlcnM6OmQyKTsKKyAgICAgICAgICAgIG1vdmVEb3Vi
bGUoRlBSSW5mbzo6YXJndW1lbnRGUFIxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAg
ICAgICAgbW92ZURvdWJsZShBUk1SZWdpc3RlcnM6OmQyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEp
OworICAgICAgICB9CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAg
ICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIG1vdmUo
YXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzMs
IEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcx
LCBhcmcyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiwgRlBSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiwgRlBSUmVnIGFyZzQp
CisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzQsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7
CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9
CisKKyNlbHNlCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBh
cmcxKQorICAgIHsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgYXJnMSk7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAgICB7
CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIGFyZzEpOworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86
OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBhcmcyKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIzKTsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQ
UjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwgYXJnMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJn
dW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQ
UkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6bm9uQXJnR1BSMCwgYXJnMyk7CisgICAgICAg
IHBva2UoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgRlBSUmVn
IGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgcG9rZShhcmczLCBQT0tFX0FSR1VN
RU5UX09GRlNFVCk7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
KyAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMywgYXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBGUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgbW92ZShhcmczLCBH
UFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86
Om5vbkFyZ0dQUjAsIEdQUkluZm86Om5vbkFyZ0dQUjEsIGFyZzQpOworICAgICAgICBwb2tlKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgcG9rZShH
UFJJbmZvOjpub25BcmdHUFIxLCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgIH0KKyNl
bmRpZiAvLyBDUFUoQVJNX0hBUkRGUCkKKyNlbGlmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmVE
b3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAg
IHsKKyAgICAgICAgaWYgKGFyZzIgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIwKSB7CisgICAgICAg
ICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgICAg
ICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoYXJnMSAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjEpIHsKKyAgICAgICAgICAgIG1vdmVE
b3VibGUoYXJnMiwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgICAgIG1vdmVEb3Vi
bGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIFN3YXAgYXJnMSwgYXJnMi4KKyAgICAgICAgICAgIHN3YXBEb3VibGUoRlBSSW5m
bzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICB9CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShG
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBhc3NlbWJsZXIoKS52bW92
KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBhcmcxKTsKKyAg
ICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICAgICAgcG9rZShhcmcyLCA0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgRlBSUmVnIGFyZzMpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwg
YXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHBva2UoYXJnMywgNCk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIg
YXJnMSwgRlBSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgRlBSUmVnIGFyZzQpCisgICAgeworICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnNCk7CisgICAgfQorI2VsaWYg
Q1BVKFNINCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFy
ZzEpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBS
MCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJl
ZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86
OmFyZ3VtZW50RlBSMCkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjph
cmd1bWVudEZQUjApOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1
bWVudEZQUjEpOworICAgICAgICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRG
UFIxKSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBS
MSk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3dhcERvdWJsZShGUFJJbmZvOjphcmd1bWVu
dEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBS
MCk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAg
bW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCisgICAgeworICAgICAg
ICBtb3ZlRG91YmxlKGFyZzMsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisjZWxzZQorI2Vycm9y
ICJERkcgSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCisjZW5kaWYKKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhHUFJSZWcgYXJnMSkKKyAgICB7Cisg
ICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjAs
IEdQUkluZm86OmFyZ3VtZW50R1BSMT4oYXJnMSwgYXJnMik7CisgICAgfQorICAgIAorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAg
eworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCkKKyAgICB7Cisg
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSkKKyAgICB7
CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMiBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAg
IHsKKyAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJn
MSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyNpZiBDUFUoWDg2XzY0KSAgICAKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBUcnVzdGVkSW1tNjQgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
OworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW02NCBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7
CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlz
IGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKKyAgICAgICAgbW92ZShh
cmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyNlbmRpZgorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEltbVB0ciBhcmcyKQorICAgIHsKKyAg
ICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFy
ZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFy
ZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIpOyAvLyBNb3ZlIHRoaXMgZmlyc3QsIHNvIHNldHRpbmcgYXJnMSBkb2VzIG5vdCB0
cmFtcGxlIQorICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAg
ICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOyAvLyBNb3ZlIHRoaXMgZmlyc3Qs
IHNvIHNldHRpbmcgYXJnMSBkb2VzIG5vdCB0cmFtcGxlIQorICAgICAgICBtb3ZlKGFyZzEsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorICAgIAorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoSW1tUHRyIGFyZzEsIEdQUlJl
ZyBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
OyAvLyBNb3ZlIHRoaXMgZmlyc3QsIHNvIHNldHRpbmcgYXJnMSBkb2VzIG5vdCB0cmFtcGxlIQor
ICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAgICBtb3Zl
KGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgVHJ1c3Rl
ZEltbVB0ciBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQorICAgIHsKKyAg
ICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFy
ZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJndW1lbnRz
KGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhh
cmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwor
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJSZWcgYXJnMykK
KyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFyZzMpOworICAgICAgICBtb3ZlKGFyZzIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZElt
bTMyIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIpOworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Cisg
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIg
YXJnMykKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
KyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3Zl
KGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
VHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAgICBt
b3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1t
UHRyIGFyZzMpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7
CisgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAg
eworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1v
dmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0
ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBtb3ZlKGFyZzMsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJn
MykKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAg
ICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFy
ZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHVi
QXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMiwg
YXJnMyk7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAg
ICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAg
IHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMz4oYXJnMiwgYXJnMyk7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgVHJ1c3Rl
ZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAgICBtb3ZlKGFy
ZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMp
OworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVz
dGVkSW1tMzIgYXJnMykKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAg
ICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQor
CisjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0CisgICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBw
cm92aWRlcyBmb3IKKyAgICAvLyBleGFjdGx5IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIEFS
TXY3LgorI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2Uo
YXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJn
NCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBh
cmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tl
KGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1Q
dHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAg
ICB7CisgICAgICAgIHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICAg
ICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQorICAgIHsKKyAg
ICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0LCBUcnVzdGVk
SW1tMzIgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQgKyAxKTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBh
cmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Cisg
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJn
NCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVn
IGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsg
MSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7
CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisg
ICAgeworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1c3RlZEltbVB0
ciBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7
CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQ
UlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNF
VCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJl
ZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgUE9LRV9BUkdV
TUVOVF9PRkZTRVQgKyAxKTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNF
VCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJl
ZyBhcmc0LCBUcnVzdGVkSW1tMzIgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgUE9L
RV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5U
X09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMs
IEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFy
ZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9B
UkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCisgICAgeworICAg
ICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2Uo
YXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3Rl
ZEltbTMyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUp
CisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Cisg
ICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUp
CisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Cisg
ICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisjZW5kaWYg
Ly8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0CisKKyNpZiBOVU1CRVJfT0ZfQVJH
VU1FTlRfUkVHSVNURVJTID49IDUKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJ
bW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8
R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjQ+KGFyZzEsIGFyZzQp
OworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1v
dmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisjZW5kaWYK
KworICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCKQorICAg
IHsKKyAgICAgICAgR1BSUmVnIHNyY0EgPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjsKKyAgICAg
ICAgR1BSUmVnIHNyY0IgPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjI7CisKKyAgICAgICAgaWYg
KGRlc3RBID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtb3ZlKHNyY0IsIGRlc3RCKTsK
KyAgICAgICAgZWxzZSBpZiAoZGVzdEIgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1v
dmUoc3JjQSwgZGVzdEEpOworICAgICAgICBlbHNlIGlmIChzcmNCICE9IGRlc3RBKSB7CisgICAg
ICAgICAgICAvLyBIYW5kbGUgdGhlIGVhc3kgY2FzZXMgLSB0d28gc2ltcGxlIG1vdmVzLgorICAg
ICAgICAgICAgbW92ZShzcmNBLCBkZXN0QSk7CisgICAgICAgICAgICBtb3ZlKHNyY0IsIGRlc3RC
KTsKKyAgICAgICAgfSBlbHNlIGlmIChzcmNBICE9IGRlc3RCKSB7CisgICAgICAgICAgICAvLyBI
YW5kbGUgdGhlIG5vbi1zd2FwIGNhc2UgLSBqdXN0IHB1dCBzcmNCIGluIHBsYWNlIGZpcnN0Lgor
ICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0Qik7CisgICAgICAgICAgICBtb3ZlKHNyY0EsIGRl
c3RBKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzd2FwKGRlc3RBLCBkZXN0Qik7Cisg
ICAgfQorfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdDQ2FsbEhlbHBlcnNfaAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDE3ICsyMywxNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBERkdDQ2FsbEhl
bHBlcnNfaAotI2RlZmluZSBERkdDQ2FsbEhlbHBlcnNfaAorI2lmbmRlZiBDQ2FsbEhlbHBlcnNf
aAorI2RlZmluZSBDQ2FsbEhlbHBlcnNfaAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAK
LSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoSklUKQogCi0jaW5jbHVkZSAiREZHQXNz
ZW1ibHlIZWxwZXJzLmgiCi0jaW5jbHVkZSAiREZHR1BSSW5mby5oIgorI2luY2x1ZGUgIkFzc2Vt
Ymx5SGVscGVycy5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKIAotbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgeworbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENDYWxsSGVscGVycyA6IHB1
YmxpYyBBc3NlbWJseUhlbHBlcnMgewogcHVibGljOgpAQCAtNjk5LDcgKzY5OSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKICAgICB9CiAjZWxzZQotI2Vycm9yICJERkcgSklUIG5vdCBzdXBwb3J0ZWQg
b24gdGhpcyBwbGF0Zm9ybS4iCisjZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxh
dGZvcm0uIgogI2VuZGlmCiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMo
R1BSUmVnIGFyZzEpCkBAIC0xMDkwLDkgKzEwOTAsOSBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAot
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jZW5kaWYgLy8gREZH
Q0NhbGxIZWxwZXJzX2gKKyNlbmRpZiAvLyBDQ2FsbEhlbHBlcnNfaAogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0ZQUkluZm8uaAkocmV2aXNpb24gMTU2MDc1KQkoZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaDoxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ZQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMwOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0ZQ
UkluZm9faAorI2RlZmluZSBERkdGUFJJbmZvX2gKKworI2lmIEVOQUJMRShERkdfSklUKQorCisj
aW5jbHVkZSAiREZHUmVnaXN0ZXJCYW5rLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCit0eXBlZGVmIE1hY3JvQXNzZW1i
bGVyOjpGUFJlZ2lzdGVySUQgRlBSUmVnOworI2RlZmluZSBJbnZhbGlkRlBSUmVnICgoRlBSUmVn
KS0xKQorCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKworY2xhc3MgRlBSSW5mbyB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSA4OworCisgICAgLy8gVGVtcG9yYXJ5IHJl
Z2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBYODZSZWdpc3RlcnM6
OnhtbTA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gWDg2UmVnaXN0ZXJzOjp4
bW0xOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IFg4NlJlZ2lzdGVyczo6eG1t
MjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBYODZSZWdpc3RlcnM6OnhtbTM7
CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gWDg2UmVnaXN0ZXJzOjp4bW00Owor
ICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9IFg4NlJlZ2lzdGVyczo6eG1tNTsKKyNp
ZiBDUFUoWDg2XzY0KQorICAgIC8vIE9ubHkgWDg2XzY0IHBhc3NlcyBhZ3VtZW50cyBpbiB4bW0g
cmVnaXN0ZXJzCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBYODZSZWdp
c3RlcnM6OnhtbTA7IC8vIGZwUmVnVDAKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50
RlBSMSA9IFg4NlJlZ2lzdGVyczo6eG1tMTsgLy8gZnBSZWdUMQorICAgIHN0YXRpYyBjb25zdCBG
UFJSZWcgYXJndW1lbnRGUFIyID0gWDg2UmVnaXN0ZXJzOjp4bW0yOyAvLyBmcFJlZ1QyCisgICAg
c3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjMgPSBYODZSZWdpc3RlcnM6OnhtbTM7IC8v
IGZwUmVnVDMKKyNlbmRpZgorICAgIC8vIE9uIFg4NiB0aGUgcmV0dXJuIHdpbGwgYWN0dWFsbHkg
YmUgb24gdGhlIHg4NyBzdGFjaywKKyAgICAvLyBzbyB3ZSdsbCBjb3B5IHRvIHhtbTAgZm9yIHNh
bml0eSEKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gWDg2UmVnaXN0
ZXJzOjp4bW0wOyAvLyBmcFJlZ1QwCisKKyAgICAvLyBGUFJSZWcgbWFwcGluZyBpcyBkaXJlY3Qs
IHRoZSBtYWNoaW5lIHJlZ3NpdGVyIG51bWJlcnMgY2FuCisgICAgLy8gYmUgdXNlZCBkaXJlY3Rs
eSBhcyBpbmRpY2VzIGludG8gdGhlIEZQUiBSZWdpc3RlckJhbmsuCisgICAgQ09NUElMRV9BU1NF
UlQoWDg2UmVnaXN0ZXJzOjp4bW0wID09IDAsIHhtbTBfaXNfMCk7CisgICAgQ09NUElMRV9BU1NF
UlQoWDg2UmVnaXN0ZXJzOjp4bW0xID09IDEsIHhtbTFfaXNfMSk7CisgICAgQ09NUElMRV9BU1NF
UlQoWDg2UmVnaXN0ZXJzOjp4bW0yID09IDIsIHhtbTJfaXNfMik7CisgICAgQ09NUElMRV9BU1NF
UlQoWDg2UmVnaXN0ZXJzOjp4bW0zID09IDMsIHhtbTNfaXNfMyk7CisgICAgQ09NUElMRV9BU1NF
UlQoWDg2UmVnaXN0ZXJzOjp4bW00ID09IDQsIHhtbTRfaXNfNCk7CisgICAgQ09NUElMRV9BU1NF
UlQoWDg2UmVnaXN0ZXJzOjp4bW01ID09IDUsIHhtbTVfaXNfNSk7CisgICAgc3RhdGljIEZQUlJl
ZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIChGUFJS
ZWcpaW5kZXg7CisgICAgfQorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcp
CisgICAgeworICAgICAgICByZXR1cm4gKHVuc2lnbmVkKXJlZzsKKyAgICB9CisgICAgCisgICAg
c3RhdGljIEZQUlJlZyB0b0FyZ3VtZW50UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgewor
ICAgICAgICByZXR1cm4gKEZQUlJlZylpbmRleDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9
IEludmFsaWRGUFJSZWcpOworI2lmIENQVShYODZfNjQpCisgICAgICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxpbnQ+KHJlZykgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9y
UmVnaXN0ZXJbMTZdID0geworICAgICAgICAgICAgInhtbTAiLCAieG1tMSIsICJ4bW0yIiwgInht
bTMiLAorICAgICAgICAgICAgInhtbTQiLCAieG1tNSIsICJ4bW02IiwgInhtbTciLAorICAgICAg
ICAgICAgInhtbTgiLCAieG1tOSIsICJ4bW0xMCIsICJ4bW0xMSIsCisgICAgICAgICAgICAieG1t
MTIiLCAieG1tMTMiLCAieG1tMTQiLCAieG1tMTUiCisgICAgICAgIH07CisjZWxpZiBDUFUoWDg2
KQorICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgOCk7CisgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbOF0gPSB7CisgICAgICAgICAgICAieG1t
MCIsICJ4bW0xIiwgInhtbTIiLCAieG1tMyIsCisgICAgICAgICAgICAieG1tNCIsICJ4bW01Iiwg
InhtbTYiLCAieG1tNyIKKyAgICAgICAgfTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gbmFtZUZv
clJlZ2lzdGVyW3JlZ107CisgICAgfQorfTsKKworI2VuZGlmCisKKyNpZiBDUFUoQVJNKQorCitj
bGFzcyBGUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKworICAg
IC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgLy8gZDcgaXMgdXNlIGJ5IHRoZSBNYWNyb0Fz
c2VtYmxlciBhcyBmcFRlbXBSZWdpc3Rlci4KKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVn
VDAgPSBBUk1SZWdpc3RlcnM6OmQwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9
IEFSTVJlZ2lzdGVyczo6ZDE7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QyID0gQVJN
UmVnaXN0ZXJzOjpkMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBBUk1SZWdp
c3RlcnM6OmQzOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IEFSTVJlZ2lzdGVy
czo6ZDQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gQVJNUmVnaXN0ZXJzOjpk
NTsKKyAgICAvLyBBUk12NyBkb2Vzbid0IHBhc3MgYXJndW1lbnRzIGluIGZwIHJlZ2lzdGVycy4g
VGhlIHJldHVybgorICAgIC8vIHZhbHVlIGlzIGFsc28gYWN0dWFsbHkgaW4gaW50ZWdlciByZWdp
c3RlcnMsIGZvciBub3cKKyAgICAvLyB3ZSdsbCByZXR1cm4gaW4gZDAgZm9yIHNpbXBsaWNpdHku
CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IEFSTVJlZ2lzdGVyczo6
ZDA7IC8vIGZwUmVnVDAKKworI2lmIENQVShBUk1fSEFSREZQKQorICAgIHN0YXRpYyBjb25zdCBG
UFJSZWcgYXJndW1lbnRGUFIwID0gQVJNUmVnaXN0ZXJzOjpkMDsgLy8gZnBSZWdUMAorICAgIHN0
YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIxID0gQVJNUmVnaXN0ZXJzOjpkMTsgLy8gZnBS
ZWdUMQorI2VuZGlmCisKKyAgICAvLyBGUFJSZWcgbWFwcGluZyBpcyBkaXJlY3QsIHRoZSBtYWNo
aW5lIHJlZ3NpdGVyIG51bWJlcnMgY2FuCisgICAgLy8gYmUgdXNlZCBkaXJlY3RseSBhcyBpbmRp
Y2VzIGludG8gdGhlIEZQUiBSZWdpc3RlckJhbmsuCisgICAgQ09NUElMRV9BU1NFUlQoQVJNUmVn
aXN0ZXJzOjpkMCA9PSAwLCBkMF9pc18wKTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk1SZWdpc3Rl
cnM6OmQxID09IDEsIGQxX2lzXzEpOworICAgIENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lzdGVyczo6
ZDIgPT0gMiwgZDJfaXNfMik7CisgICAgQ09NUElMRV9BU1NFUlQoQVJNUmVnaXN0ZXJzOjpkMyA9
PSAzLCBkM19pc18zKTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk1SZWdpc3RlcnM6OmQ0ID09IDQs
IGQ0X2lzXzQpOworICAgIENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lzdGVyczo6ZDUgPT0gNSwgZDVf
aXNfNSk7CisgICAgc3RhdGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIChGUFJSZWcpaW5kZXg7CisgICAgfQorICAgIHN0YXRpYyB1bnNp
Z25lZCB0b0luZGV4KEZQUlJlZyByZWcpCisgICAgeworICAgICAgICByZXR1cm4gKHVuc2lnbmVk
KXJlZzsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQUlJlZyBy
ZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOworICAgICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMzIpOworICAgICAgICBzdGF0aWMgY29u
c3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzMyXSA9IHsKKyAgICAgICAgICAgICJkMCIsICJkMSIs
ICJkMiIsICJkMyIsCisgICAgICAgICAgICAiZDQiLCAiZDUiLCAiZDYiLCAiZDciLAorICAgICAg
ICAgICAgImQ4IiwgImQ5IiwgImQxMCIsICJkMTEiLAorICAgICAgICAgICAgImQxMiIsICJkMTMi
LCAiZDE0IiwgImQxNSIsCisgICAgICAgICAgICAiZDE2IiwgImQxNyIsICJkMTgiLCAiZDE5IiwK
KyAgICAgICAgICAgICJkMjAiLCAiZDIxIiwgImQyMiIsICJkMjMiLAorICAgICAgICAgICAgImQy
NCIsICJkMjUiLCAiZDI2IiwgImQyNyIsCisgICAgICAgICAgICAiZDI4IiwgImQyOSIsICJkMzAi
LCAiZDMxIgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107
CisgICAgfQorfTsKKworI2VuZGlmCisKKyNpZiBDUFUoTUlQUykKKworY2xhc3MgRlBSSW5mbyB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAgICAvLyBUZW1wb3Jhcnkg
cmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9IE1JUFNSZWdpc3Rl
cnM6OmYwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9IE1JUFNSZWdpc3RlcnM6
OmY0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IE1JUFNSZWdpc3RlcnM6OmY2
OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IE1JUFNSZWdpc3RlcnM6OmY4Owor
ICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IE1JUFNSZWdpc3RlcnM6OmYxMDsKKyAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjpmMTg7CisKKyAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gTUlQU1JlZ2lzdGVyczo6ZjA7
CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IE1JUFNSZWdpc3RlcnM6
OmYxMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9IE1JUFNSZWdpc3Rl
cnM6OmYxNDsKKworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkK
KyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1i
ZXJPZlJlZ2lzdGVyc10gPSB7CisgICAgICAgICAgICBmcFJlZ1QwLCBmcFJlZ1QxLCBmcFJlZ1Qy
LCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisKKyAgICAgICAgQVNTRVJUKGluZGV4IDwg
bnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRl
eF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVnIHJlZykKKyAg
ICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAgIEFTU0VS
VChyZWcgPCAyMCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lz
dGVyWzIwXSA9IHsKKyAgICAgICAgICAgIDAsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXgsCisgICAgICAgICAgICAxLCBJbnZhbGlkSW5kZXgsIDIsIEludmFsaWRJbmRl
eCwKKyAgICAgICAgICAgIDMsIEludmFsaWRJbmRleCwgNCwgSW52YWxpZEluZGV4LAorICAgICAg
ICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LAorICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDUsIEludmFsaWRJ
bmRleCwKKyAgICAgICAgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdp
c3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVn
TmFtZShGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBS
UmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDMyKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIG5hbWVGb3JSZWdpc3RlclszMl0gPSB7CisgICAgICAgICAgICAiZjAiLCAiZjEiLCAiZjIi
LCAiZjMiLAorICAgICAgICAgICAgImY0IiwgImY1IiwgImY2IiwgImY3IiwKKyAgICAgICAgICAg
ICJmOCIsICJmOSIsICJmMTAiLCAiZjExIiwKKyAgICAgICAgICAgICJmMTIiLCAiZjEzIiwgImYx
NCIsICJmMTUiCisgICAgICAgICAgICAiZjE2IiwgImYxNyIsICJmMTgiLCAiZjE5IgorICAgICAg
ICAgICAgImYyMCIsICJmMjEiLCAiZjIyIiwgImYyMyIKKyAgICAgICAgICAgICJmMjQiLCAiZjI1
IiwgImYyNiIsICJmMjciCisgICAgICAgICAgICAiZjI4IiwgImYyOSIsICJmMzAiLCAiZjMxIgor
ICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQor
cHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZm
ZmZmZmZmOworfTsKKworI2VuZGlmCisKKyNpZiBDUFUoU0g0KQorCitjbGFzcyBGUFJJbmZvIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKworICAgIC8vIFRlbXBvcmFyeSBy
ZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QwID0gU0g0UmVnaXN0ZXJz
OjpkcjA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpk
cjI7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QyID0gU0g0UmVnaXN0ZXJzOjpkcjQ7
CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QzID0gU0g0UmVnaXN0ZXJzOjpkcjY7Cisg
ICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gU0g0UmVnaXN0ZXJzOjpkcjg7CisgICAg
c3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gU0g0UmVnaXN0ZXJzOjpkcjEwOworCisgICAg
c3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IFNINFJlZ2lzdGVyczo6ZHIwOwor
CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBTSDRSZWdpc3RlcnM6OmRy
NDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9IFNINFJlZ2lzdGVyczo6
ZHI2OworCisgICAgc3RhdGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9m
UmVnaXN0ZXJzXSA9IHsKKyAgICAgICAgICAgIGZwUmVnVDAsIGZwUmVnVDEsIGZwUmVnVDIsIGZw
UmVnVDMsIGZwUmVnVDQsIGZwUmVnVDUgfTsKKworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1i
ZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsK
KyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJl
ZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJb
MTZdID0geworICAgICAgICAgICAgMCwgSW52YWxpZEluZGV4LCAxLCBJbnZhbGlkSW5kZXgsCisg
ICAgICAgICAgICAyLCBJbnZhbGlkSW5kZXgsIDMsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAg
IDQsIEludmFsaWRJbmRleCwgNSwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4CisgICAgICAgIH07
CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAg
ICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVnIHJlZykK
KyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAgIEFT
U0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0
ZXJbMTZdID0geworICAgICAgICAgICAgImRyMCIsICJmcjEiLCAiZHIyIiwgImZyMyIsCisgICAg
ICAgICAgICAiZHI0IiwgImZyNSIsICJkcjYiLCAiZnI3IiwKKyAgICAgICAgICAgICJkcjgiLCAi
ZnI5IiwgImRyMTAiLCAiZnIxMSIsCisgICAgICAgICAgICAiZHIxMiIsICJmcjEzIiwgImRyMTQi
LCAiZnIxNSIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWdd
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZElu
ZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCit0eXBlZGVmIFJlZ2lzdGVyQmFuazxG
UFJJbmZvPjo6aXRlcmF0b3IgZnByX2l0ZXJhdG9yOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQ
UkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8u
aAkod29ya2luZyBjb3B5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDE4ICsyMywxNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAot
I2lmbmRlZiBERkdGUFJJbmZvX2gKLSNkZWZpbmUgREZHRlBSSW5mb19oCisjaWZuZGVmIEZQUklu
Zm9faAorI2RlZmluZSBGUFJJbmZvX2gKIAotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVk
ZSAiREZHUmVnaXN0ZXJCYW5rLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
eworbmFtZXNwYWNlIEpTQyB7CiAKIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJ
RCBGUFJSZWc7Ci0jZGVmaW5lIEludmFsaWRGUFJSZWcgKChGUFJSZWcpLTEpCisjZGVmaW5lIElu
dmFsaWRGUFJSZWcgKCg6OkpTQzo6RlBSUmVnKS0xKQogCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4
Nl82NCkKIApAQCAtMzAxLDkgKzI5OSwxOSBAQCBwcml2YXRlOgogCiAjZW5kaWYKIAotdHlwZWRl
ZiBSZWdpc3RlckJhbms8RlBSSW5mbz46Oml0ZXJhdG9yIGZwcl9pdGVyYXRvcjsKK30gLy8gbmFt
ZXNwYWNlIEpTQwogCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCituYW1lc3BhY2UgV1RGIHsK
IAoraW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkZQUlJl
ZyByZWcpCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBvdXQucHJpbnQoIiUiLCBKU0M6OkZQUklu
Zm86OmRlYnVnTmFtZShyZWcpKTsKKyNlbHNlCisgICAgb3V0LnByaW50ZigiJSVmciVkIiwgcmVn
KTsKICNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMTU2MDc1KQkoZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaDoxNTYwNzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERG
R0dQUkluZm9faAorI2RlZmluZSBERkdHUFJJbmZvX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdSZWdpc3RlckJhbmsu
aCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CisKK3R5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgR1BSUmVnOwor
I2RlZmluZSBJbnZhbGlkR1BSUmVnICgoOjpKU0M6OkRGRzo6R1BSUmVnKS0xKQorCisjaWYgVVNF
KEpTVkFMVUU2NCkKK2NsYXNzIEpTVmFsdWVSZWdzIHsKK3B1YmxpYzoKKyAgICBKU1ZhbHVlUmVn
cygpCisgICAgICAgIDogbV9ncHIoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgfQorICAgIAor
ICAgIGV4cGxpY2l0IEpTVmFsdWVSZWdzKEdQUlJlZyBncHIpCisgICAgICAgIDogbV9ncHIoZ3By
KQorICAgIHsKKyAgICB9CisgICAgCisgICAgc3RhdGljIEpTVmFsdWVSZWdzIHBheWxvYWRPbmx5
KEdQUlJlZyBncHIpCisgICAgeworICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MoZ3ByKTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBJ
bnZhbGlkR1BSUmVnOyB9CisgICAgCisgICAgR1BSUmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIG1f
Z3ByOyB9CisgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVybiBtX2dwcjsgfQor
ICAgIAorcHJpdmF0ZToKKyAgICBHUFJSZWcgbV9ncHI7Cit9OworCitjbGFzcyBKU1ZhbHVlU291
cmNlIHsKK3B1YmxpYzoKKyAgICBKU1ZhbHVlU291cmNlKCkKKyAgICAgICAgOiBtX29mZnNldChu
b3RBZGRyZXNzKCkpCisgICAgICAgICwgbV9iYXNlKEludmFsaWRHUFJSZWcpCisgICAgeworICAg
IH0KKyAgICAKKyAgICBKU1ZhbHVlU291cmNlKEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgICAgIDog
bV9vZmZzZXQobm90QWRkcmVzcygpKQorICAgICAgICAsIG1fYmFzZShyZWdzLmdwcigpKQorICAg
IHsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgSlNWYWx1ZVNvdXJjZShHUFJSZWcgZ3ByKQor
ICAgICAgICA6IG1fb2Zmc2V0KG5vdEFkZHJlc3MoKSkKKyAgICAgICAgLCBtX2Jhc2UoZ3ByKQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZVNvdXJjZShNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyBhZGRyZXNzKQorICAgICAgICA6IG1fb2Zmc2V0KGFkZHJlc3Mub2Zmc2V0KQorICAgICAg
ICAsIG1fYmFzZShhZGRyZXNzLmJhc2UpCisgICAgeworICAgICAgICBBU1NFUlQobV9vZmZzZXQg
IT0gbm90QWRkcmVzcygpKTsKKyAgICAgICAgQVNTRVJUKG1fYmFzZSAhPSBJbnZhbGlkR1BSUmVn
KTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIEpTVmFsdWVTb3VyY2UgdW5ib3hlZENlbGwoR1BS
UmVnIHBheWxvYWRHUFIpCisgICAgeworICAgICAgICByZXR1cm4gSlNWYWx1ZVNvdXJjZShwYXls
b2FkR1BSKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biBtX2Jhc2UgPT0gSW52YWxpZEdQUlJlZzsgfQorICAgIAorICAgIGJvb2wgaXNBZGRyZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9vZmZzZXQgIT0gbm90QWRkcmVzcygpOyB9CisgICAgCisgICAgaW50
MzJfdCBvZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzQWRkcmVzcygpKTsK
KyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OworICAgIH0KKyAgICAKKyAgICBHUFJSZWcgYmFzZSgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNBZGRyZXNzKCkpOworICAgICAgICByZXR1
cm4gbV9iYXNlOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcgZ3ByKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghaXNBZGRyZXNzKCkpOworICAgICAgICByZXR1cm4gbV9iYXNlOworICAg
IH0KKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhc0FkZHJlc3MoKSBjb25zdCB7
IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKCksIG9mZnNldCgpKTsgfQorICAg
IAorcHJpdmF0ZToKKyAgICBzdGF0aWMgaW5saW5lIGludDMyX3Qgbm90QWRkcmVzcygpIHsgcmV0
dXJuIDB4ODAwMDAwMDA7IH0gICAgIAorICAgICAgICAgIAorICAgIGludDMyX3QgbV9vZmZzZXQ7
CisgICAgR1BSUmVnIG1fYmFzZTsKK307CisjZW5kaWYKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CitjbGFzcyBKU1ZhbHVlUmVncyB7CitwdWJsaWM6CisgICAgSlNWYWx1ZVJlZ3MoKQorICAgICAg
ICA6IG1fdGFnR1BSKHN0YXRpY19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJlZykpCisgICAgICAg
ICwgbV9wYXlsb2FkR1BSKHN0YXRpY19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJlZykpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlUmVncyhHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5
bG9hZEdQUikKKyAgICAgICAgOiBtX3RhZ0dQUih0YWdHUFIpCisgICAgICAgICwgbV9wYXlsb2Fk
R1BSKHBheWxvYWRHUFIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgSlNWYWx1ZVJl
Z3MgcGF5bG9hZE9ubHkoR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
UmVncyhJbnZhbGlkR1BSUmVnLCBncHIpOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3Rh
Z0dQUikgPT0gSW52YWxpZEdQUlJlZworICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8R1BSUmVn
PihtX3BheWxvYWRHUFIpID09IEludmFsaWRHUFJSZWc7CisgICAgfQorICAgIAorICAgIEdQUlJl
ZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fdGFnR1BSKTsg
fQorICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R1BS
UmVnPihtX3BheWxvYWRHUFIpOyB9CisgICAgR1BSUmVnIGdwcihXaGljaFZhbHVlV29yZCB3aGlj
aCkgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAod2hpY2gpIHsKKyAgICAgICAgY2FzZSBU
YWdXb3JkOgorICAgICAgICAgICAgcmV0dXJuIHRhZ0dQUigpOworICAgICAgICBjYXNlIFBheWxv
YWRXb3JkOgorICAgICAgICAgICAgcmV0dXJuIHBheWxvYWRHUFIoKTsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHRhZ0dQUigpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBpbnQ4X3QgbV90YWdHUFI7CisgICAgaW50OF90IG1fcGF5bG9h
ZEdQUjsKK307CisKK2NsYXNzIEpTVmFsdWVTb3VyY2UgeworcHVibGljOgorICAgIEpTVmFsdWVT
b3VyY2UoKQorICAgICAgICA6IG1fb2Zmc2V0KG5vdEFkZHJlc3MoKSkKKyAgICAgICAgLCBtX2Jh
c2VPclRhZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpKQorICAgICAgICAsIG1f
cGF5bG9hZChzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFsaWRHUFJSZWcpKQorICAgICAgICAsIG1f
dGFnVHlwZSgwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZVNvdXJjZShKU1ZhbHVl
UmVncyByZWdzKQorICAgICAgICA6IG1fb2Zmc2V0KG5vdEFkZHJlc3MoKSkKKyAgICAgICAgLCBt
X2Jhc2VPclRhZyhyZWdzLnRhZ0dQUigpKQorICAgICAgICAsIG1fcGF5bG9hZChyZWdzLnBheWxv
YWRHUFIoKSkKKyAgICAgICAgLCBtX3RhZ1R5cGUoMCkKKyAgICB7CisgICAgfQorICAgIAorICAg
IEpTVmFsdWVTb3VyY2UoR1BSUmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIpCisgICAgICAg
IDogbV9vZmZzZXQobm90QWRkcmVzcygpKQorICAgICAgICAsIG1fYmFzZU9yVGFnKHN0YXRpY19j
YXN0PGludDhfdD4odGFnR1BSKSkKKyAgICAgICAgLCBtX3BheWxvYWQoc3RhdGljX2Nhc3Q8aW50
OF90PihwYXlsb2FkR1BSKSkKKyAgICAgICAgLCBtX3RhZ1R5cGUoMCkKKyAgICB7CisgICAgfQor
ICAgIAorICAgIEpTVmFsdWVTb3VyY2UoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MgYWRkcmVzcykK
KyAgICAgICAgOiBtX29mZnNldChhZGRyZXNzLm9mZnNldCkKKyAgICAgICAgLCBtX2Jhc2VPclRh
ZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KGFkZHJlc3MuYmFzZSkpCisgICAgICAgICwgbV9wYXlsb2Fk
KHN0YXRpY19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJlZykpCisgICAgICAgICwgbV90YWdUeXBl
KDApCisgICAgeworICAgICAgICBBU1NFUlQobV9vZmZzZXQgIT0gbm90QWRkcmVzcygpKTsKKyAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PEdQUlJlZz4obV9iYXNlT3JUYWcpICE9IEludmFsaWRH
UFJSZWcpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgSlNWYWx1ZVNvdXJjZSB1bmJveGVkQ2Vs
bChHUFJSZWcgcGF5bG9hZEdQUikKKyAgICB7CisgICAgICAgIEpTVmFsdWVTb3VyY2UgcmVzdWx0
OworICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBub3RBZGRyZXNzKCk7CisgICAgICAgIHJlc3Vs
dC5tX2Jhc2VPclRhZyA9IHN0YXRpY19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJlZyk7CisgICAg
ICAgIHJlc3VsdC5tX3BheWxvYWQgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHBheWxvYWRHUFIpOwor
ICAgICAgICByZXN1bHQubV90YWdUeXBlID0gc3RhdGljX2Nhc3Q8aW50OF90PihKU1ZhbHVlOjpD
ZWxsVGFnKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJl
Zz4obV9iYXNlT3JUYWcpID09IEludmFsaWRHUFJSZWcKKyAgICAgICAgICAgICYmIHN0YXRpY19j
YXN0PEdQUlJlZz4obV9wYXlsb2FkKSA9PSBJbnZhbGlkR1BSUmVnOworICAgIH0KKyAgICAKKyAg
ICBib29sIGlzQWRkcmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoISEqdGhpcyk7
CisgICAgICAgIHJldHVybiBtX29mZnNldCAhPSBub3RBZGRyZXNzKCk7CisgICAgfQorICAgIAor
ICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0FkZHJl
c3MoKSk7CisgICAgICAgIHJldHVybiBtX29mZnNldDsKKyAgICB9CisgICAgCisgICAgR1BSUmVn
IGJhc2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzQWRkcmVzcygpKTsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9iYXNlT3JUYWcpOworICAgIH0KKyAgICAK
KyAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCghaXNBZGRy
ZXNzKCkgJiYgc3RhdGljX2Nhc3Q8R1BSUmVnPihtX2Jhc2VPclRhZykgIT0gSW52YWxpZEdQUlJl
Zyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fYmFzZU9yVGFnKTsKKyAg
ICB9CisgICAgCisgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKCFpc0FkZHJlc3MoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+
KG1fcGF5bG9hZCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzS25vd25UYWcoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCEhKnRoaXMpOworICAgICAgICBBU1NFUlQoIWlzQWRkcmVz
cygpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9iYXNlT3JUYWcpID09
IEludmFsaWRHUFJSZWc7CisgICAgfQorICAgIAorICAgIHVpbnQzMl90IHRhZygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4obV90YWdUeXBlKTsKKyAg
ICB9CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MgYXNBZGRyZXNzKHVuc2lnbmVk
IGFkZGl0aW9uYWxPZmZzZXQgPSAwKSBjb25zdCB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlKCksIG9mZnNldCgpICsgYWRkaXRpb25hbE9mZnNldCk7IH0KKyAgICAKK3ByaXZh
dGU6CisgICAgc3RhdGljIGlubGluZSBpbnQzMl90IG5vdEFkZHJlc3MoKSB7IHJldHVybiAweDgw
MDAwMDAwOyB9ICAgICAKKyAgICAgICAgICAKKyAgICBpbnQzMl90IG1fb2Zmc2V0OworICAgIGlu
dDhfdCBtX2Jhc2VPclRhZzsKKyAgICBpbnQ4X3QgbV9wYXlsb2FkOyAKKyAgICBpbnQ4X3QgbV90
YWdUeXBlOyAvLyBDb250YWlucyB0aGUgbG93IGJpdHMgb2YgdGhlIHRhZy4KK307CisjZW5kaWYK
KworI2lmIENQVShYODYpCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgMAor
CitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5
cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5VTUJF
Ul9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAgPSBYODZSZWdpc3RlcnM6OmVheDsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gWDg2UmVnaXN0ZXJzOjplZHg7CisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyByZWdUMiA9IFg4NlJlZ2lzdGVyczo6ZWN4OworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmVnVDMgPSBYODZSZWdpc3RlcnM6OmVieDsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ1Q0ID0gWDg2UmVnaXN0ZXJzOjplc2k7CisgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1h
dGNoIHRoZSBiYXNlbGluZSBKSVQuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1
bHRSZWdpc3RlciA9IHJlZ1QwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0
UmVnaXN0ZXIyID0gcmVnVDE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdp
c3RlciA9IFg4NlJlZ2lzdGVyczo6ZWRpOworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRl
IHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1
ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBYODZS
ZWdpc3RlcnM6OmVjeDsgLy8gcmVnVDIKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50
R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMQorICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAorICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWJ4OyAvLyByZWdUMworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZXNpOyAvLyBy
ZWdUNAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3Rl
cnM6OmVheDsgLy8gcmVnVDAKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BS
MiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjplY3g7CisKKyAgICBzdGF0
aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NF
UlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwg
cmVnVDIsIHJlZ1QzLCByZWdUNCB9OworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtp
bmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykK
KyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCA4KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbOF0gPSB7IDAsIDIsIDEsIDMsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCA0LCBJbnZhbGlkSW5kZXggfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0
ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFs
aWRJbmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJl
ZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVn
KSA8IDgpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzhdID0g
eworICAgICAgICAgICAgImVheCIsICJlY3giLCAiZWR4IiwgImVieCIsCisgICAgICAgICAgICAi
ZXNwIiwgImVicCIsICJlc2kiLCAiZWRpIiwKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5h
bWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCisjaWYg
Q1BVKFg4Nl82NCkKKyNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA2CisKK2Ns
YXNzIEdQUkluZm8geworcHVibGljOgorICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA5OworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gTlVNQkVSX09G
X0FSR1VNRU5UX1JFR0lTVEVSUzsKKworICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUg
YmFzZWxpbmUgSklULgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0
ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFt
ZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTM7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyB0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNDsKKyAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHRhZ01hc2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE1OworICAgIC8vIFRl
bXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMCA9IFg4NlJl
Z2lzdGVyczo6ZWF4OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDEgPSBYODZSZWdpc3Rl
cnM6OmVkeDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gWDg2UmVnaXN0ZXJzOjpl
Y3g7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9IFg4NlJlZ2lzdGVyczo6ZWJ4Owor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBYODZSZWdpc3RlcnM6OmVkaTsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gWDg2UmVnaXN0ZXJzOjplc2k7CisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyByZWdUNiA9IFg4NlJlZ2lzdGVyczo6cjg7CisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZWdUNyA9IFg4NlJlZ2lzdGVyczo6cjk7CisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUOCA9IFg4NlJlZ2lzdGVyczo6cjEwOworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92
aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2
YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBY
ODZSZWdpc3RlcnM6OmVkaTsgLy8gcmVnVDQKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3Vt
ZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZXNpOyAvLyByZWdUNQorICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgYXJndW1lbnRHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxCisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OmVjeDsgLy8gcmVn
VDIKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSNCA9IFg4NlJlZ2lzdGVyczo6
cjg7ICAvLyByZWdUNgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFI1ID0gWDg2
UmVnaXN0ZXJzOjpyOTsgIC8vIHJlZ1Q3CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdH
UFIwID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplYng7IC8vIHJlZ1QzCisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBub25BcmdHUFIyID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q4CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAv
LyByZWdUMAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVn
aXN0ZXJzOjplZHg7IC8vIHJlZ1QxCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2
ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6OmVzaTsKKworICAgIHN0YXRpYyBHUFJSZWcg
dG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8
IG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3Rl
ckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVn
VDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCByZWdUOCB9OworICAgICAgICByZXR1cm4g
cmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorICAgIAorICAgIHN0YXRpYyBHUFJSZWcg
dG9Bcmd1bWVudFJlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGluZGV4IDwgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyk7CisgICAgICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzXSA9IHsg
YXJndW1lbnRHUFIwLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMiwgYXJndW1lbnRHUFIzLCBh
cmd1bWVudEdQUjQsIGFyZ3VtZW50R1BSNSB9OworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJ
bmRleFtpbmRleF07CisgICAgfQorICAgIAorICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQ
UlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwor
ICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7IDAsIDIsIDEsIDMsIElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCA0LCA2LCA3LCA4LCBJbnZhbGlkSW5kZXgsIElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCB9Owor
ICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAg
IEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCisg
ICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJyYXgiLCAicmN4IiwgInJk
eCIsICJyYngiLAorICAgICAgICAgICAgInJzcCIsICJyYnAiLCAicnNpIiwgInJkaSIsCisgICAg
ICAgICAgICAicjgiLCAicjkiLCAicjEwIiwgInIxMSIsCisgICAgICAgICAgICAicjEyIiwgInIx
MyIsICJyMTQiLCAicjE1IgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lz
dGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJ
bnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKKyNpZiBDUFUoQVJNKQor
I2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKKworY2xhc3MgR1BSSW5mbyB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDg7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVH
SVNURVJTOworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpyMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpyMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Qy
ID0gQVJNUmVnaXN0ZXJzOjpyMjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gQVJN
UmVnaXN0ZXJzOjpyNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gQVJNUmVnaXN0
ZXJzOjpyODsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gQVJNUmVnaXN0ZXJzOjpy
OTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q2ID0gQVJNUmVnaXN0ZXJzOjpyMTA7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNyA9IEFSTVJlZ2lzdGVyczo6cjExOworICAgIC8v
IFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgorICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI1OworICAgIC8vIFRoZXNl
IGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1
bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBh
cmd1bWVudEdQUjAgPSBBUk1SZWdpc3RlcnM6OnIwOyAvLyByZWdUMAorICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgYXJndW1lbnRHUFIxID0gQVJNUmVnaXN0ZXJzOjpyMTsgLy8gcmVnVDEKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IEFSTVJlZ2lzdGVyczo6cjI7IC8vIHJl
Z1QyCisgICAgLy8gRklYTUU6IHIzIGlzIGN1cnJlbnRseSB1c2VkIGJlIHRoZSBNYWNyb0Fzc2Vt
YmxlciBhcyBhIHRlbXBvcmFyeSAtIGl0IHNlZW1zCisgICAgLy8gVGhpcyBjb3VsZCB0aHJlb3Jl
dGljYWxseSBiZSBhIHByb2JsZW0gaWYgdGhpcyBpcyB1c2VkIGluIGNvZGUgZ2VuZXJhdGlvbgor
ICAgIC8vIGJldHdlZW4gdGhlIGFyZ3VtZW50cyBiZWluZyBzZXQgdXAsIGFuZCB0aGUgY2FsbCBi
ZWluZyBtYWRlLiBUaGF0IHNhaWQsCisgICAgLy8gYW55IGNoYW5nZSBpbnRyb2R1Y2luZyBhIHBy
b2JsZW0gaGVyZSBpcyBsaWtlbHkgdG8gYmUgaW1tZWRpYXRlbHkgYXBwYXJlbnQhCisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBBUk1SZWdpc3RlcnM6OnIzOyAvLyBGSVhN
RSEKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSBBUk1SZWdpc3RlcnM6OnI0
OyAvLyByZWdUMworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTVJlZ2lz
dGVyczo6cjg7IC8vIHJlZ1Q0CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0g
QVJNUmVnaXN0ZXJzOjpyOTsgLy8gcmVnVDUKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVy
blZhbHVlR1BSID0gQVJNUmVnaXN0ZXJzOjpyMDsgLy8gcmVnVDAKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IEFSTVJlZ2lzdGVyczo6cjE7IC8vIHJlZ1QxCisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBBUk1SZWdpc3Rl
cnM6OnIyOworCisgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNd
ID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVn
VDcgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKwor
ICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlZykgIT0gSW52YWxpZEdQUlJlZyk7CisgICAg
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVnKSA8IDE2KTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0geyAwLCAxLCAyLCBJbnZh
bGlkSW5kZXgsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDQs
IDUsIDYsIDcsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFs
aWRJbmRleCB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3Jl
Z107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQ
UlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJl
ZykgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmVnKSA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3Rl
clsxNl0gPSB7CisgICAgICAgICAgICAicjAiLCAicjEiLCAicjIiLCAicjMiLAorICAgICAgICAg
ICAgInI0IiwgInI1IiwgInI2IiwgInI3IiwKKyAgICAgICAgICAgICJyOCIsICJyOSIsICJyMTAi
LCAicjExIiwKKyAgICAgICAgICAgICJyMTIiLCAicjEzIiwgInIxNCIsICJyMTUiCisgICAgICAg
IH07CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9Citwcml2YXRl
OgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7
Cit9OworCisjZW5kaWYKKworI2lmIENQVShNSVBTKQorI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1F
TlRfUkVHSVNURVJTIDQKKworY2xhc3MgR1BSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBH
UFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJl
Z2lzdGVycyA9IDY7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOworCisgICAgLy8gVGVtcG9y
YXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gTUlQU1JlZ2lz
dGVyczo6djA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IE1JUFNSZWdpc3RlcnM6
OnYxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjp0NDsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6dDU7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IE1JUFNSZWdpc3RlcnM6OnQ2OworICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgcmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjp0NzsKKyAgICAvLyBUaGVzZSBy
ZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBj
YWNoZWRSZXN1bHRSZWdpc3RlcjIgPSByZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNh
bGxGcmFtZVJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6czA7CisgICAgLy8gVGhlc2UgY29uc3Rh
bnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYg
cmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50
R1BSMCA9IE1JUFNSZWdpc3RlcnM6OmEwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1l
bnRHUFIxID0gTUlQU1JlZ2lzdGVyczo6YTE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1
bWVudEdQUjIgPSBNSVBTUmVnaXN0ZXJzOjphMjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFy
Z3VtZW50R1BSMyA9IE1JUFNSZWdpc3RlcnM6OmEzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
bm9uQXJnR1BSMCA9IHJlZ1QyOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9
IHJlZ1QzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9IHJlZ1Q0OworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDU7CisKKyAgICBzdGF0aWMgR1BS
UmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5k
ZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
aXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIs
IHJlZ1QzLCByZWdUNCwgcmVnVDUgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhb
aW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcp
CisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBB
U1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JS
ZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgNCwg
NSB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107Cisg
ICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyBy
ZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAg
ICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJl
Z2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJ6ZXJvIiwgImF0IiwgInYwIiwgInYxIiwKKyAg
ICAgICAgICAgICJhMCIsICJhMSIsICJhMiIsICJhMyIsCisgICAgICAgICAgICAidDAiLCAidDEi
LCAidDIiLCAidDMiLAorICAgICAgICAgICAgInQ0IiwgInQ1IiwgInQ2IiwgInQ3IgorICAgICAg
ICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorcHJpdmF0
ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZm
OworfTsKKworI2VuZGlmCisKKyNpZiBDUFUoU0g0KQorI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1F
TlRfUkVHSVNURVJTIDQKKworY2xhc3MgR1BSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBH
UFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJl
Z2lzdGVycyA9IDEwOworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ1QwID0gU0g0UmVnaXN0ZXJzOjpyMDsKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpyMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1QyID0gU0g0UmVnaXN0ZXJzOjpyMjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Qz
ID0gU0g0UmVnaXN0ZXJzOjpyMTA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IFNI
NFJlZ2lzdGVyczo6cjQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNSA9IFNINFJlZ2lz
dGVyczo6cjU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNiA9IFNINFJlZ2lzdGVyczo6
cjY7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNyA9IFNINFJlZ2lzdGVyczo6cjc7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOCA9IFNINFJlZ2lzdGVyczo6cjg7CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUOSA9IFNINFJlZ2lzdGVyczo6cjk7CisgICAgLy8gVGhlc2Ug
cmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
Y2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBj
YWxsRnJhbWVSZWdpc3RlciA9IFNINFJlZ2lzdGVyczo6ZnA7CisgICAgLy8gVGhlc2UgY29uc3Rh
bnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYg
cmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50
R1BSMCA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gcmVn
VDU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSByZWdUNjsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IHJlZ1Q3OworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1QzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9u
QXJnR1BSMSA9IHJlZ1Q4OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9IHJl
Z1Q5OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOworICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDI7CisKKyAgICBz
dGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBB
U1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdU
MSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJlZ1Q2LCByZWdUNywgcmVnVDgsIHJlZ1Q5
IH07CisgICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE0KTsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTRdID0geyAwLCAx
LCAyLCBJbnZhbGlkSW5kZXgsIDQsIDUsIDYsIDcsIDgsIDksIDMsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5k
ZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRl
eCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJ
bnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAicjAiLCAi
cjEiLCAicjIiLCAicjMiLCAicjQiLCAicjUiLCAicjYiLCAicjciLAorICAgICAgICAgICAgInI4
IiwgInI5IiwgInIxMCIsICJyMTEiLCAicjEyIiwgInIxMyIsICJyMTQiLCAicjE1IgorICAgICAg
ICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorCitwcml2
YXRlOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZm
OworfTsKKworI2VuZGlmCisKK3R5cGVkZWYgUmVnaXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRv
ciBncHJfaXRlcmF0b3I7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCSh3b3JraW5nIGNvcHkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsMjAgKzIzLDE2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIERGR0dQUklu
Zm9faAotI2RlZmluZSBERkdHUFJJbmZvX2gKKyNpZm5kZWYgR1BSSW5mb19oCisjZGVmaW5lIEdQ
UkluZm9faAogCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0KLSNpZiBFTkFCTEUoREZHX0pJ
VCkKLQotI2luY2x1ZGUgIkRGR1JlZ2lzdGVyQmFuay5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKK25hbWVzcGFjZSBKU0MgewogCiB0eXBlZGVmIE1hY3JvQXNzZW1ibGVy
OjpSZWdpc3RlcklEIEdQUlJlZzsKLSNkZWZpbmUgSW52YWxpZEdQUlJlZyAoKDo6SlNDOjpERkc6
OkdQUlJlZyktMSkKKyNkZWZpbmUgSW52YWxpZEdQUlJlZyAoKDo6SlNDOjpHUFJSZWcpLTEpCiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQogY2xhc3MgSlNWYWx1ZVJlZ3MgewpAQCAtNjM2LDkgKzYzMiwx
OSBAQCBwcml2YXRlOgogCiAjZW5kaWYKIAotdHlwZWRlZiBSZWdpc3RlckJhbms8R1BSSW5mbz46
Oml0ZXJhdG9yIGdwcl9pdGVyYXRvcjsKK30gLy8gbmFtZXNwYWNlIEpTQwogCi19IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCituYW1lc3BhY2UgV1RGIHsKIAoraW5saW5lIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkdQUlJlZyByZWcpCit7CisjaWYgRU5BQkxFKEpJ
VCkKKyAgICBvdXQucHJpbnQoIiUiLCBKU0M6OkdQUkluZm86OmRlYnVnTmFtZShyZWcpKTsKKyNl
bHNlCisgICAgb3V0LnByaW50ZigiJSVyJWQiLCByZWcpOwogI2VuZGlmCit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJl
dmlzaW9uIDE1NjExOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzIsOSArNzIsOCBAQCB2b2lkIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRk
cmVzcyhDb2RlQmxvCiB9CiAKIEpJVDo6SklUKFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2sp
Ci0gICAgOiBtX2ludGVycHJldGVyKHZtLT5pbnRlcnByZXRlcikKLSAgICAsIG1fdm0odm0pCi0g
ICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgOiBKU0ludGVyZmFjZUpJVCh2bSwgY29k
ZUJsb2NrKQorICAgICwgbV9pbnRlcnByZXRlcih2bS0+aW50ZXJwcmV0ZXIpCiAgICAgLCBtX2xh
YmVscyhjb2RlQmxvY2sgPyBjb2RlQmxvY2stPm51bWJlck9mSW5zdHJ1Y3Rpb25zKCkgOiAwKQog
ICAgICwgbV9ieXRlY29kZU9mZnNldCgodW5zaWduZWQpLTEpCiAgICAgLCBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25JbmRleChVSU5UX01BWCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAkocmV2aXNpb24gMTU2MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtODg2LDggKzg4Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlm
CiAKICAgICAgICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7Ci0gICAgICAgIFZNKiBtX3Zt
OwotICAgICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogCiAgICAgICAgIFZlY3RvcjxDYWxs
UmVjb3JkPiBtX2NhbGxzOwogICAgICAgICBWZWN0b3I8TGFiZWw+IG1fbGFiZWxzOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCShyZXZpc2lvbiAxNTYxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbioKIAogSklUOjpDb2RlUmVm
IEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBKU0ludGVy
ZmFjZUpJVCBqaXQ7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICBKdW1wTGlzdCBm
YWlsdXJlczsKICAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0t
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNTYxMTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogSklUOjpDb2RlUmVm
IEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBKU0ludGVy
ZmFjZUpJVCBqaXQ7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICBKdW1wTGlzdCBm
YWlsdXJlczsKICAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0t
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTU2MTE4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIEpTSW50ZXJmYWNlSklUX2gKIAogI2luY2x1ZGUgIkJ5dGVjb2RlQ29u
dmVudGlvbnMuaCIKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJKSVRDb2Rl
LmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0z
OCw4ICszOSwxMyBAQAogI2lmIEVOQUJMRShKSVQpCiAKIG5hbWVzcGFjZSBKU0MgewotICAgIGNs
YXNzIEpTSW50ZXJmYWNlSklUIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKKyAgICBjbGFzcyBK
U0ludGVyZmFjZUpJVCA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgIHB1YmxpYzoKKyAgICAg
ICAgSlNJbnRlcmZhY2VKSVQoVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDApCisgICAg
ICAgICAgICA6IENDYWxsSGVscGVycyh2bSwgY29kZUJsb2NrKQorICAgICAgICB7CisgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIC8vIE5PVEVTOgogICAgICAgICAvLwogICAgICAgICAvLyBy
ZWdUMCBoYXMgdHdvIHNwZWNpYWwgbWVhbmluZ3MuICBUaGUgcmV0dXJuIHZhbHVlIGZyb20gYSBz
dHViCkBAIC0yMDYsOSArMjEyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJFbnRyeSk7CiAgICAgICAgIHZvaWQgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhl
YWRlcihSZWdpc3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKIAot
ICAgICAgICB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEKTsK
LSAgICAgICAgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklE
KTsKLSAgICAgICAgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNz
KTsKICAgICAgICAgdm9pZCByZXN0b3JlQXJndW1lbnRSZWZlcmVuY2UoKTsKIAogICAgICAgICBp
bmxpbmUgQWRkcmVzcyBwYXlsb2FkRm9yKGludCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2Fs
bEZyYW1lUmVnaXN0ZXIpOwpAQCAtMzk2LDc1ICszOTksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0dWFs
UmVnaXN0ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgfQogCi0jaWYgQ1BVKEFS
TSkKLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6cHJlc2VydmVSZXR1
cm5BZGRyZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgbW92ZShs
aW5rUmVnaXN0ZXIsIHJlZyk7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBK
U0ludGVyZmFjZUpJVDo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJ
RCByZWcpCi0gICAgewotICAgICAgICBtb3ZlKHJlZywgbGlua1JlZ2lzdGVyKTsKLSAgICB9Ci0g
ICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpyZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBsb2Fk
UHRyKGFkZHJlc3MsIGxpbmtSZWdpc3Rlcik7Ci0gICAgfQotI2VsaWYgQ1BVKFNINCkKLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6cHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3Rz
cHIocmVnKTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNl
SklUOjpyZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykKLSAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkc3ByKHJlZyk7Ci0gICAgfQotICAgIAotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZFB0ckxpbmtSZWco
YWRkcmVzcyk7Ci0gICAgfQotICAgIAotI2VsaWYgQ1BVKE1JUFMpCi0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChS
ZWdpc3RlcklEIHJlZykKLSAgICB7Ci0gICAgICAgIG1vdmUocmV0dXJuQWRkcmVzc1JlZ2lzdGVy
LCByZWcpOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VK
SVQ6OnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQotICAg
IHsKLSAgICAgICAgbW92ZShyZWcsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0gICAgfQotICAg
IAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6cmVzdG9yZVJldHVybkFk
ZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZFB0
cihhZGRyZXNzLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwotICAgIH0KLSAgICAKLSNlbHNlIC8v
IENQVShYODYpIHx8IENQVShYODZfNjQpCi0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRl
cmZhY2VKSVQ6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykK
LSAgICB7Ci0gICAgICAgIHBvcChyZWcpOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgSlNJbnRlcmZhY2VKSVQ6OnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJl
Z2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgcHVzaChyZWcpOwotICAgIH0KLSAgICAKLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OnJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIHB1c2goYWRkcmVz
cyk7Ci0gICAgfQotICAgIAotI2VuZGlmCi0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRl
cmZhY2VKSVQ6OnJlc3RvcmVBcmd1bWVudFJlZmVyZW5jZSgpCiAgICAgewogICAgICAgICBtb3Zl
KHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlz
aW9uIDE1NjExOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVu
a0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIFNwZWNpYWxpemVkVGh1bmtKSVQgOiBwdWJsaWMgSlNJbnRlcmZhY2VKSVQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBUaGlzQXJndW1lbnQgPSAtMTsK
LSAgICAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVChpbnQgZXhwZWN0ZWRBcmdDb3VudCkKKyAgICAg
ICAgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0sIGludCBleHBlY3RlZEFyZ0NvdW50KQorICAg
ICAgICAgICAgOiBKU0ludGVyZmFjZUpJVCh2bSkKICAgICAgICAgewogICAgICAgICAgICAgLy8g
Q2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCiAgICAg
ICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihK
U1N0YWNrOjpBcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAx
KSkpOwpAQCAtMTMwLDkgKzEzMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
aW5hbGl6ZShWTSYgdm0sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3QgY2hh
ciogdGh1bmtLaW5kKQorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmluYWxpemUoTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIGZhbGxiYWNrLCBjb25zdCBjaGFyKiB0aHVua0tpbmQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodm0sIHRoaXMsIEdMT0JB
TF9USFVOS19JRCk7CisgICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0
aGlzLCBHTE9CQUxfVEhVTktfSUQpOwogICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2Zh
aWx1cmVzLCBDb2RlTG9jYXRpb25MYWJlbChmYWxsYmFjaykpOwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FsbHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICAgICAg
cGF0Y2hCdWZmZXIubGluayhtX2NhbGxzW2ldLmZpcnN0LCBtX2NhbGxzW2ldLnNlY29uZCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShy
ZXZpc2lvbiAxNTYxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIEpTSW50ZXJm
YWNlSklUOjpDYWxsIGdlbmVyYXRlU2xvdwogCiBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGxpbmtGb3JHZW5lcmF0b3IoVk0qIHZtLCBGdW5jdGlvblB0ciBsYXp5TGluaywgRnVuY3Rpb25Q
dHIgbm90SlNGdW5jdGlvbiwgY29uc3QgY2hhciogbmFtZSkKIHsKLSAgICBKU0ludGVyZmFjZUpJ
VCBqaXQ7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICAKICAgICBKU0ludGVyZmFj
ZUpJVDo6SnVtcExpc3Qgc2xvd0Nhc2U7CiAgICAgCkBAIC0xMTQsNyArMTE0LDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGxpbmtDbG9zdXJlQ2FsbEdlbgogCiBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHZpcnR1YWxGb3JHZW5lcmF0b3IoVk0qIHZtLCBGdW5jdGlvblB0ciBjb21waWxl
LCBGdW5jdGlvblB0ciBub3RKU0Z1bmN0aW9uLCBjb25zdCBjaGFyKiBuYW1lLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCiB7Ci0gICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIEpTSW50
ZXJmYWNlSklUIGppdCh2bSk7CiAgICAgCiAgICAgSlNJbnRlcmZhY2VKSVQ6Okp1bXBMaXN0IHNs
b3dDYXNlOwogCkBAIC0xNjksNyArMTY5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1
YWxDb25zdHJ1Y3RHZQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3RyaW5nTGVuZ3RoVHJhbXBv
bGluZUdlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIEpT
SW50ZXJmYWNlSklUIGppdCh2bSk7CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAvLyBD
aGVjayBlYXggaXMgYSBzdHJpbmcKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiB7CiAgICAgaW50IGV4ZWN1dGFibGVPZmZzZXRUb0Z1
bmN0aW9uID0gTmF0aXZlRXhlY3V0YWJsZTo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihraW5k
KTsKICAgICAKLSAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0
KHZtKTsKICAgICAKICAgICBqaXQuZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKDAs
IEpTU3RhY2s6OkNvZGVCbG9jayk7CiAgICAgaml0LnN0b3JlUHRyKEpTSW50ZXJmYWNlSklUOjpj
YWxsRnJhbWVSZWdpc3RlciwgJnZtLT50b3BDYWxsRnJhbWUpOwpAQCAtNDIxLDcgKzQyMSw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVDb25zdHJ1Y3RHZW4KIAogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGFyaXR5Rml4dXAoVk0qIHZtKQogewotICAgIEpTSW50ZXJmYWNlSklUIGppdDsK
KyAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwogCiAgICAgLy8gV2UgZW50ZXIgd2l0aCBmaXh1
cCBjb3VudCBpbiByZWdUMAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC01MzksNDEgKzUzOSw0MSBA
QCBzdGF0aWMgdm9pZCBjaGFyVG9TdHJpbmcoU3BlY2lhbGl6ZWRUaHVuCiAKIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNwZWNp
YWxpemVkVGh1bmtKSVQgaml0KDEpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAx
KTsKICAgICBzdHJpbmdDaGFyTG9hZChqaXQsIHZtKTsKICAgICBqaXQucmV0dXJuSW50MzIoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwotICAgIHJldHVybiBqaXQuZmluYWxpemUoKnZtLCB2
bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiY2hhckNvZGVBdCIpOworICAgIHJldHVy
biBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgImNoYXJDb2Rl
QXQiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJBdFRodW5rR2VuZXJhdG9yKFZN
KiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgxKTsKKyAgICBTcGVjaWFsaXpl
ZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgc3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAgICAg
Y2hhclRvU3RyaW5nKGppdCwgdm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFs
aXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAgIGpp
dC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwotICAgIHJldHVybiBq
aXQuZmluYWxpemUoKnZtLCB2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiY2hhckF0
Iik7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwo
dm0pLCAiY2hhckF0Iik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmcm9tQ2hhckNvZGVU
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQoMSk7
CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIC8vIGxvYWQgY2hhciBj
b2RlCiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QwKTsKICAgICBjaGFyVG9TdHJpbmcoaml0LCB2bSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MSk7CiAgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7Ci0g
ICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2
bSksICJmcm9tQ2hhckNvZGUiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVi
cy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJmcm9tQ2hhckNvZGUiKTsKIH0KIAogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHNxcnRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRU
aHVua0pJVCBqaXQoMSk7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAg
IGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSkKICAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVi
cy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwogCiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBT
cGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7
CiAgICAgaml0LnNxcnREb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lh
bGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXpl
ZFRodW5rSklUOjpmcFJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmpp
dFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgInNxcnQiKTsKKyAgICByZXR1cm4gaml0LmZpbmFs
aXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJzcXJ0Iik7CiB9CiAKIApAQCAt
NjY4LDcgKzY2OCw3IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgaGFsZkNvbnN0YW50ID0gMC41Owog
ICAgIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQog
ewotICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KDEpOworICAgIFNwZWNpYWxpemVkVGh1bmtK
SVQgaml0KHZtLCAxKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwogICAg
IGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIoZmxvb3IpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGlu
Z1BvaW50KCkpCiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNl
bGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKQEAgLTY5
NSwxMiArNjk1LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9vclRodW5rR2VuZXJhdG8K
ICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGRv
dWJsZVJlc3VsdC5saW5rKCZqaXQpOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJmbG9vciIpOworICAgIHJldHVybiBqaXQuZmluYWxp
emUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgImZsb29yIik7CiB9CiAKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNwZWNp
YWxpemVkVGh1bmtKSVQgaml0KDEpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAx
KTsKICAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGNlaWwpIHx8ICFqaXQuc3VwcG9ydHNG
bG9hdGluZ1BvaW50KCkpCiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwpAQCAtNzE0LDEyICs3MTQsMTIg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcgogICAgIGppdC5yZXR1
cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgZG91YmxlUmVzdWx0Lmxp
bmsoJmppdCk7CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJl
Z1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlOYXRp
dmVDYWxsKHZtKSwgImNlaWwiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVi
cy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJjZWlsIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklU
IGppdCgxKTsKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFV
bmFyeURvdWJsZU9wV3JhcHBlcihqc1JvdW5kKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2lu
dCgpKQogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbm9uSW50SnVtcDsKQEAgLTc0OCwzOCArNzQ4LDM4IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2VuZXJhdG8KICAgICBqaXQucmV0dXJuSW50MzIoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGRvdWJsZVJlc3VsdC5saW5rKCZqaXQpOwog
ICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAg
cmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSks
ICJyb3VuZCIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRp
dmVDYWxsKHZtKSwgInJvdW5kIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBleHBUaHVu
a0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihleHAp
KQogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7Ci0gICAgU3BlY2lhbGl6
ZWRUaHVua0pJVCBqaXQoMSk7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwog
ICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQogICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVDYWxsKHZtKSk7CiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVj
aWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAg
ICAgaml0LmNhbGxEb3VibGVUb0RvdWJsZVByZXNlcnZpbmdSZXR1cm4oVW5hcnlEb3VibGVPcFdy
YXBwZXIoZXhwKSk7CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpm
cFJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlO
YXRpdmVDYWxsKHZtKSwgImV4cCIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0
dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgImV4cCIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgbG9nVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIGlmICghVW5hcnlEb3VibGVPcFdy
YXBwZXIobG9nKSkKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
U2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwotICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KDEpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0
KHZtLCAxKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKICAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZt
LT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwogICAgIGppdC5sb2FkRG91YmxlQXJndW1l
bnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDApOwogICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQcmVzZXJ2aW5nUmV0dXJuKFVuYXJ5
RG91YmxlT3BXcmFwcGVyKGxvZykpOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJsb2ciKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXpl
KHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJsb2ciKTsKIH0KIAogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXpl
ZFRodW5rSklUIGppdCgxKTsKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAg
ICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkpCiAgICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1
YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRK
dW1wOwpAQCAtNzk0LDEyICs3OTQsMTIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFic1RodW5r
R2VuZXJhdG9yKAogICAgIGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGppdC5hYnNE
b3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
ZnBSZWdUMSk7CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJl
Z1QxKTsKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlOYXRp
dmVDYWxsKHZtKSwgImFicyIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVDYWxsKHZtKSwgImFicyIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
cG93VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0
KDIpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAyKTsKICAgICBpZiAoIWppdC5z
dXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2Fs
bCh2bSkpOwogCkBAIC04NDYsMTIgKzg0NiwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcG93
VGh1bmtHZW5lcmF0b3IoCiAgICAgfSBlbHNlCiAgICAgICAgIGppdC5hcHBlbmRGYWlsdXJlKG5v
bkludEV4cG9uZW50KTsKIAotICAgIHJldHVybiBqaXQuZmluYWxpemUoKnZtLCB2bS0+aml0U3R1
YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAicG93Iik7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2
bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAicG93Iik7CiB9CiAKIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNwZWNpYWxpemVk
VGh1bmtKSVQgaml0KDIpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAyKTsKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRBcmcwSnVtcDsKICAgICBqaXQubG9hZEludDMy
QXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIG5vbkludEFyZzBKdW1wKTsK
ICAgICBTcGVjaWFsaXplZFRodW5rSklUOjpMYWJlbCBkb25lTG9hZGluZ0FyZzAoJmppdCk7CkBA
IC04NzksNyArODc5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRv
cgogICAgIH0gZWxzZQogICAgICAgICBqaXQuYXBwZW5kRmFpbHVyZShub25JbnRBcmcxSnVtcCk7
CiAKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlOYXRpdmVD
YWxsKHZtKSwgImltdWwiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+
Y3RpTmF0aXZlQ2FsbCh2bSksICJpbXVsIik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMTU2MTE4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAogc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhWTSogdm0s
IHZvaWQgKCp0YXJnZXQpKCksIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKIHsKLSAgICBKU0ludGVy
ZmFjZUpJVCBqaXQ7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICAKICAgICAvLyBG
SVhNRTogdGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQg
SSdtIG5vdCBzdXJlIEkgY2FyZS4KICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3Rl
ZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVn
VDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAko
cmV2aXNpb24gMTU2MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
IC8vIHZhbHVlcyBhcyBiZWluZyBtaXNzaW5nLCBzbyBpdCBpcyB1c2VmdWwgdG8gaGF2ZSBpdCBh
YmJyZXZpYXRlZC4KICNkZWZpbmUgUU5hTiAoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpx
dWlldF9OYU4oKSkKIAorY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogY2xhc3MgRXhlY1N0YXRlOwog
Y2xhc3MgSlNDZWxsOworY2xhc3MgSlNWYWx1ZVNvdXJjZTsKIGNsYXNzIFZNOwogY2xhc3MgSlNH
bG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKQEAgLTUxLDEwICs1Myw3IEBAIGNsYXNzIFBy
b3BlcnR5U2xvdDsKIGNsYXNzIFB1dFByb3BlcnR5U2xvdDsKICNpZiBFTkFCTEUoREZHX0pJVCkK
IG5hbWVzcGFjZSBERkcgewotY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogY2xhc3MgSklUQ29tcGls
ZXI7Ci1jbGFzcyBKSVRDb2RlR2VuZXJhdG9yOwotY2xhc3MgSlNWYWx1ZVNvdXJjZTsKIGNsYXNz
IE9TUkV4aXRDb21waWxlcjsKIGNsYXNzIFNwZWN1bGF0aXZlSklUOwogfQpAQCAtMTE2LDE3ICsx
MTUsMTYgQEAgaW5saW5lIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSBudW1iZXIpCiAKIGNsYXNz
IEpTVmFsdWUgewogICAgIGZyaWVuZCBzdHJ1Y3QgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzOwor
ICAgIGZyaWVuZCBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
ICAgICBmcmllbmQgY2xhc3MgSklUU2xvd1BhdGhDYWxsOwogICAgIGZyaWVuZCBjbGFzcyBKSVRT
dHViczsKICAgICBmcmllbmQgY2xhc3MgSklUU3R1YkNhbGw7CiAgICAgZnJpZW5kIGNsYXNzIEpT
SW50ZXJmYWNlSklUOworICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlU291cmNlOwogICAgIGZyaWVu
ZCBjbGFzcyBTcGVjaWFsaXplZFRodW5rSklUOwogI2lmIEVOQUJMRShERkdfSklUKQotICAgIGZy
aWVuZCBjbGFzcyBERkc6OkFzc2VtYmx5SGVscGVyczsKICAgICBmcmllbmQgY2xhc3MgREZHOjpK
SVRDb21waWxlcjsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb2RlR2VuZXJhdG9yOwotICAg
IGZyaWVuZCBjbGFzcyBERkc6OkpTVmFsdWVTb3VyY2U7CiAgICAgZnJpZW5kIGNsYXNzIERGRzo6
T1NSRXhpdENvbXBpbGVyOwogICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwog
I2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212123</attachid>
            <date>2013-09-19 21:34:45 -0700</date>
            <delta_ts>2013-09-19 21:34:45 -0700</delta_ts>
            <desc>patch for relanding</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>257182</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2MTM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk1IEBA
CisyMDEzLTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBDQ2FsbEhlbHBlcnMgYW5kIEFzc2VtYmx5SGVscGVycyBpbnRvIGppdC8gYW5kIGhhdmUg
SlNJbnRlcmZhY2VKSVQgdXNlIHRoZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMTYzNworCisgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IE1pY2hh
ZWwgU2Fib2ZmLgorICAgICAgICAKKyAgICAgICAgQWxzbyBtb3ZlZCBHUFJJbmZvL0ZQUkluZm8g
aW50byBqaXQvLiBSb2xsaW5nIGJhY2sgaW4gYWZ0ZXIgZml4aW5nIEpJVC1vbmx5IGJ1aWxkCisg
ICAgICAgIGFuZCB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBieXRl
Y29kZS9WYWx1ZVJlY292ZXJ5Lmg6CisgICAgICAgIChKU0M6OlZhbHVlUmVjb3Zlcnk6OmR1bXBJ
bkNvbnRleHQpOgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBkZmcvREZHQmluYXJ5U3dpdGNoLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHQ0NhbGxIZWxwZXJzLmg6IFJlbW92ZWQuCisgICAgICAg
ICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogZGZnL0RGR0ZQUkluZm8uaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5oOiBSZW1vdmVkLgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxl
ci5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaDoKKyAgICAgICAg
KiBkZmcvREZHUmVnaXN0ZXJCYW5rLmg6CisgICAgICAgICogZGZnL0RGR1JlZ2lzdGVyU2V0Lmg6
CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAqIGRmZy9ERkdTaWxlbnRS
ZWdpc3RlclNhdmVQbGFuLmg6CisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAg
ICogZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwOgorICAgICAgICAqIGZ0bC9GVExDQXJndW1lbnRH
ZXR0ZXIuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpDQXJndW1lbnRHZXR0ZXI6OkNBcmd1bWVudEdl
dHRlcik6CisgICAgICAgIChKU0M6OkZUTDo6Q0FyZ3VtZW50R2V0dGVyOjpsb2FkTmV4dDgpOgor
ICAgICAgICAoSlNDOjpGVEw6OkNBcmd1bWVudEdldHRlcjo6bG9hZE5leHQzMik6CisgICAgICAg
IChKU0M6OkZUTDo6Q0FyZ3VtZW50R2V0dGVyOjpsb2FkTmV4dDY0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpDQXJndW1lbnRHZXR0ZXI6OmxvYWROZXh0UHRyKToKKyAgICAgICAgKEpTQzo6RlRMOjpD
QXJndW1lbnRHZXR0ZXI6OmxvYWROZXh0RG91YmxlKToKKyAgICAgICAgKiBmdGwvRlRMQ29tcGls
ZS5jcHA6CisgICAgICAgICogZnRsL0ZUTEV4aXRUaHVua0dlbmVyYXRvci5oOgorICAgICAgICAq
IGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAg
KiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwLgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJs
eUhlbHBlcnMuaC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpBc3NlbWJseUhlbHBl
cnMpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmRlYnVnQ2FsbCk6CisgICAgICAg
ICogaml0L0NDYWxsSGVscGVycy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NDYWxsSGVscGVycy5oLgorICAgICAgICAqIGppdC9GUFJJbmZvLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oLgorICAgICAgICAoV1RG
OjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaC4KKyAgICAgICAgKFdURjo6cHJp
bnRJbnRlcm5hbCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
SklUKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3Ip
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KU0lu
dGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6SlNJbnRlcmZhY2VK
SVQpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6
OlNwZWNpYWxpemVkVGh1bmtKSVQ6OlNwZWNpYWxpemVkVGh1bmtKSVQpOgorICAgICAgICAoSlND
OjpTcGVjaWFsaXplZFRodW5rSklUOjpmaW5hbGl6ZSk6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmxpbmtGb3JHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjp2aXJ0dWFsRm9yR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nTGVuZ3RoVHJh
bXBvbGluZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Om5hdGl2ZUZvckdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OmFyaXR5Rml4dXApOgorICAgICAgICAoSlNDOjpjaGFyQ29kZUF0VGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpjaGFyQXRUaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OmZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6c3FydFRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Zmxvb3JUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OmNlaWxUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnJvdW5kVGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpleHBUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OmxvZ1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6YWJzVGh1bmtHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpwb3dUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmltdWxU
aHVua0dlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDSlNWYWx1ZS5oOgorCiAyMDEzLTA5LTE5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTU2MTIw
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTU2MTM2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC04MCw3ICs4MCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R0Fic3RyYWN0VmFsdWUuY3BwCiAgICAgZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhh
c2UuY3BwCiAgICAgZGZnL0RGR0FycmF5TW9kZS5jcHAKLSAgICBkZmcvREZHQXNzZW1ibHlIZWxw
ZXJzLmNwcAogICAgIGRmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNwcAogICAgIGRmZy9ERkdC
YWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdCYXNpY0Jsb2NrLmNwcApA
QCAtMjA5LDYgKzIwOCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAogICAgIGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAog
CisgICAgaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKICAgICBqaXQvQ2xvc3VyZUNhbGxTdHViUm91
dGluZS5jcHAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKICAgICBqaXQvRXhlY3V0
YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1NjEzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsOCArMTky
LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheU1vZGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1Bh
dGhHZW5lcmF0b3IuaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhl
bHBlcnMuY3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVy
cy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBo
YXNlLmNwcCBcCkBAIC0yMDgsNyArMjA2LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCcmFuY2hEaXJlY3Rpb24uaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuaCBcCi0JU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBcCkBAIC0yNjEs
NyArMjU4LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdFZGdlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRn
ZURvbWluYXRlcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VVc2VzU3Ry
dWN0dXJlLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmFpbGVkRmluYWxpemVyLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmlsdHJhdGlvblJlc3VsdC5oIFwKQEAgLTI3NCw3ICsyNzAsNiBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZsdXNoTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGbHVzaExpdmVuZXNzQW5hbHlzaXNQaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR1BSSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVy
YXRpb25JbmZvLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggXApAQCAtNjA0LDE0ICs1OTks
MTkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1ZNSW5zcGVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZVByZWZpeC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ29tcGFjdEpJVENvZGVNYXAuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRlBSSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVK
SVRTdHViUm91dGluZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw2IEBAIFNPVVJD
RVMgKz0gXAogICAgIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcCBcCiAgICAgZGZnL0RGR0FyZ3Vt
ZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIFwKICAgICBkZmcvREZHQXJyYXlNb2RlLmNwcCBc
Ci0gICAgZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAgXAogICAgIGRmZy9ERkdBdFRhaWxBYnN0
cmFjdFN0YXRlLmNwcCBcCiAgICAgZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3Bw
IFwKICAgICBkZmcvREZHQmFzaWNCbG9jay5jcHAgXApAQCAtMjA2LDYgKzIwNSw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBcCiAgICAgaW50ZXJwcmV0
ZXIvSlNTdGFjay5jcHAgXAogICAgIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgXAorICAg
IGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIFwKICAgICBqaXQvQ2xvc3VyZUNhbGxTdHViUm91dGlu
ZS5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIFwKICAg
ICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjIsNiArMzYyLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGludGVycHJldGVyXEpTU3RhY2suY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGludGVycHJldGVyXFN0YWNrVmlzaXRvci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caW50ZXJwcmV0ZXJcVk1JbnNwZWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGppdFxBc3NlbWJseUhlbHBlcnMuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGppdFxDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCIgLz4NCiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxqaXRcRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAiIC8+DQogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEdDQXdhcmVKSVRTdHViUm91dGluZS5jcHAiIC8+DQpA
QCAtNzUxLDEwICs3NTIsMTQgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJl
dGVyXFJlZ2lzdGVyLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0
ZXJcU3RhY2tWaXNpdG9yLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJw
cmV0ZXJcVk1JbnNwZWN0b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRc
QXNzZW1ibHlIZWxwZXJzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEND
YWxsSGVscGVycy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxDbG9zdXJl
Q2FsbFN0dWJSb3V0aW5lLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XENv
bXBhY3RKSVRDb2RlTWFwLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEV4
ZWN1dGFibGVBbGxvY2F0b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRc
RlBSSW5mby5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxHQ0F3YXJlSklU
U3R1YlJvdXRpbmUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcR1BSSW5m
by5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxIb3N0Q2FsbFJldHVyblZh
bHVlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEpJVC5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKSVRDb2RlLmgiIC8+DQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NjEzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTMsNiArMTEzLDExIEBACiAJCTBGMjM1QkVEMTcxNzhFNzMwMDY5MEM3RiAv
KiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyMzVCRTkxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQ
cmVwYXJhdGlvbi5jcHAgKi87IH07CiAJCTBGMjM1QkVFMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdP
U1JFeGl0UHJlcGFyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMjM1QkVBMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFC
QjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjI0RTU0MDE3RUE5RjU5MDBBQkIyMTcg
LyogQXNzZW1ibHlIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMjRFNTNCMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMu
Y3BwICovOyB9OworCQkwRjI0RTU0MTE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTUz
QzE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyNEU1NDIxN0VBOUY1OTAwQUJCMjE3
IC8qIENDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyNEU1M0QxN0VBOUY1OTAwQUJCMjE3IC8qIENDYWxsSGVscGVycy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjRFNTQzMTdF
QTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTUzRTE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjRFNTQ0
MTdFQTlGNTkwMEFCQjIxNyAvKiBHUFJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTUzRjE3RUE5RjU5MDBBQkIyMTcgLyogR1BSSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjU2
QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
NTZDMzQxNjI3QjBBQTAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYyQjY2QUMxN0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZBODE3QjZC
NTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FFM0Yg
LyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZBOTE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNv
bWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTI2Miw3ICsyNjcsNiBAQAogCQkwRjc2NkQ0NDE1QjJBM0MwMDA4
RjM2M0UgLyogREZHUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNzY2RDQyMTVCMkEzQkQwMDhGMzYzRSAvKiBERkdSZWdpc3RlclNl
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NzY2RDQ2MTVCMzcwMUYwMDhGMzYzRSAvKiBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2RDQ1MTVC
MzcwMUQwMDhGMzYzRSAvKiBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjc3MDA5MjE0MDJGRjND
MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGlu
Z0NvdW50ZXIuY3BwICovOyB9OwotCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0Nh
bGxIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjdCMjk0ODE0QzNDRDIzMDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3QjI5NEIxNEMzQ0Qy
RjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFMUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFi
aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGN0IyOTREMTRDM0NENEMwMDdDM0RCMSAvKiBERkdDb21tb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0
MiAvKiBERkdDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIz
MDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTM0MCw4ICszNDQsNiBAQAogCQkwRkJFMEY3NjE2QzFEQjBGMDA4
MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJFMEY2RjE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5p
ZmljYXRpb25QaGFzZS5jcHAgKi87IH07CiAJCTBGQkUwRjc3MTZDMURCMTIwMDgyQzVFOCAvKiBE
RkdVbmlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkJFMEY3MDE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
QzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc2ODE0NjhBNkVGMDBDRjI0NDIgLyog
REZHT1NSRXhpdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTBGQzA5NzZEMTQ2OEFCNEUwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzZDMTQ2
OEFCNEEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkMwOTc2RTE0NjhBQjUxMDBDRjI0NDIg
LyogREZHQXNzZW1ibHlIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQzA5NzZCMTQ2OEFCNEEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhl
bHBlcnMuY3BwICovOyB9OwogCQkwRkMwOTc3MTE0NjkzQUY1MDBDRjI0NDIgLyogREZHT1NSRXhp
dENvbXBpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkMwOTc2RjE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZDMDk3NzIxNDY5
M0FGOTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzcwMTQ2OTNBRUYwMENGMjQ0MiAv
KiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgKi87IH07CiAJCTBGQzA5Nzc2MTQ2OTQzQjAwMENG
MjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3NTE0Njk0M0FEMDBDRjI0NDIgLyogREZH
T1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwICovOyB9OwpAQCAtNzI1LDggKzcyNyw2IEBACiAJCTg2
QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAw
NkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QUU2NEE5MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNy
b0Fzc2VtYmxlclNINC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZBRTY0QTYxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZBRTY0QUEx
MzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTcxMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFz
c2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTg2QUU2QzREMTM2QTExRTQwMDk2MzAxMiAvKiBERkdGUFJJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFFNkM0QjEzNkExMUU0MDA5NjMw
MTIgLyogREZHRlBSSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTg2QUU2QzRFMTM2QTExRTQwMDk2MzAxMiAvKiBERkdHUFJJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFFNkM0QzEzNkEx
MUU0MDA5NjMwMTIgLyogREZHR1BSSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2QjU4MjY3MTREMjc5NkMwMEE5QzMwNiAvKiBDb2RlUHJv
ZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkI1ODIyRTE0RDIzNzNCMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwICovOyB9OwogCQk4NkI1
ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAzQ0VGMjE0Qzc1NDY0MDBBRTU5RTMg
LyogQ29kZVByb2ZpbGluZy5jcHAgKi87IH07CiAJCTg2QkIwOUMwMTM4RTM4MUIwMDU2NzAyRiAv
KiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLzsgfTsK
QEAgLTEzMTMsNiArMTMxMywxMSBAQAogCQkwRjIzNUJFOTE3MTc4RTczMDA2OTBDN0YgLyogREZH
T1NSRXhpdFByZXBhcmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdFByZXBh
cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMzVCRUExNzE3OEU3
MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0UHJlcGFyYXRpb24uaDsgcGF0aCA9IGRmZy9ERkdPU1JF
eGl0UHJlcGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUx
M0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlI
ZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzc2VtYmx5
SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjRFNTNDMTdFQTlG
NTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXNzZW1ibHlIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMjRFNTNEMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ0NhbGxIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMjRFNTNFMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZQUkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyNEU1M0YxN0VBOUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BSSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjI1NkMzNDE2MjdCMEFBMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9y
U2xvd1BhdGhHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjJCNjZBODE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR0NJbmNvbWluZ1JlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYyQjY2QTkxN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZD
b3VudGVkSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0luY29taW5nUmVmQ291bnRlZElubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NjIsNyArMTQ2Nyw2IEBACiAJ
CTBGNzY2RDQ1MTVCMzcwMUQwMDhGMzYzRSAvKiBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmg7IHBhdGggPSBkZmcvREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1w
bGluZ0NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdD
b3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgw
MDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDQ2FsbEhlbHBlcnMuaDsgcGF0aCA9IGRm
Zy9ERkdDQ2FsbEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIz
RTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCeVZhbEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4
MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1NDksOCArMTU1Myw2IEBACiAJCTBGQkUwRjZGMTZDMURCMDEwMDgyQzVFOCAvKiBE
RkdVbmlmaWNhdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR1VuaWZpY2F0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1VuaWZpY2F0aW9uUGhh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkJFMEY3MDE2QzFEQjAxMDA4
MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdVbmlmaWNhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHVW5pZmljYXRpb25Q
aGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc2ODE0NjhBNkVGMDBD
RjI0NDIgLyogREZHT1NSRXhpdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdPU1JFeGl0Lmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwRkMwOTc2QjE0NjhBQjRBMDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxwZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Fzc2VtYmx5SGVs
cGVycy5jcHA7IHBhdGggPSBkZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMEZDMDk3NkMxNDY4QUI0QTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5
SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBc3NlbWJseUhl
bHBlcnMuaDsgcGF0aCA9IGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NkYxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21w
aWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGls
ZXIuaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZDMDk3NzAxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxl
cjY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4aXRD
b21waWxlcjY0LmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5Nzc1MTQ2OTQzQUQwMENGMjQ0MiAvKiBERkdP
U1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdENv
bXBpbGVyMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxNyw4ICsx
OTE5LDYgQEAKIAkJODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJN
djcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkFFNjRBNjEzNUU1RTFDMDA5NjMw
MTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWFjcm9Bc3NlbWJsZXJTSDQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZB
RTY0QTcxMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTSDRBc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJODZBRTZDNEIxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRlBSSW5mby5oOyBwYXRoID0gZGZnL0RGR0ZQUklu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODZBRTZDNEMxMzZBMTFFNDAwOTYz
MDEyIC8qIERGR0dQUkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
R1BSSW5mby5oOyBwYXRoID0gZGZnL0RGR0dQUkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlVHJlZU5vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCNTgyMkUxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQ
cm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVQcm9m
aWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCNTgyMkYxNEQyMzczQjAw
QTlDMzA2IC8qIENvZGVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvZGVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzA0LDYgKzI3
MDQsMTEgQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyNEU1M0IxN0VBOUY1OTAwQUJC
MjE3IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgKi8sCisJCQkJMEYyNEU1M0MxN0VBOUY1OTAwQUJC
MjE3IC8qIEFzc2VtYmx5SGVscGVycy5oICovLAorCQkJCTBGMjRFNTNEMTdFQTlGNTkwMEFCQjIx
NyAvKiBDQ2FsbEhlbHBlcnMuaCAqLywKKwkJCQkwRjI0RTUzRTE3RUE5RjU5MDBBQkIyMTcgLyog
RlBSSW5mby5oICovLAorCQkJCTBGMjRFNTNGMTdFQTlGNTkwMEFCQjIxNyAvKiBHUFJJbmZvLmgg
Ki8sCiAJCQkJMEY3M0Q3QUIxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRp
bmUuY3BwICovLAogCQkJCTBGNzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0
dWJSb3V0aW5lLmggKi8sCiAJCQkJMEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RK
SVRDb2RlTWFwLmggKi8sCkBAIC0zNDY1LDggKzM0NzAsNiBAQAogCQkJCTBGMDVDM0IyMTY4M0NG
OEYwMEJBRjQ1QiAvKiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggKi8sCiAJCQkJMEY2
Mzk0ODExNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5jcHAgKi8sCiAJCQkJMEY2Mzk0
ODIxNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oICovLAotCQkJCTBGQzA5NzZCMTQ2
OEFCNEEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuY3BwICovLAotCQkJCTBGQzA5NzZD
MTQ2OEFCNEEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuaCAqLywKIAkJCQlBN0Q5QTI4
RjE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAgKi8sCiAJCQkJ
QTdEOUEyOTAxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCAqLywK
IAkJCQkwRjcxNENBMTE2RUE5MkVEMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25Q
aGFzZS5jcHAgKi8sCkBAIC0zNDg0LDcgKzM0ODcsNiBAQAogCQkJCTBGMjU2QzM0MTYyN0IwQUEw
MDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oICovLAog
CQkJCTBGRDgyRTFFMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwICovLAog
CQkJCTBGRDgyRTFGMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLywKLQkJ
CQkwRjdCMjk0ODE0QzNDRDIzMDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggKi8sCiAJCQkJ
MEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLywKIAkJCQkwRkZG
Qzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLywKIAkJCQkwRjNCM0EyNDE1
NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgKi8sCkBAIC0z
NTQ1LDkgKzM1NDcsNyBAQAogCQkJCUE3RDg5Q0U5MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVz
aEZvcm1hdC5oICovLAogCQkJCUE3RDg5Q0VBMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaExp
dmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgKi8sCiAJCQkJQTdEODlDRUIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0ZsdXNoTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggKi8sCi0JCQkJODZBRTZDNEIxMzZB
MTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8uaCAqLywKIAkJCQk4NkVDOURCNjEzMjhERjgyMDAy
QjJBRDcgLyogREZHR2VuZXJhdGlvbkluZm8uaCAqLywKLQkJCQk4NkFFNkM0QzEzNkExMUU0MDA5
NjMwMTIgLyogREZHR1BSSW5mby5oICovLAogCQkJCTg2RUM5REI3MTMyOERGODIwMDJCMkFENyAv
KiBERkdHcmFwaC5jcHAgKi8sCiAJCQkJODZFQzlEQjgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dy
YXBoLmggKi8sCiAJCQkJQTcwNEQ5MDAxN0EwQkFBODAwNkJBNTU0IC8qIERGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcCAqLywKQEAgLTM5MDksNiArMzkwOSw3IEBACiAJCQkJMEYxNUYxNUYxNEI3
QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1
M0EzMzIxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRDgyRTM5MTQxQUIxNEQwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29k
ZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyNEU1NDQxN0VBOUY1OTAwQUJCMjE3IC8qIEdQ
UkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTVBM0E4MTc5NzQzMkQwMEU4OTNDMCAvKiBD
b21waWxhdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRjQwRTE2RjVDRDAw
QjM0NDYwIC8qIENvbXBsZXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGREIyQ0VBMTc0ODk2
QzcwMDdCM0MxQiAvKiBDb25jdXJyZW50SklUTG9jay5oIGluIEhlYWRlcnMgKi8sCkBAIC0zOTQ5
LDcgKzM5NTAsNiBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA1QzNCNDE2ODND
RjkyMDBCQUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY2Mzk0ODUxNUU0ODExQjAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEZDMDk3NkQxNDY4QUI0RTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVs
cGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEyOTUxN0EwQkM3NDAwRUUyNjE4IC8qIERG
R0F0VGFpbEFic3RyYWN0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzE0Q0E1MTZFQTky
RjIwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjYyMDE3NjE0M0ZDRDNCMDA2OEI3N0MgLyogREZHQmFzaWNCbG9jay5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zOTYwLDcgKzM5NjAsNiBAQAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJC
MkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYx
NjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2Fw
YWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEg
LyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEy
MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0IzQTI4MTU0
NEM5OTcwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzdBNDI0MDE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlcml6ZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zOTk0LDkgKzM5OTMsNyBAQAogCQkJCTBGMkJEQzE2MTUxQzVENEYwMENE
ODkxMCAvKiBERkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGODE3QTBC
OENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5
Q0ZBMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaExpdmVuZXNzQW5hbHlzaXNQaGFzZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJODZBRTZDNEQxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0ZQUkluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5l
cmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODZBRTZDNEUxMzZBMTFFNDAwOTYzMDEy
IC8qIERGR0dQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM4MTMyOERGODIwMDJC
MkFENyAvKiBERkdHcmFwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDYxN0EwQkFBODAw
NkJBNTU0IC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJCREMyMTE1MUU4MDNCMDBDRDg5MTAgLyogREZHSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAq
LywKQEAgLTQxMzgsNiArNDEzNSw3IEBACiAJCQkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8q
IEhlYXBTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkU1MjZCRTE1OTBFRjAwMDA1
NEU0OEQgLyogSGVhcFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODBENTE0QkJEMjRC
MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYy
NEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDBGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkI3RjM5OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtNDIxMiw2ICs0MjEwLDcgQEAKIAkJCQlCQzE4QzQxRjBFMTZG
NUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyMDI4QkEx
Nzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZGMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhl
bHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJCNjZGMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY0MTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
NDM4MCw2ICs0Mzc5LDcgQEAKIAkJCQkwRkIxMDU4QzE2NzU0ODMzMDBGOEFCNkUgLyogUHJvZmls
ZXJPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4RTE2NzU0ODNBMDBGOEFCNkUg
LyogUHJvZmlsZXJPU1JFeGl0U2l0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMzkxMkMxNjc3
MUMzRDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGMjRFNTQyMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3RkI2MTAwMTA0MEMzOEIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTU0MzdEMEVCQTcwRkQwMDcyQjZEMyAvKiBQcm9w
ZXJ0eU1hcEhhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYxNThBQjMxNTVDOEI0MDAw
QjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODk5LDcgKzQ4OTks
NiBAQAogCQkJCTBGNTVDMTk0MTcyNzZFNDYwMENFQUJGRCAvKiBERkdBYnN0cmFjdFZhbHVlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTYwMTVEMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDg0
MTVFNDgxMTgwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MEZDMDk3NkUxNDY4QUI1MTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0Q5QTI5NDE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJh
Y3RTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcxNENBNDE2RUE5MkYwMDBGM0VCRUIg
LyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
N0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTQ5NjIsNiArNDk2MSw3IEBACiAJCQkJMEZFRkM5QUExNjgxQTNCMzAwNTY3RjUzIC8q
IERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVC
RUQxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkZGQzk1QjE0RUY5MEFEMDBDNzI1MzIgLyogREZHUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEYyNEU1NDAxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVy
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzhBOTc3QTE3OTczOEI4MDA5REY3NDQgLyogREZH
UGxhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3NDE2QzFEQjA5MDA4MkM1RTggLyog
REZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZD
OTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwOSw3ICsyMjA5LDYg
QEAgdm9pZCBDb2RlQmxvY2s6OnZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdAogCiB2b2lkIENvZGVC
bG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKQogewotI2lmIEVOQUJMRShMTElOVCkKICAg
ICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX3ZtLT5pbnRlcnByZXRlcjsKICAgICBpZiAo
SklUQ29kZTo6Y291bGRCZUludGVycHJldGVkKGppdFR5cGUoKSkpIHsKICAgICAgICAgY29uc3Qg
VmVjdG9yPHVuc2lnbmVkPiYgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMgPSBtX3VubGlua2Vk
Q29kZS0+cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMoKTsKQEAgLTIyNjMsNiArMjI2Miw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCisjaWYgRU5BQkxFKExMSU5UKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtl
ZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKQEAgLTIyNzIsOCArMjI3Miw4IEBAIHZvaWQg
Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgICAgIGlmICghIW1f
bGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01hcmtlZCht
X2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkpCiAgICAgICAgICAg
ICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKICAg
ICAgICAgfQotICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgfQogCiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFyZSwg
dGhlbiBqZXR0aXNvbi4KQEAgLTI0NTEsMTQgKzI0NTEsMTkgQEAgQ29kZUJsb2NrKiBDb2RlQmxv
Y2s6OmJhc2VsaW5lVmVyc2lvbigpCiAgICAgICAgIHJldHVybiB0aGlzOwogI2lmIEVOQUJMRShK
SVQpCiAgICAgQ29kZUJsb2NrKiByZXN1bHQgPSByZXBsYWNlbWVudCgpOworICAgIGlmICghcmVz
dWx0KSB7CisgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB3ZSdyZSBjcmVhdGluZyB0aGUg
b3JpZ2luYWwgQ29kZUJsb2NrIGZvciBhbiBleGVjdXRhYmxlLgorICAgICAgICAvLyBBc3N1bWUg
dGhhdCB3ZSdyZSB0aGUgYmFzZWxpbmUgQ29kZUJsb2NrLgorICAgICAgICBBU1NFUlQoaml0VHlw
ZSgpID09IEpJVENvZGU6Ok5vbmUpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CiAgICAg
d2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5h
bHRlcm5hdGl2ZSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5qaXRUeXBlKCkpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogI2Vsc2UKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiAwOworICAgIHJldHVybiB0aGlzOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE1NjEzNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMTk0LDcgKzE5NCw3IEBAIHB1YmxpYzoKIAogICAgIENhbGxMaW5rSW5mbyYgZ2V0
Q2FsbExpbmtJbmZvKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiAgICAgewotICAgICAgICBBU1NF
UlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSgpKSk7CisgICAgICAgIEFTU0VSVCgh
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpOwogICAgICAgICByZXR1cm4gKihi
aW5hcnlTZWFyY2g8Q2FsbExpbmtJbmZvLCB1bnNpZ25lZD4obV9jYWxsTGlua0luZm9zLCBtX2Nh
bGxMaW5rSW5mb3Muc2l6ZSgpLCBieXRlY29kZUluZGV4LCBnZXRDYWxsTGlua0luZm9CeXRlY29k
ZUluZGV4KSk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHJldmlzaW9uIDE1NjEz
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNkZWZpbmUgVmFsdWVSZWNvdmVyeV9oCiAK
ICNpbmNsdWRlICJEYXRhRm9ybWF0LmgiCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUg
IkZQUkluZm8uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTMyMywyOSArMzI1LDI5
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG91dC5wcmludGYoIihkb3VibGUpIik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgSW5HUFI6Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIlJXIlZCIsIGdwcigpKTsKKyAgICAgICAgICAgIG91dC5wcmludChncHIoKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCJpbnQzMiglJXIlZCkiLCBncHIoKSk7CisgICAgICAgICAgICBvdXQucHJp
bnQoImludDMyKCIsIGdwcigpLCAiKSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBj
YXNlIFVuYm94ZWRJbnQ1MkluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50ZigiaW50NTIoJSVy
JWQpIiwgZ3ByKCkpOworICAgICAgICAgICAgb3V0LnByaW50KCJpbnQ1MygiLCBncHIoKSwgIiki
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJ
bkdQUjoKLSAgICAgICAgICAgIG91dC5wcmludGYoInN0cmljdEludDUyKCUlciVkKSIsIGdwcigp
KTsKKyAgICAgICAgICAgIG91dC5wcmludCgic3RyaWN0SW50NTIoIiwgZ3ByKCksICIpIik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKLSAg
ICAgICAgICAgIG91dC5wcmludGYoImJvb2woJSVyJWQpIiwgZ3ByKCkpOworICAgICAgICAgICAg
b3V0LnByaW50KCJib29sKCIsIGdwcigpLCAiKSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIFVJbnQzMkluR1BSOgotICAgICAgICAgICAgb3V0LnByaW50ZigidWludDMyKCUl
ciVkKSIsIGdwcigpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgidWludDMyKCIsIGdwcigpLCAi
KSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIEluRlBSOgotICAgICAgICAg
ICAgb3V0LnByaW50ZigiJSVmciVkIiwgZnByKCkpOworICAgICAgICAgICAgb3V0LnByaW50KGZw
cigpKTsKICAgICAgICAgICAgIHJldHVybjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAg
ICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAgIG91dC5wcmludGYoInBhaXIoJSVyJWQsICUlciVk
KSIsIHRhZ0dQUigpLCBwYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgb3V0LnByaW50KCJwYWly
KCIsIHRhZ0dQUigpLCAiLCAiLCBwYXlsb2FkR1BSKCksICIpIik7CiAgICAgICAgICAgICByZXR1
cm47CiAjZW5kaWYKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCShyZXZp
c2lvbiAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVs
cGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVycy5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLW5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotRXhlY3V0YWJsZUJhc2UqIEFzc2VtYmx5
SGVscGVyczo6ZXhlY3V0YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQotewot
ICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIHJldHVybiBtX2Nv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci0gICAgCi0gICAgcmV0dXJuIGNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpOwotfQotCi1WZWN0b3I8Qnl0ZWNvZGVB
bmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29kZU1hcEZvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBBU1NFUlQoY29kZUJsb2NrID09IGNvZGVCbG9jay0+
YmFzZWxpbmVWZXJzaW9uKCkpOwotICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+aml0Q29kZU1hcCgp
KTsKLSAgICAKLSAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hp
bmVPZmZzZXQ+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX2RlY29kZWRDb2RlTWFwcy5hZGQoY29k
ZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PigpKTsKLSAgICAKLSAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5k
ZWNvZGUocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7Ci19Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCi12b2lkIEFz
c2VtYmx5SGVscGVyczo6c2V0U2FtcGxpbmdGbGFnKGludDMyX3QgZmxhZykKLXsKLSAgICBBU1NF
UlQoZmxhZyA+PSAxKTsKLSAgICBBU1NFUlQoZmxhZyA8PSAzMik7Ci0gICAgb3IzMihUcnVzdGVk
SW1tMzIoMXUgPDwgKGZsYWcgLSAxKSksIEFic29sdXRlQWRkcmVzcyhTYW1wbGluZ0ZsYWdzOjph
ZGRyZXNzT2ZGbGFncygpKSk7Ci19Ci0KLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjbGVhclNhbXBs
aW5nRmxhZyhpbnQzMl90IGZsYWcpCi17Ci0gICAgQVNTRVJUKGZsYWcgPj0gMSk7Ci0gICAgQVNT
RVJUKGZsYWcgPD0gMzIpOwotICAgIGFuZDMyKFRydXN0ZWRJbW0zMih+KDF1IDw8IChmbGFnIC0g
MSkpKSwgQWJzb2x1dGVBZGRyZXNzKFNhbXBsaW5nRmxhZ3M6OmFkZHJlc3NPZkZsYWdzKCkpKTsK
LX0KLSNlbmRpZgotCi0jaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQotI2lmIFVTRShKU1ZBTFVF
NjQpCi12b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNJbnQzMihHUFJSZWcgZ3ByKQot
ewotI2lmIENQVShYODZfNjQpCi0gICAgSnVtcCBjaGVja0ludDMyID0gYnJhbmNoNjQoQmVsb3dP
ckVxdWFsLCBncHIsIFRydXN0ZWRJbW02NChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4RkZGRkZG
RkZ1KSkpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0ludDMyLmxpbmsodGhpcyk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShncHIpOwotI2VuZGlmCi19Ci0KLXZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnIGdwcikKLXsKLSAgICBKdW1wIGNoZWNr
SlNJbnQzMiA9IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0pTSW50MzIubGluayh0
aGlzKTsKLX0KLQotdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNOdW1iZXIoR1BS
UmVnIGdwcikKLXsKLSAgICBKdW1wIGNoZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsK
LSAgICBicmVha3BvaW50KCk7Ci0gICAgY2hlY2tKU051bWJlci5saW5rKHRoaXMpOwotfQotCi12
b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcgZ3ByKQotewot
ICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgSnVtcCBjaGVja0pTTnVtYmVyID0gYnJh
bmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3Rlcik7Ci0gICAgY2hlY2tKU0ludDMyLmxpbmsodGhpcyk7Ci0gICAgYnJlYWtw
b2ludCgpOwotICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsKLX0KLQotdm9pZCBBc3NlbWJs
eUhlbHBlcnM6OmppdEFzc2VydElzQ2VsbChHUFJSZWcgZ3ByKQotewotICAgIEp1bXAgY2hlY2tD
ZWxsID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7Ci0gICAgYnJlYWtwb2ludCgpOwotICAgIGNoZWNrQ2VsbC5saW5rKHRo
aXMpOwotfQotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpq
aXRBc3NlcnRJc0ludDMyKEdQUlJlZyBncHIpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGdwcik7Ci19
Ci0KLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnIGdwcikK
LXsKLSAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDMyKEVxdWFsLCBncHIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0pT
SW50MzIubGluayh0aGlzKTsKLX0KLQotdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElz
SlNOdW1iZXIoR1BSUmVnIGdwcikKLXsKLSAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDMy
KEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIEp1bXAg
Y2hlY2tKU0RvdWJsZSA9IGJyYW5jaDMyKEJlbG93LCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpMb3dlc3RUYWcpKTsKLSAgICBicmVha3BvaW50KCk7Ci0gICAgY2hlY2tKU0ludDMyLmxpbmso
dGhpcyk7Ci0gICAgY2hlY2tKU0RvdWJsZS5saW5rKHRoaXMpOwotfQotCi12b2lkIEFzc2VtYmx5
SGVscGVyczo6aml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcgZ3ByKQotewotICAgIEp1bXAgY2hl
Y2tKU0RvdWJsZSA9IGJyYW5jaDMyKEJlbG93LCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpM
b3dlc3RUYWcpKTsKLSAgICBicmVha3BvaW50KCk7Ci0gICAgY2hlY2tKU0RvdWJsZS5saW5rKHRo
aXMpOwotfQotCi12b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNDZWxsKEdQUlJlZyBn
cHIpCi17Ci0gICAgSnVtcCBjaGVja0NlbGwgPSBicmFuY2gzMihFcXVhbCwgZ3ByLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0Nl
bGwubGluayh0aGlzKTsKLX0KLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQotCi12b2lkIEFz
c2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKQotewotICAgIEp1bXAg
Y2hlY2tDRlIgPSBicmFuY2hUZXN0UHRyKFplcm8sIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBUcnVzdGVkSW1tMzIoNykpOwotICAgIGJyZWFrcG9pbnQoKTsKLSAgICBjaGVja0NGUi5saW5r
KHRoaXMpOwotfQotI2VuZGlmIC8vIERGR19FTkFCTEUoSklUX0FTU0VSVCkKLQotfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAkocmV2aXNp
b24gMTU2MTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR0Fzc2VtYmx5SGVs
cGVyc19oCi0jZGVmaW5lIERGR0Fzc2VtYmx5SGVscGVyc19oCi0KLSNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgi
Ci0jaW5jbHVkZSAiREZHRlBSSW5mby5oIgotI2luY2x1ZGUgIkRGR0dQUkluZm8uaCIKLSNpbmNs
dWRlICJERkdKSVRDb2RlLmgiCi0jaW5jbHVkZSAiREZHTm9kZS5oIgotI2luY2x1ZGUgIlZNLmgi
Ci0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewotCi10eXBlZGVmIHZvaWQgKCpWX0RGR0RlYnVnT3BlcmF0aW9uX0VQUCkoRXhlY1N0
YXRlKiwgdm9pZCosIHZvaWQqKTsKLQotY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1h
Y3JvQXNzZW1ibGVyIHsKLXB1YmxpYzoKLSAgICBBc3NlbWJseUhlbHBlcnMoVk0qIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKLSAgICAgICAgOiBtX3ZtKHZtKQotICAgICAgICAsIG1fY29kZUJs
b2NrKGNvZGVCbG9jaykKLSAgICAgICAgLCBtX2Jhc2VsaW5lQ29kZUJsb2NrKGNvZGVCbG9jayA/
IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkgOiAwKQotICAgIHsKLSAgICAgICAgaWYgKG1f
Y29kZUJsb2NrKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9iYXNlbGluZUNvZGVCbG9jayk7Ci0g
ICAgICAgICAgICBBU1NFUlQoIW1fYmFzZWxpbmVDb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwot
ICAgICAgICAgICAgQVNTRVJUKG1fYmFzZWxpbmVDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRD
b2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2soKSB7IHJldHVybiBtX2NvZGVCbG9jazsgfQotICAgIFZNKiB2bSgpIHsgcmV0
dXJuIG1fdm07IH0KLSAgICBBc3NlbWJsZXJUeXBlX1QmIGFzc2VtYmxlcigpIHsgcmV0dXJuIG1f
YXNzZW1ibGVyOyB9Ci0gICAgCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKLSAgICB2b2lk
IHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJSZWcgcmVnKQotICAgIHsKLSAgICAg
ICAgcG9wKHJlZyk7Ci0gICAgfQotCi0gICAgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9y
ZVJldHVybihHUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgcHVzaChyZWcpOwotICAgIH0KLQot
ICAgIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNz
KQotICAgIHsKLSAgICAgICAgcHVzaChhZGRyZXNzKTsKLSAgICB9Ci0jZW5kaWYgLy8gQ1BVKFg4
Nl82NCkgfHwgQ1BVKFg4NikKLQotI2lmIENQVShBUk0pCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKLSAgICB7Ci0g
ICAgICAgIG1vdmUobGlua1JlZ2lzdGVyLCByZWcpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykK
LSAgICB7Ci0gICAgICAgIG1vdmUocmVnLCBsaW5rUmVnaXN0ZXIpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNz
IGFkZHJlc3MpCi0gICAgewotICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIGxpbmtSZWdpc3Rlcik7
Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBDUFUoTUlQUykKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAg
ICAgICAgbW92ZShyZXR1cm5BZGRyZXNzUmVnaXN0ZXIsIHJlZyk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVy
SUQgcmVnKQotICAgIHsKLSAgICAgICAgbW92ZShyZWcsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVm
b3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWRQdHIoYWRkcmVz
cywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIENQVShTSDQp
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChS
ZWdpc3RlcklEIHJlZykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c3ByKHJlZyk7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3Jl
UmV0dXJuKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRzcHIo
cmVnKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZFB0ckxp
bmtSZWcoYWRkcmVzcyk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lkIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBHUFJS
ZWcgdG8pCi0gICAgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKLSAgICB9Ci0gICAgdm9p
ZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoR1BSUmVnIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFt
ZUhlYWRlckVudHJ5IGVudHJ5KQotICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBz
dG9yZTY0KGZyb20sIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICog
c2l6ZW9mKFJlZ2lzdGVyKSkpOwotI2Vsc2UKLSAgICAgICAgc3RvcmUzMihmcm9tLCBBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsK
LSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVh
ZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKLSAg
ICB7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIodmFsdWUpLCBBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsKLSAgICB9
Ci0KLSAgICBKdW1wIGJyYW5jaElmTm90Q2VsbChHUFJSZWcgcmVnKQotICAgIHsKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCByZWcsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0jZWxzZQotICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZWcsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIEFk
ZHJlc3MgYWRkcmVzc0ZvcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZpcnR1
YWxSZWdpc3RlciAqIHNpemVvZihSZWdpc3RlcikpOwotICAgIH0KLSAgICBzdGF0aWMgQWRkcmVz
cyBhZGRyZXNzRm9yKGludCBvcGVyYW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZHJlc3NG
b3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIEFkZHJlc3MgdGFnRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCi0g
ICAgewotICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
dmlydHVhbFJlZ2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgfQotICAgIHN0YXRpYyBBZGRy
ZXNzIHRhZ0ZvcihpbnQgb3BlcmFuZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWdGb3Ioc3Rh
dGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IEFkZHJlc3MgcGF5bG9hZEZvcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZp
cnR1YWxSZWdpc3RlciAqIHNpemVvZihSZWdpc3RlcikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKLSAgICB9Ci0gICAgc3RhdGljIEFk
ZHJlc3MgcGF5bG9hZEZvcihpbnQgb3BlcmFuZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwYXls
b2FkRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpOwotICAgIH0KLQot
ICAgIEp1bXAgYnJhbmNoSWZOb3RPYmplY3QoR1BSUmVnIHN0cnVjdHVyZVJlZykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywgU3RydWN0
dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIEdQUlJlZyBzZWxlY3RTY3JhdGNoR1BSKEdQUlJlZyBwcmVzZXJ2
ZTEgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcgcHJlc2VydmUyID0gSW52YWxpZEdQUlJlZywgR1BS
UmVnIHByZXNlcnZlMyA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTQgPSBJbnZhbGlk
R1BSUmVnKQotICAgIHsKLSAgICAgICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJbmZvOjpyZWdUMCAm
JiBwcmVzZXJ2ZTIgIT0gR1BSSW5mbzo6cmVnVDAgJiYgcHJlc2VydmUzICE9IEdQUkluZm86OnJl
Z1QwICYmIHByZXNlcnZlNCAhPSBHUFJJbmZvOjpyZWdUMCkKLSAgICAgICAgICAgIHJldHVybiBH
UFJJbmZvOjpyZWdUMDsKLQotICAgICAgICBpZiAocHJlc2VydmUxICE9IEdQUkluZm86OnJlZ1Qx
ICYmIHByZXNlcnZlMiAhPSBHUFJJbmZvOjpyZWdUMSAmJiBwcmVzZXJ2ZTMgIT0gR1BSSW5mbzo6
cmVnVDEgJiYgcHJlc2VydmU0ICE9IEdQUkluZm86OnJlZ1QxKQotICAgICAgICAgICAgcmV0dXJu
IEdQUkluZm86OnJlZ1QxOwotCi0gICAgICAgIGlmIChwcmVzZXJ2ZTEgIT0gR1BSSW5mbzo6cmVn
VDIgJiYgcHJlc2VydmUyICE9IEdQUkluZm86OnJlZ1QyICYmIHByZXNlcnZlMyAhPSBHUFJJbmZv
OjpyZWdUMiAmJiBwcmVzZXJ2ZTQgIT0gR1BSSW5mbzo6cmVnVDIpCi0gICAgICAgICAgICByZXR1
cm4gR1BSSW5mbzo6cmVnVDI7Ci0KLSAgICAgICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJbmZvOjpy
ZWdUMyAmJiBwcmVzZXJ2ZTIgIT0gR1BSSW5mbzo6cmVnVDMgJiYgcHJlc2VydmUzICE9IEdQUklu
Zm86OnJlZ1QzICYmIHByZXNlcnZlNCAhPSBHUFJJbmZvOjpyZWdUMykKLSAgICAgICAgICAgIHJl
dHVybiBHUFJJbmZvOjpyZWdUMzsKLQotICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDQ7Ci0g
ICAgfQotCi0gICAgLy8gQWRkIGEgZGVidWcgY2FsbC4gVGhpcyBjYWxsIGhhcyBubyBlZmZlY3Qg
b24gSklUIGNvZGUgZXhlY3V0aW9uIHN0YXRlLgotICAgIHZvaWQgZGVidWdDYWxsKFZfREZHRGVi
dWdPcGVyYXRpb25fRVBQIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKLSAgICB7Ci0gICAgICAg
IHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgICAg
IFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSBtX3ZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6
ZShzY3JhdGNoU2l6ZSk7Ci0gICAgICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNf
Y2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0KLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
OyArK2kpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgc3RvcmU2NChHUFJJbmZv
Ojp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsKLSNlbHNlCi0gICAgICAgICAgICBzdG9yZTMy
KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2VuZGlmCi0gICAgICAgIH0K
LQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnM7ICsraSkgewotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciArIEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
ICAgIHN0b3JlRG91YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIEdQUkluZm86OnJlZ1QwKTsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0
aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBHUFJJ
bmZvOjpyZWdUMCk7Ci0KLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykg
fHwgQ1BVKFNINCkKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoID0g
c2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSNlbGlmIENQVShYODYpCi0gICAgICAgIHBv
a2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDApOwotICAgICAgICBwb2tlKFRydXN0ZWRJ
bW1QdHIoYXJndW1lbnQpLCAxKTsKLSAgICAgICAgcG9rZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciks
IDIpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IEdQUkluZm86OnJlZ1QwOwotI2Vsc2UKLSNl
cnJvciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgotI2VuZGlmCi0g
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlv
bikpLCBzY3JhdGNoKTsKLSAgICAgICAgY2FsbChzY3JhdGNoKTsKLQotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEdQUkluZm86OnJlZ1Qw
KTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgewotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciAr
IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkp
OwotICAgICAgICB9Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAg
IGxvYWQ2NChidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbHNlCi0gICAg
ICAgICAgICBsb2FkMzIoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7Ci0jZW5k
aWYKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRoZXNlIG1ldGhvZHMgSklUIGdlbmVyYXRl
IGR5bmFtaWMsIGRlYnVnLW9ubHkgY2hlY2tzIC0gYWtpbiB0byBBU1NFUlRzLgotI2lmIERGR19F
TkFCTEUoSklUX0FTU0VSVCkKLSAgICB2b2lkIGppdEFzc2VydElzSW50MzIoR1BSUmVnKTsKLSAg
ICB2b2lkIGppdEFzc2VydElzSlNJbnQzMihHUFJSZWcpOwotICAgIHZvaWQgaml0QXNzZXJ0SXNK
U051bWJlcihHUFJSZWcpOwotICAgIHZvaWQgaml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcpOwot
ICAgIHZvaWQgaml0QXNzZXJ0SXNDZWxsKEdQUlJlZyk7Ci0gICAgdm9pZCBqaXRBc3NlcnRIYXNW
YWxpZENhbGxGcmFtZSgpOwotI2Vsc2UKLSAgICB2b2lkIGppdEFzc2VydElzSW50MzIoR1BSUmVn
KSB7IH0KLSAgICB2b2lkIGppdEFzc2VydElzSlNJbnQzMihHUFJSZWcpIHsgfQotICAgIHZvaWQg
aml0QXNzZXJ0SXNKU051bWJlcihHUFJSZWcpIHsgfQotICAgIHZvaWQgaml0QXNzZXJ0SXNKU0Rv
dWJsZShHUFJSZWcpIHsgfQotICAgIHZvaWQgaml0QXNzZXJ0SXNDZWxsKEdQUlJlZykgeyB9Ci0g
ICAgdm9pZCBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpIHsgfQotI2VuZGlmCi0KLSAgICAv
LyBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiBkb3VibGVzLCBhbmQgZG91YmxlcyBib3hl
ZCBhbmQgSlNWYWx1ZXMuCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBHUFJSZWcgYm94RG91Ymxl
KEZQUlJlZyBmcHIsIEdQUlJlZyBncHIpCi0gICAgewotICAgICAgICBtb3ZlRG91YmxlVG82NChm
cHIsIGdwcik7Ci0gICAgICAgIHN1YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwg
Z3ByKTsKLSAgICAgICAgaml0QXNzZXJ0SXNKU0RvdWJsZShncHIpOwotICAgICAgICByZXR1cm4g
Z3ByOwotICAgIH0KLSAgICBGUFJSZWcgdW5ib3hEb3VibGUoR1BSUmVnIGdwciwgRlBSUmVnIGZw
cikKLSAgICB7Ci0gICAgICAgIGppdEFzc2VydElzSlNEb3VibGUoZ3ByKTsKLSAgICAgICAgYWRk
NjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOwotICAgICAgICBtb3ZlNjRU
b0RvdWJsZShncHIsIGZwcik7Ci0gICAgICAgIHJldHVybiBmcHI7Ci0gICAgfQotICAgIAotICAg
IHZvaWQgYm94SW50NTIoR1BSUmVnIHNvdXJjZSwgR1BSUmVnIHRhcmdldCwgR1BSUmVnIHNjcmF0
Y2gsIEZQUlJlZyBmcFNjcmF0Y2gpCi0gICAgewotICAgICAgICAvLyBJcyBpdCBhbiBpbnQzMj8K
LSAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoc291cmNlLCBzY3JhdGNoKTsKLSAgICAgICAgSnVt
cCBpc0ludDMyID0gYnJhbmNoNjQoRXF1YWwsIHNvdXJjZSwgc2NyYXRjaCk7Ci0gICAgICAgIAot
ICAgICAgICAvLyBOb3BlLCBpdCdzIG5vdCwgYnV0IHJlZ1QwIGNvbnRhaW5zIHRoZSBpbnQ2NCB2
YWx1ZS4KLSAgICAgICAgY29udmVydEludDY0VG9Eb3VibGUoc291cmNlLCBmcFNjcmF0Y2gpOwot
ICAgICAgICBib3hEb3VibGUoZnBTY3JhdGNoLCB0YXJnZXQpOwotICAgICAgICBKdW1wIGRvbmUg
PSBqdW1wKCk7Ci0gICAgICAgIAotICAgICAgICBpc0ludDMyLmxpbmsodGhpcyk7Ci0gICAgICAg
IHplcm9FeHRlbmQzMlRvUHRyKHNvdXJjZSwgdGFyZ2V0KTsKLSAgICAgICAgb3I2NChHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRhcmdldCk7Ci0gICAgICAgIAotICAgICAgICBkb25l
LmxpbmsodGhpcyk7Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAg
IHZvaWQgYm94RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2Fk
R1BSKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZVRvSW50cyhmcHIsIHBheWxvYWRHUFIsIHRh
Z0dQUik7Ci0gICAgfQotICAgIHZvaWQgdW5ib3hEb3VibGUoR1BSUmVnIHRhZ0dQUiwgR1BSUmVn
IHBheWxvYWRHUFIsIEZQUlJlZyBmcHIsIEZQUlJlZyBzY3JhdGNoRlBSKQotICAgIHsKLSAgICAg
ICAgbW92ZUludHNUb0RvdWJsZShwYXlsb2FkR1BSLCB0YWdHUFIsIGZwciwgc2NyYXRjaEZQUik7
Ci0gICAgfQotI2VuZGlmCi0gICAgCi0gICAgZW51bSBFeGNlcHRpb25DaGVja0tpbmQgeyBOb3Jt
YWxFeGNlcHRpb25DaGVjaywgSW52ZXJ0ZWRFeGNlcHRpb25DaGVjayB9OwotICAgIEp1bXAgZW1p
dEV4Y2VwdGlvbkNoZWNrKEV4Y2VwdGlvbkNoZWNrS2luZCBraW5kID0gTm9ybWFsRXhjZXB0aW9u
Q2hlY2spCi0gICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgcmV0dXJuIGJyYW5jaFRlc3Q2
NChraW5kID09IE5vcm1hbEV4Y2VwdGlvbkNoZWNrID8gTm9uWmVybyA6IFplcm8sIEFic29sdXRl
QWRkcmVzcyh2bSgpLT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkpOwotI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLSAgICByZXR1cm4gYnJhbmNoMzIoa2luZCA9PSBOb3JtYWxFeGNlcHRpb25DaGVjayA/
IE5vdEVxdWFsIDogRXF1YWwsIEFic29sdXRlQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNoYXIq
Pih2bSgpLT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMudGFnKSksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7Ci0j
ZW5kaWYKLSAgICB9Ci0KLSNpZiBFTkFCTEUoU0FNUExJTkdfQ09VTlRFUlMpCi0gICAgc3RhdGlj
IHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVyJiBqaXQsIEFic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyJiBjb3VudGVyLCBpbnQzMl90IGluY3JlbWVudCA9IDEpCi0gICAgewotICAgICAgICBqaXQu
YWRkNjQoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFk
ZHJlc3NPZkNvdW50ZXIoKSkpOwotICAgIH0KLSAgICB2b2lkIGVtaXRDb3VudChBYnN0cmFjdFNh
bXBsaW5nQ291bnRlciYgY291bnRlciwgaW50MzJfdCBpbmNyZW1lbnQgPSAxKQotICAgIHsKLSAg
ICAgICAgYWRkNjQoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3Vu
dGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwotICAgIH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFNB
TVBMSU5HX0ZMQUdTKQotICAgIHZvaWQgc2V0U2FtcGxpbmdGbGFnKGludDMyX3QpOwotICAgIHZv
aWQgY2xlYXJTYW1wbGluZ0ZsYWcoaW50MzJfdCBmbGFnKTsKLSNlbmRpZgotCi0gICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdEZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewot
ICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsK
LSAgICB9Ci0gICAgCi0gICAgYm9vbCBzdHJpY3RNb2RlRm9yKENvZGVPcmlnaW4gY29kZU9yaWdp
bikKLSAgICB7Ci0gICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAg
ICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpOwotICAgICAgICByZXR1
cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5leGVjdXRhYmxlLmdldCgpKS0+aXNTdHJpY3RNb2RlKCk7Ci0gICAgfQotICAgIAotICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4p
OwotICAgIAotICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9j
a0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJs
b2NrKCkpOwotICAgIH0KLSAgICAKLSAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9y
KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQotICAgIHsKLSAgICAgICAgaWYgKCFp
bmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2soKTsK
LSAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGlu
ZUNhbGxGcmFtZSk7Ci0gICAgfQotICAgIAotICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmFzZWxpbmVDb2RlQmxvY2s7Ci0gICAgfQot
ICAgIAotICAgIGludCBhcmd1bWVudHNSZWdpc3RlckZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAgICAg
ICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5hcmd1bWVudHNSZWdpc3RlcigpOwotICAgICAgICAK
LSAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKAotICAg
ICAgICAgICAgaW5saW5lQ2FsbEZyYW1lKS0+YXJndW1lbnRzUmVnaXN0ZXIoKSArIGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQ7Ci0gICAgfQotICAgIAotICAgIGludCBhcmd1bWVudHNSZWdp
c3RlckZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFyZ3VtZW50c1JlZ2lzdGVyRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKLSAg
ICB9Ci0gICAgCi0gICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlRm9yKGNvbnN0IENv
ZGVPcmlnaW4mIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2Rl
QmxvY2tGb3IoY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCk7Ci0gICAgfQotCi0gICAgaW50IG9m
ZnNldE9mTG9jYWxzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCi0gICAgewotICAgICAg
ICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KiBzaXplb2YoUmVnaXN0ZXIpOwotICAgIH0KLQotICAgIGludCBvZmZzZXRPZkFyZ3VtZW50c0lu
Y2x1ZGluZ1RoaXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAg
IGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkgKiBzaXplb2YoUmVnaXN0ZXIp
OwotICAgICAgICByZXR1cm4gKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApKSAqIHNpemVvZihS
ZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4m
IGRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayopOwotICAgIAotcHJvdGVjdGVkOgotICAgIFZN
KiBtX3ZtOwotICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgQ29kZUJsb2NrKiBtX2Jh
c2VsaW5lQ29kZUJsb2NrOwotCi0gICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNv
ZGVBbmRNYWNoaW5lT2Zmc2V0PiA+IG1fZGVjb2RlZENvZGVNYXBzOwotfTsKLQotfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLSNlbmRpZiAv
LyBERkdBc3NlbWJseUhlbHBlcnNfaAotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0JpbmFyeVN3aXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmluYXJ5U3dpdGNoLmgJKHJldmlzaW9uIDE1NjEzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmluYXJ5U3dpdGNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZHR1BSSW5mby5oIgor
I2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTU2MTM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgog
I2luY2x1ZGUgIkRGR0FycmF5TW9kZS5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgor
I2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCShyZXZpc2lv
biAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR0NDYWxsSGVscGVyc19oCi0jZGVm
aW5lIERGR0NDYWxsSGVscGVyc19oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2lm
IEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQXNzZW1ibHlIZWxwZXJzLmgiCi0jaW5j
bHVkZSAiREZHR1BSSW5mby5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0K
LWNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewotcHVibGljOgot
ICAgIENDYWxsSGVscGVycyhWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrID0gMCkKLSAgICAg
ICAgOiBBc3NlbWJseUhlbHBlcnModm0sIGNvZGVCbG9jaykKLSAgICB7Ci0gICAgfQotCi0gICAg
Ly8gVGhlc2UgbWV0aG9kcyB1c2VkIHRvIHNvcnQgYXJndW1lbnRzIGludG8gdGhlIGNvcnJlY3Qg
cmVnaXN0ZXJzLgotICAgIC8vIE9uIFg4NiB3ZSB1c2UgY2RlY2wgY2FsbGluZyBjb252ZW50aW9u
cywgd2hpY2ggcGFzcyBhbGwgYXJndW1lbnRzIG9uIHRoZQotICAgIC8vIHN0YWNrLiBPbiBvdGhl
ciBhcmNoaXRlY3R1cmVzIHdlIG1heSBuZWVkIHRvIHNvcnQgdmFsdWVzIGludG8gdGhlCi0gICAg
Ly8gY29ycmVjdCByZWdpc3RlcnMuCi0jaWYgIU5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMK
LSAgICB1bnNpZ25lZCBtX2NhbGxBcmd1bWVudE9mZnNldDsKLSAgICB2b2lkIHJlc2V0Q2FsbEFy
Z3VtZW50cygpIHsgbV9jYWxsQXJndW1lbnRPZmZzZXQgPSAwOyB9Ci0KLSAgICAvLyBUaGVzZSBt
ZXRob2RzIGFyZSB1c2luZyBpbnRlcm5hbGx5IHRvIGltcGxlbWVudCB0aGUgY2FsbE9wZXJhdGlv
biBtZXRob2RzLgotICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEdQUlJlZyB2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIHBva2UodmFsdWUsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAgIH0KLSAg
ICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tMzIgaW1tKQotICAgIHsKLSAgICAgICAg
cG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAgIH0KLSAgICB2b2lkIGFkZENh
bGxBcmd1bWVudChUcnVzdGVkSW1tUHRyIHBvaW50ZXIpCi0gICAgewotICAgICAgICBwb2tlKHBv
aW50ZXIsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOwotICAgIH0KLSAgICB2b2lkIGFkZENhbGxB
cmd1bWVudChGUFJSZWcgdmFsdWUpCi0gICAgewotICAgICAgICBzdG9yZURvdWJsZSh2YWx1ZSwg
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgbV9jYWxsQXJndW1lbnRPZmZzZXQgKiBzaXpl
b2Yodm9pZCopKSk7Ci0gICAgICAgIG1fY2FsbEFyZ3VtZW50T2Zmc2V0ICs9IHNpemVvZihkb3Vi
bGUpIC8gc2l6ZW9mKHZvaWQqKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCi0g
ICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxKQotICAgIHsKLSAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcx
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzIpOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHMoVHJ1c3RlZEltbVB0ciBhcmcxKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRz
KCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQotICAgIHsKLSAgICAgICAgcmVz
ZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyIGFyZzEpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzEpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEpCi0gICAgewotICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKLSAgICB7Ci0g
ICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVk
SW1tMzIgYXJnMikKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIpCi0g
ICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIg
YXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKLSAg
ICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICB9Ci0KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIg
YXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQotICAg
IHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVu
dChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIg
YXJnMykKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcy
LCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsK
LSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICB9Ci0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAg
cmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0
ciBhcmczKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAgICAgIGFk
ZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBh
cmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKLSAg
ICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQs
IEdQUlJlZyBhcmc1KQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Ci0gICAg
ICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwot
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmc0KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICByZXNl
dENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCi0gICAgewotICAgICAgICByZXNldENh
bGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJ
bW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKLSAgICB7Ci0g
ICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7
Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKLSAgICB7
Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
MSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKLSAg
ICB7Ci0gICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwotICAgICAgICBhZGRDYWxsQXJndW1l
bnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnMSk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzMpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUp
Ci0gICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmczKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwotICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCi0g
ICAgewotICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzEpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7Ci0gICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKLSAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOwotICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7Ci0gICAgfQotI2VuZGlm
IC8vICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCi0gICAgLy8gVGhlc2UgbWV0aG9kcyBh
cmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92aWRlcyBmb3IK
LSAgICAvLyBhdCBsZWFzdCA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBYODZfNjQsIEFSTXY3
LgotI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotICAgIHRlbXBsYXRlPEdQ
UlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCPgotICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhHUFJS
ZWcgc3JjQSwgR1BSUmVnIHNyY0IpCi0gICAgewotICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNy
Y0EgIT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMg
bWF5IGJlIGluOgotICAgICAgICAvLyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywg
dGhlIHJpZ2h0IHdheSBhcm91bmQuCi0gICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGlu
IGFyZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4KLSAgICAgICAgLy8gKDMpIG5laXRoZXIg
YXJlIGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgotICAgICAgICAvLyAoNCkgc3JjQSBpbiBp
biBpdHMgY29ycmVjdCByZWcuCi0gICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJl
Y3QgcmVnLgotICAgICAgICAvLyAoNikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0gICAg
ICAgIC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAvLwotICAg
ICAgICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMs
IHRvIHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBpbgotICAgICAgICAvLyBwbGFjZSAodGhl
IE1hY3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNo
IHdpbGwgYmUgc2FmZSBpbgotICAgICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4g
Y2FzZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCi0gICAg
ICAgIC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8g
YXZvaWQgdHJhbXBsaW5nLikKLQotICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgewotICAgICAg
ICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KLSAgICAg
ICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOwotICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0Qik7
Ci0gICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0QikgewotICAgICAgICAgICAgLy8gSGFu
ZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBmaXJzdC4KLSAg
ICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOwotICAgICAgICAgICAgbW92ZShzcmNBLCBkZXN0
QSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3dhcChkZXN0QSwgZGVzdEIpOwotICAg
IH0KLSNpZiBDUFUoWDg2XzY0KQotICAgIHRlbXBsYXRlPEZQUlJlZyBkZXN0QSwgRlBSUmVnIGRl
c3RCPgotICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhGUFJSZWcgc3JjQSwgRlBSUmVnIHNyY0Ip
Ci0gICAgewotICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNyY0EgIT0gc3JjQiwgdGhlcmUgYXJl
IDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMgbWF5IGJlIGluOgotICAgICAgICAv
LyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywgdGhlIHJpZ2h0IHdheSBhcm91bmQu
Ci0gICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUgd3Jvbmcg
d2F5IGFyb3VuZC4KLSAgICAgICAgLy8gKDMpIG5laXRoZXIgYXJlIGN1cnJlbnRseSBpbiBhcmcg
cmVnaXN0ZXJzLgotICAgICAgICAvLyAoNCkgc3JjQSBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0g
ICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAvLyAo
Nikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCi0gICAgICAgIC8vICg3KSBzcmNCIGluIGlu
IHRoZSBpbmNvcnJlY3QgcmVnLgotICAgICAgICAvLwotICAgICAgICAvLyBUaGUgdHJpdmlhbCBh
cHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMsIHRvIHB1dCBzcmNBIGluIHBsYWNl
IHRoZW4gc3JjQiBpbgotICAgICAgICAvLyBwbGFjZSAodGhlIE1hY3JvQXNzZW1ibGVyIHdpbGwg
b21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNoIHdpbGwgYmUgc2FmZSBpbgotICAg
ICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4gY2FzZXMgd2hlcmUgc3JjQT09c3Jj
Qi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCi0gICAgICAgIC8vIChyZXF1aXJlcyBhIHN3
YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8gYXZvaWQgdHJhbXBsaW5nLikKLQot
ICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgewotICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBl
YXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KLSAgICAgICAgICAgIG1vdmVEb3VibGUoc3Jj
QSwgZGVzdEEpOwotICAgICAgICAgICAgbW92ZURvdWJsZShzcmNCLCBkZXN0Qik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChzcmNBICE9IGRl
c3RCKSB7Ci0gICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5vbi1zd2FwIGNhc2UgLSBqdXN0IHB1
dCBzcmNCIGluIHBsYWNlIGZpcnN0LgotICAgICAgICAgICAgbW92ZURvdWJsZShzcmNCLCBkZXN0
Qik7Ci0gICAgICAgICAgICBtb3ZlRG91YmxlKHNyY0EsIGRlc3RBKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChzcmNCID09IGRlc3RBICYmIHNyY0Eg
PT0gZGVzdEIpOwotICAgICAgICAvLyBOZWVkIHRvIHN3YXA7IHBpY2sgYSB0ZW1wb3JhcnkgcmVn
aXN0ZXIuCi0gICAgICAgIEZQUlJlZyB0ZW1wOwotICAgICAgICBpZiAoZGVzdEEgIT0gRlBSSW5m
bzo6YXJndW1lbnRGUFIzICYmIGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMykKLSAgICAg
ICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjM7Ci0gICAgICAgIGVsc2UgaWYgKGRl
c3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMiAmJiBkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVu
dEZQUjIpCi0gICAgICAgICAgICB0ZW1wID0gRlBSSW5mbzo6YXJndW1lbnRGUFIyOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChkZXN0QSAhPSBGUFJJbmZvOjphcmd1bWVudEZQ
UjEgJiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICAgICAgICAgIHRlbXAg
PSBGUFJJbmZvOjphcmd1bWVudEZQUjE7Ci0gICAgICAgIH0KLSAgICAgICAgbW92ZURvdWJsZShk
ZXN0QSwgdGVtcCk7Ci0gICAgICAgIG1vdmVEb3VibGUoZGVzdEIsIGRlc3RBKTsKLSAgICAgICAg
bW92ZURvdWJsZSh0ZW1wLCBkZXN0Qik7Ci0gICAgfQotI2VuZGlmCi0gICAgdm9pZCBzZXR1cFN0
dWJBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgc2V0
dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mj4oYXJnMSwgYXJnMik7Ci0gICAgfQotICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRzKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCi0gICAgewotICAgICAgICAvLyBJZiBu
ZWl0aGVyIG9mIGFyZzIvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmcx
IGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdz
IHRvIGZpeCBhcmcyL2FyZzMuCi0gICAgICAgIGlmIChhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50
R1BSMSAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSkgewotICAgICAgICAgICAgbW92
ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICAgICAgc2V0dXBUd29TdHVi
QXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMiwg
YXJnMyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBu
ZWl0aGVyIG9mIGFyZzEvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmcy
IGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdz
IHRvIGZpeCBhcmcxL2FyZzMuCi0gICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFyZ3VtZW50
R1BSMiAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMikgewotICAgICAgICAgICAgbW92
ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICAgICAgc2V0dXBUd29TdHVi
QXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwg
YXJnMyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBu
ZWl0aGVyIG9mIGFyZzEvYXJnMiBhcmUgaW4gb3VyIHdheSwgdGhlbiB3ZSBjYW4gbW92ZSBhcmcz
IGludG8gcGxhY2UuCi0gICAgICAgIC8vIFRoZW4gd2UgY2FuIHVzZSBzZXR1cFR3b1N0dWJBcmdz
IHRvIGZpeCBhcmcxL2FyZzIuCi0gICAgICAgIGlmIChhcmcxICE9IEdQUkluZm86OmFyZ3VtZW50
R1BSMyAmJiBhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMykgewotICAgICAgICAgICAgbW92
ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICAgICAgc2V0dXBUd29TdHVi
QXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMj4oYXJnMSwg
YXJnMik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB3
ZSBnZXQgaGVyZSwgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gbW92ZSBhbnkgb2YgYXJnMS9hcmcy
L2FyZzMuCi0gICAgICAgIC8vIFNpbmNlIGFsbCB0aHJlZSBhcmUgYmxvY2tlZCwgdGhlbiBhbGwg
dGhyZWUgbXVzdCBhbHJlYWR5IGJlIGluIHRoZSBhcmd1bWVudCByZWdpc3Rlci4KLSAgICAgICAg
Ly8gQnV0IGFyZSB0aGV5IGluIHRoZSByaWdodCBvbmVzPwotCi0gICAgICAgIC8vIEZpcnN0LCBl
bnN1cmUgYXJnMSBpcyBpbiBwbGFjZS4KLSAgICAgICAgaWYgKGFyZzEgIT0gR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSB7Ci0gICAgICAgICAgICBzd2FwKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSk7Ci0KLSAgICAgICAgICAgIC8vIElmIGFyZzEgd2Fzbid0IGluIGFyZ3VtZW50R1BSMSwgb25l
IG9mIGFyZzIvYXJnMyBtdXN0IGJlLgotICAgICAgICAgICAgQVNTRVJUKGFyZzIgPT0gR1BSSW5m
bzo6YXJndW1lbnRHUFIxIHx8IGFyZzMgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAg
ICAgICAgIC8vIElmIGFyZzIgd2FzIGluIGFyZ3VtZW50R1BSMSBpdCBubyBsb25nZXIgaXMgKGR1
ZSB0byB0aGUgc3dhcCkuCi0gICAgICAgICAgICAvLyBPdGhlcndpc2UgYXJnMyBtdXN0IGhhdmUg
YmVlbi4gTWFyayBoaW0gYXMgbW92ZWQuCi0gICAgICAgICAgICBpZiAoYXJnMiA9PSBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpCi0gICAgICAgICAgICAgICAgYXJnMiA9IGFyZzE7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnMyA9IGFyZzE7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBFaXRoZXIgYXJnMiAmIGFyZzMgbmVlZCBzd2FwcGluZywgb3Igd2UncmUgYWxsIGRvbmUu
Ci0gICAgICAgIEFTU0VSVCgoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgfHwgYXJnMyA9
PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpCi0gICAgICAgICAgICB8fCAoYXJnMiA9PSBHUFJJbmZv
Ojphcmd1bWVudEdQUjMgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKLQotICAg
ICAgICBpZiAoYXJnMiAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjIpCi0gICAgICAgICAgICBzd2Fw
KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAgICB9Ci0K
LSNpZiBDUFUoTUlQUykKLSNkZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgNAotI2Vsc2UKLSNk
ZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgMAotI2VuZGlmCi0KLSNpZiBDUFUoWDg2XzY0KQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKLSAgICB7
Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICB9
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEsIEZQ
UlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgc2V0dXBUd29TdHViQXJnczxGUFJJbmZvOjphcmd1
bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMT4oYXJnMSwgYXJnMik7Ci0gICAgfQotICAg
IAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcxLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBh
cmczKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgfQotI2VsaWYgQ1BVKEFSTSkKLSNpZiBDUFUoQVJNX0hBUkRGUCkKLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBtb3Zl
RG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKLSAg
ICB7Ci0gICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgewotICAgICAg
ICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICAg
ICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgICAgICB9IGVs
c2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7Ci0gICAgICAgICAgICBtb3Zl
RG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgICAgICAgICBtb3ZlRG91
YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCi0gICAgICAgICAgICBtb3ZlRG91YmxlKEZQUklu
Zm86OmFyZ3VtZW50RlBSMCwgQVJNUmVnaXN0ZXJzOjpkMik7Ci0gICAgICAgICAgICBtb3ZlRG91
YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKLSAgICAg
ICAgICAgIG1vdmVEb3VibGUoQVJNUmVnaXN0ZXJzOjpkMiwgRlBSSW5mbzo6YXJndW1lbnRGUFIx
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAg
ICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICBtb3Zl
KGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcz
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJn
MSwgYXJnMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIsIEZQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnMykKLSAgICB7Ci0gICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIsIEZQUlJlZyBhcmc0
KQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmc0LCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OwotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
fQotCi0jZWxzZQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcg
YXJnMSkKLSAgICB7Ci0gICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEpOwotICAgIH0KLQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCi0gICAg
ewotICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKLSAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZv
Ojphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJnMik7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMyk7Ci0gICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIGFyZzEpOwotICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFy
Z3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgYXNzZW1ibGVyKCkudm1vdihH
UFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQUjAsIGFyZzMpOwotICAgICAg
ICBwb2tlKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEZQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnMywgUE9LRV9BUkdV
TUVOVF9PRkZTRVQpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjMsIGFyZzIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgRlBSUmVnIGFyZzQpCi0gICAgewotICAgICAgICBzZXR1
cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIG1vdmUoYXJnMywg
R1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKLSAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZv
Ojpub25BcmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIxLCBhcmc0KTsKLSAgICAgICAgcG9rZShH
UFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Ci0gICAgICAgIHBva2Uo
R1BSSW5mbzo6bm9uQXJnR1BSMSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKLSAgICB9Ci0j
ZW5kaWYgLy8gQ1BVKEFSTV9IQVJERlApCi0jZWxpZiBDUFUoTUlQUykKLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBtb3Zl
RG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKLSAg
ICB7Ci0gICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgewotICAgICAg
ICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICAg
ICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgICAgICB9IGVs
c2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7Ci0gICAgICAgICAgICBtb3Zl
RG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgICAgICAgICBtb3ZlRG91
YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCi0gICAgICAgICAgICBzd2FwRG91YmxlKEZQUklu
Zm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
RlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQotICAgIHsKLSAgICAgICAgYXNzZW1ibGVyKCkudm1v
dihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJnMSk7Ci0g
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgICAgIHBva2UoYXJnMiwgNCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEZQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEs
IGFyZzIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgICAgICBwb2tlKGFyZzMsIDQpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEZQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcyLCBhcmczKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEZQUlJlZyBhcmc0KQotICAgIHsKLSAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzQpOwotICAgIH0KLSNlbGlm
IENQVShTSDQpCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBh
cmcxKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJS
ZWcgYXJnMSwgRlBSUmVnIGFyZzIpCi0gICAgewotICAgICAgICBpZiAoYXJnMiAhPSBGUFJJbmZv
Ojphcmd1bWVudEZQUjApIHsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIwKTsKLSAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIxKTsKLSAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQUkluZm86OmFyZ3VtZW50
RlBSMSkgewotICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjEpOwotICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN3YXBEb3VibGUoRlBSSW5mbzo6YXJndW1l
bnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOwotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQotICAgIHsKLSAgICAg
ICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICBzZXR1
cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotI2Vsc2UKLSNlcnJv
ciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgotI2VuZGlmCi0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEpCi0gICAgewot
ICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MikKLSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBHUFJJbmZvOjphcmd1bWVudEdQUjE+KGFyZzEsIGFyZzIpOwotICAgIH0KLSAgICAKLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcxKQotICAg
IHsKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpCi0gICAgewot
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEpCi0gICAg
ewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSkKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKLSAg
ICB7Ci0gICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIpCi0gICAgewotICAgICAgICBtb3ZlKGFy
ZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0jaWYgQ1BVKFg4Nl82NCkgICAgCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgVHJ1c3RlZEltbTY0IGFyZzIpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tNjQgYXJnMSwgR1BSUmVnIGFyZzIpCi0gICAg
ewotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7IC8vIE1vdmUgdGhp
cyBmaXJzdCwgc28gc2V0dGluZyBhcmcxIGRvZXMgbm90IHRyYW1wbGUhCi0gICAgICAgIG1vdmUo
YXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0jZW5kaWYKLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBJbW1QdHIgYXJnMikKLSAgICB7Ci0g
ICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShh
cmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBh
cmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3Qg
dHJhbXBsZSEKLSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKLSAgICB7Ci0gICAg
ICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0
LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKLSAgICAgICAgbW92ZShhcmcxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEltbVB0ciBhcmcxLCBHUFJS
ZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEK
LSAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQotICAgIHsKLSAgICAgICAgbW92
ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKGFyZzIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0
ZWRJbW1QdHIgYXJnMikKLSAgICB7Ci0gICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKLSAgICB7Ci0g
ICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShh
cmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVwU3R1YkFyZ3VtZW50
cyhhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgVHJ1c3RlZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMo
YXJnMSwgYXJnMik7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsK
LSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMp
Ci0gICAgewotICAgICAgICBzZXR1cFR3b1N0dWJBcmdzPEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzPihhcmcxLCBhcmczKTsKLSAgICAgICAgbW92ZShhcmcyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwot
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMy
IGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92
ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQotICAgIHsKLSAgICAgICAg
bW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKGFyZzIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1l
bnRHUFIzKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bVB0ciBhcmczKQotICAgIHsKLSAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIp
OwotICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczKQotICAg
IHsKLSAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBt
b3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVz
dGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczKQotICAgIHsKLSAgICAgICAgbW92ZShhcmczLCBH
UFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAg
ICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFy
ZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0g
ICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAgICAgbW92ZShh
cmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAgICB7Ci0gICAgICAgIHNldHVwVHdvU3R1
YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzIs
IGFyZzMpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKLSAg
ICB7Ci0gICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjM+KGFyZzIsIGFyZzMpOwotICAgICAgICBtb3ZlKGFyZzEsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0
ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQotICAgIHsKLSAgICAgICAgbW92ZShh
cmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIz
KTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1
c3RlZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAg
ICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwotICAgICAgICBtb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIH0K
LQotI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBjb252ZW50aW9uIHRoYXQg
cHJvdmlkZXMgZm9yCi0gICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBB
Uk12Ny4KLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKLQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICBwb2tl
KGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCi0gICAgewotICAgICAgICBwb2tlKGFy
ZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIg
YXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQotICAgIHsKLSAgICAgICAgcG9r
ZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1t
UHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCi0g
ICAgewotICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Ci0gICAg
ICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKLSAgICB7Ci0g
ICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3Rl
ZEltbTMyIGFyZzUpCi0gICAgewotICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwotICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAg
fQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcg
YXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwot
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFy
ZzQpCi0gICAgewotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJl
ZyBhcmc1KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCAr
IDEpOwotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAg
ewotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQot
ICAgIHsKLSAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Ci0gICAgICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICB9Ci0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW1Q
dHIgYXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBH
UFJSZWcgYXJnNCkKLSAgICB7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJS
ZWcgYXJnNCwgR1BSUmVnIGFyZzUpCi0gICAgewotICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJH
VU1FTlRfT0ZGU0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJS
ZWcgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCi0gICAgewotICAgICAgICBwb2tlKGFyZzUsIFBP
S0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Ci0gICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVO
VF9PRkZTRVQpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmcz
LCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbVB0ciBhcmc1KQotICAgIHsKLSAgICAgICAgcG9rZShh
cmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwotICAgICAgICBwb2tlKGFyZzQsIFBPS0Vf
QVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1KQotICAgIHsKLSAg
ICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwotICAgICAgICBwb2tl
KGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0
ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1
KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwot
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1
KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwot
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQotI2VuZGlm
IC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAotCi0jaWYgTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA+PSA1Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVk
SW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCi0gICAgewotICAgICAgICBzZXR1cFR3b1N0dWJBcmdz
PEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFI0PihhcmcxLCBhcmc0
KTsKLSAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotICAgICAgICBt
b3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Ci0gICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKLSAg
ICB7Ci0gICAgICAgIEdQUlJlZyBzcmNBID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFI7Ci0gICAg
ICAgIEdQUlJlZyBzcmNCID0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyOwotCi0gICAgICAgIGlm
IChkZXN0QSA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0Qik7
Ci0gICAgICAgIGVsc2UgaWYgKGRlc3RCID09IEludmFsaWRHUFJSZWcpCi0gICAgICAgICAgICBt
b3ZlKHNyY0EsIGRlc3RBKTsKLSAgICAgICAgZWxzZSBpZiAoc3JjQiAhPSBkZXN0QSkgewotICAg
ICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KLSAg
ICAgICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOwotICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0
Qik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0QikgewotICAgICAgICAgICAgLy8g
SGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBpbiBwbGFjZSBmaXJzdC4K
LSAgICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOwotICAgICAgICAgICAgbW92ZShzcmNBLCBk
ZXN0QSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3dhcChkZXN0QSwgZGVzdEIpOwot
ICAgIH0KLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHQ0NhbGxIZWxwZXJzX2gKLQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTU2
MTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRo
SklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHSklUQ29kZS5o
IgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgJKHJl
dmlzaW9uIDE1NjEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgREZHRlBSSW5mb19oCi0jZGVmaW5lIERG
R0ZQUkluZm9faAotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdSZWdpc3Rl
ckJhbmsuaCIKLSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgotCi1uYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7Ci0KLXR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCBG
UFJSZWc7Ci0jZGVmaW5lIEludmFsaWRGUFJSZWcgKChGUFJSZWcpLTEpCi0KLSNpZiBDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KQotCi1jbGFzcyBGUFJJbmZvIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IEZQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9m
UmVnaXN0ZXJzID0gNjsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVycyA9IDg7Ci0KLSAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgotICAgIHN0YXRp
YyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9IFg4NlJlZ2lzdGVyczo6eG1tMDsKLSAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDEgPSBYODZSZWdpc3RlcnM6OnhtbTE7Ci0gICAgc3RhdGljIGNv
bnN0IEZQUlJlZyBmcFJlZ1QyID0gWDg2UmVnaXN0ZXJzOjp4bW0yOwotICAgIHN0YXRpYyBjb25z
dCBGUFJSZWcgZnBSZWdUMyA9IFg4NlJlZ2lzdGVyczo6eG1tMzsKLSAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIGZwUmVnVDQgPSBYODZSZWdpc3RlcnM6OnhtbTQ7Ci0gICAgc3RhdGljIGNvbnN0IEZQ
UlJlZyBmcFJlZ1Q1ID0gWDg2UmVnaXN0ZXJzOjp4bW01OwotI2lmIENQVShYODZfNjQpCi0gICAg
Ly8gT25seSBYODZfNjQgcGFzc2VzIGFndW1lbnRzIGluIHhtbSByZWdpc3RlcnMKLSAgICBzdGF0
aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IFg4NlJlZ2lzdGVyczo6eG1tMDsgLy8gZnBS
ZWdUMAotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIxID0gWDg2UmVnaXN0ZXJz
Ojp4bW0xOyAvLyBmcFJlZ1QxCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjIg
PSBYODZSZWdpc3RlcnM6OnhtbTI7IC8vIGZwUmVnVDIKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGFyZ3VtZW50RlBSMyA9IFg4NlJlZ2lzdGVyczo6eG1tMzsgLy8gZnBSZWdUMwotI2VuZGlmCi0g
ICAgLy8gT24gWDg2IHRoZSByZXR1cm4gd2lsbCBhY3R1YWxseSBiZSBvbiB0aGUgeDg3IHN0YWNr
LAotICAgIC8vIHNvIHdlJ2xsIGNvcHkgdG8geG1tMCBmb3Igc2FuaXR5IQotICAgIHN0YXRpYyBj
b25zdCBGUFJSZWcgcmV0dXJuVmFsdWVGUFIgPSBYODZSZWdpc3RlcnM6OnhtbTA7IC8vIGZwUmVn
VDAKLQotICAgIC8vIEZQUlJlZyBtYXBwaW5nIGlzIGRpcmVjdCwgdGhlIG1hY2hpbmUgcmVnc2l0
ZXIgbnVtYmVycyBjYW4KLSAgICAvLyBiZSB1c2VkIGRpcmVjdGx5IGFzIGluZGljZXMgaW50byB0
aGUgRlBSIFJlZ2lzdGVyQmFuay4KLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3RlcnM6Onht
bTAgPT0gMCwgeG1tMF9pc18wKTsKLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3RlcnM6Onht
bTEgPT0gMSwgeG1tMV9pc18xKTsKLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3RlcnM6Onht
bTIgPT0gMiwgeG1tMl9pc18yKTsKLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3RlcnM6Onht
bTMgPT0gMywgeG1tM19pc18zKTsKLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3RlcnM6Onht
bTQgPT0gNCwgeG1tNF9pc180KTsKLSAgICBDT01QSUxFX0FTU0VSVChYODZSZWdpc3RlcnM6Onht
bTUgPT0gNSwgeG1tNV9pc181KTsKLSAgICBzdGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIodW5zaWdu
ZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gKEZQUlJlZylpbmRleDsKLSAgICB9Ci0g
ICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAodW5zaWduZWQpcmVnOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgRlBSUmVnIHRvQXJn
dW1lbnRSZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAoRlBS
UmVnKWluZGV4OwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBS
UmVnIHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7Ci0j
aWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDE2
KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7Ci0g
ICAgICAgICAgICAieG1tMCIsICJ4bW0xIiwgInhtbTIiLCAieG1tMyIsCi0gICAgICAgICAgICAi
eG1tNCIsICJ4bW01IiwgInhtbTYiLCAieG1tNyIsCi0gICAgICAgICAgICAieG1tOCIsICJ4bW05
IiwgInhtbTEwIiwgInhtbTExIiwKLSAgICAgICAgICAgICJ4bW0xMiIsICJ4bW0xMyIsICJ4bW0x
NCIsICJ4bW0xNSIKLSAgICAgICAgfTsKLSNlbGlmIENQVShYODYpCi0gICAgICAgIEFTU0VSVChz
dGF0aWNfY2FzdDxpbnQ+KHJlZykgPCA4KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5h
bWVGb3JSZWdpc3Rlcls4XSA9IHsKLSAgICAgICAgICAgICJ4bW0wIiwgInhtbTEiLCAieG1tMiIs
ICJ4bW0zIiwKLSAgICAgICAgICAgICJ4bW00IiwgInhtbTUiLCAieG1tNiIsICJ4bW03IgotICAg
ICAgICB9OwotI2VuZGlmCi0gICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKLSAg
ICB9Ci19OwotCi0jZW5kaWYKLQotI2lmIENQVShBUk0pCi0KLWNsYXNzIEZQUkluZm8gewotcHVi
bGljOgotICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OwotCi0gICAgLy8gVGVtcG9yYXJ5IHJlZ2lz
dGVycy4KLSAgICAvLyBkNyBpcyB1c2UgYnkgdGhlIE1hY3JvQXNzZW1ibGVyIGFzIGZwVGVtcFJl
Z2lzdGVyLgotICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9IEFSTVJlZ2lzdGVyczo6
ZDA7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpkMTsK
LSAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIgPSBBUk1SZWdpc3RlcnM6OmQyOwotICAg
IHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IEFSTVJlZ2lzdGVyczo6ZDM7Ci0gICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gQVJNUmVnaXN0ZXJzOjpkNDsKLSAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDUgPSBBUk1SZWdpc3RlcnM6OmQ1OwotICAgIC8vIEFSTXY3IGRv
ZXNuJ3QgcGFzcyBhcmd1bWVudHMgaW4gZnAgcmVnaXN0ZXJzLiBUaGUgcmV0dXJuCi0gICAgLy8g
dmFsdWUgaXMgYWxzbyBhY3R1YWxseSBpbiBpbnRlZ2VyIHJlZ2lzdGVycywgZm9yIG5vdwotICAg
IC8vIHdlJ2xsIHJldHVybiBpbiBkMCBmb3Igc2ltcGxpY2l0eS4KLSAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIHJldHVyblZhbHVlRlBSID0gQVJNUmVnaXN0ZXJzOjpkMDsgLy8gZnBSZWdUMAotCi0j
aWYgQ1BVKEFSTV9IQVJERlApCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAg
PSBBUk1SZWdpc3RlcnM6OmQwOyAvLyBmcFJlZ1QwCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBh
cmd1bWVudEZQUjEgPSBBUk1SZWdpc3RlcnM6OmQxOyAvLyBmcFJlZ1QxCi0jZW5kaWYKLQotICAg
IC8vIEZQUlJlZyBtYXBwaW5nIGlzIGRpcmVjdCwgdGhlIG1hY2hpbmUgcmVnc2l0ZXIgbnVtYmVy
cyBjYW4KLSAgICAvLyBiZSB1c2VkIGRpcmVjdGx5IGFzIGluZGljZXMgaW50byB0aGUgRlBSIFJl
Z2lzdGVyQmFuay4KLSAgICBDT01QSUxFX0FTU0VSVChBUk1SZWdpc3RlcnM6OmQwID09IDAsIGQw
X2lzXzApOwotICAgIENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lzdGVyczo6ZDEgPT0gMSwgZDFfaXNf
MSk7Ci0gICAgQ09NUElMRV9BU1NFUlQoQVJNUmVnaXN0ZXJzOjpkMiA9PSAyLCBkMl9pc18yKTsK
LSAgICBDT01QSUxFX0FTU0VSVChBUk1SZWdpc3RlcnM6OmQzID09IDMsIGQzX2lzXzMpOwotICAg
IENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lzdGVyczo6ZDQgPT0gNCwgZDRfaXNfNCk7Ci0gICAgQ09N
UElMRV9BU1NFUlQoQVJNUmVnaXN0ZXJzOjpkNSA9PSA1LCBkNV9pc181KTsKLSAgICBzdGF0aWMg
RlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4g
KEZQUlJlZylpbmRleDsKLSAgICB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVn
IHJlZykKLSAgICB7Ci0gICAgICAgIHJldHVybiAodW5zaWduZWQpcmVnOwotICAgIH0KLQotICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVnIHJlZykKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDxpbnQ+KHJlZykgPCAzMik7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVn
aXN0ZXJbMzJdID0gewotICAgICAgICAgICAgImQwIiwgImQxIiwgImQyIiwgImQzIiwKLSAgICAg
ICAgICAgICJkNCIsICJkNSIsICJkNiIsICJkNyIsCi0gICAgICAgICAgICAiZDgiLCAiZDkiLCAi
ZDEwIiwgImQxMSIsCi0gICAgICAgICAgICAiZDEyIiwgImQxMyIsICJkMTQiLCAiZDE1IiwKLSAg
ICAgICAgICAgICJkMTYiLCAiZDE3IiwgImQxOCIsICJkMTkiLAotICAgICAgICAgICAgImQyMCIs
ICJkMjEiLCAiZDIyIiwgImQyMyIsCi0gICAgICAgICAgICAiZDI0IiwgImQyNSIsICJkMjYiLCAi
ZDI3IiwKLSAgICAgICAgICAgICJkMjgiLCAiZDI5IiwgImQzMCIsICJkMzEiCi0gICAgICAgIH07
Ci0gICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKLSAgICB9Ci19OwotCi0jZW5k
aWYKLQotI2lmIENQVShNSVBTKQotCi1jbGFzcyBGUFJJbmZvIHsKLXB1YmxpYzoKLSAgICB0eXBl
ZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJl
ck9mUmVnaXN0ZXJzID0gNjsKLQotICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCi0gICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6ZjA7Ci0gICAgc3RhdGlj
IGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6ZjQ7Ci0gICAgc3RhdGljIGNv
bnN0IEZQUlJlZyBmcFJlZ1QyID0gTUlQU1JlZ2lzdGVyczo6ZjY7Ci0gICAgc3RhdGljIGNvbnN0
IEZQUlJlZyBmcFJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6Zjg7Ci0gICAgc3RhdGljIGNvbnN0IEZQ
UlJlZyBmcFJlZ1Q0ID0gTUlQU1JlZ2lzdGVyczo6ZjEwOwotICAgIHN0YXRpYyBjb25zdCBGUFJS
ZWcgZnBSZWdUNSA9IE1JUFNSZWdpc3RlcnM6OmYxODsKLQotICAgIHN0YXRpYyBjb25zdCBGUFJS
ZWcgcmV0dXJuVmFsdWVGUFIgPSBNSVBTUmVnaXN0ZXJzOjpmMDsKLQotICAgIHN0YXRpYyBjb25z
dCBGUFJSZWcgYXJndW1lbnRGUFIwID0gTUlQU1JlZ2lzdGVyczo6ZjEyOwotICAgIHN0YXRpYyBj
b25zdCBGUFJSZWcgYXJndW1lbnRGUFIxID0gTUlQU1JlZ2lzdGVyczo6ZjE0OwotCi0gICAgc3Rh
dGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsK
LSAgICAgICAgICAgIGZwUmVnVDAsIGZwUmVnVDEsIGZwUmVnVDIsIGZwUmVnVDMsIGZwUmVnVDQs
IGZwUmVnVDUgfTsKLQotICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7
Ci0gICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKLSAgICAgICAgQVNTRVJUKHJlZyA8IDIwKTsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMjBdID0gewotICAgICAg
ICAgICAgMCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwKLSAgICAg
ICAgICAgIDEsIEludmFsaWRJbmRleCwgMiwgSW52YWxpZEluZGV4LAotICAgICAgICAgICAgMywg
SW52YWxpZEluZGV4LCA0LCBJbnZhbGlkSW5kZXgsCi0gICAgICAgICAgICBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsCi0gICAgICAgICAgICBJ
bnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgNSwgSW52YWxpZEluZGV4LAotICAgICAgICB9Owot
ICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107Ci0gICAgICAg
IEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCi0g
ICAgewotICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwotICAgICAgICBBU1NF
UlQocmVnIDwgMzIpOwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVy
WzMyXSA9IHsKLSAgICAgICAgICAgICJmMCIsICJmMSIsICJmMiIsICJmMyIsCi0gICAgICAgICAg
ICAiZjQiLCAiZjUiLCAiZjYiLCAiZjciLAotICAgICAgICAgICAgImY4IiwgImY5IiwgImYxMCIs
ICJmMTEiLAotICAgICAgICAgICAgImYxMiIsICJmMTMiLCAiZjE0IiwgImYxNSIKLSAgICAgICAg
ICAgICJmMTYiLCAiZjE3IiwgImYxOCIsICJmMTkiCi0gICAgICAgICAgICAiZjIwIiwgImYyMSIs
ICJmMjIiLCAiZjIzIgotICAgICAgICAgICAgImYyNCIsICJmMjUiLCAiZjI2IiwgImYyNyIKLSAg
ICAgICAgICAgICJmMjgiLCAiZjI5IiwgImYzMCIsICJmMzEiCi0gICAgICAgIH07Ci0gICAgICAg
IHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKLSAgICB9Ci1wcml2YXRlOgotCi0gICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Ci19OwotCi0jZW5k
aWYKLQotI2lmIENQVShTSDQpCi0KLWNsYXNzIEZQUkluZm8gewotcHVibGljOgotICAgIHR5cGVk
ZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZSZWdpc3RlcnMgPSA2OwotCi0gICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KLSAgICBzdGF0
aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBTSDRSZWdpc3RlcnM6OmRyMDsKLSAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDEgPSBTSDRSZWdpc3RlcnM6OmRyMjsKLSAgICBzdGF0aWMgY29u
c3QgRlBSUmVnIGZwUmVnVDIgPSBTSDRSZWdpc3RlcnM6OmRyNDsKLSAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIGZwUmVnVDMgPSBTSDRSZWdpc3RlcnM6OmRyNjsKLSAgICBzdGF0aWMgY29uc3QgRlBS
UmVnIGZwUmVnVDQgPSBTSDRSZWdpc3RlcnM6OmRyODsKLSAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDUgPSBTSDRSZWdpc3RlcnM6OmRyMTA7Ci0KLSAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IHJldHVyblZhbHVlRlBSID0gU0g0UmVnaXN0ZXJzOjpkcjA7Ci0KLSAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIGFyZ3VtZW50RlBSMCA9IFNINFJlZ2lzdGVyczo6ZHI0OwotICAgIHN0YXRpYyBjb25z
dCBGUFJSZWcgYXJndW1lbnRGUFIxID0gU0g0UmVnaXN0ZXJzOjpkcjY7Ci0KLSAgICBzdGF0aWMg
RlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0gewotICAg
ICAgICAgICAgZnBSZWdUMCwgZnBSZWdUMSwgZnBSZWdUMiwgZnBSZWdUMywgZnBSZWdUNCwgZnBS
ZWdUNSB9OwotCi0gICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKLSAg
ICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRp
YyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVn
ICE9IEludmFsaWRGUFJSZWcpOwotICAgICAgICBBU1NFUlQocmVnIDwgMTYpOwotICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7Ci0gICAgICAgICAg
ICAwLCBJbnZhbGlkSW5kZXgsIDEsIEludmFsaWRJbmRleCwKLSAgICAgICAgICAgIDIsIEludmFs
aWRJbmRleCwgMywgSW52YWxpZEluZGV4LAotICAgICAgICAgICAgNCwgSW52YWxpZEluZGV4LCA1
LCBJbnZhbGlkSW5kZXgsCi0gICAgICAgICAgICBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgKLSAgICAgICAgfTsKLSAgICAgICAgdW5zaWduZWQg
cmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOwotICAgICAgICBBU1NFUlQocmVzdWx0ICE9
IEludmFsaWRJbmRleCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKLSAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7Ci0gICAgICAg
ICAgICAiZHIwIiwgImZyMSIsICJkcjIiLCAiZnIzIiwKLSAgICAgICAgICAgICJkcjQiLCAiZnI1
IiwgImRyNiIsICJmcjciLAotICAgICAgICAgICAgImRyOCIsICJmcjkiLCAiZHIxMCIsICJmcjEx
IiwKLSAgICAgICAgICAgICJkcjEyIiwgImZyMTMiLCAiZHIxNCIsICJmcjE1IgotICAgICAgICB9
OwotICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwot
fTsKLQotI2VuZGlmCi0KLXR5cGVkZWYgUmVnaXN0ZXJCYW5rPEZQUkluZm8+OjppdGVyYXRvciBm
cHJfaXRlcmF0b3I7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmCi0jZW5k
aWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCShyZXZpc2lvbiAx
NTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2NDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIERGR0dQUkluZm9faAotI2RlZmluZSBERkdHUFJJbmZv
X2gKLQotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0K
LSNpbmNsdWRlICJERkdSZWdpc3RlckJhbmsuaCIKLSNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5o
IgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLXR5cGVkZWYgTWFjcm9Bc3Nl
bWJsZXI6OlJlZ2lzdGVySUQgR1BSUmVnOwotI2RlZmluZSBJbnZhbGlkR1BSUmVnICgoOjpKU0M6
OkRGRzo6R1BSUmVnKS0xKQotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLWNsYXNzIEpTVmFsdWVSZWdz
IHsKLXB1YmxpYzoKLSAgICBKU1ZhbHVlUmVncygpCi0gICAgICAgIDogbV9ncHIoSW52YWxpZEdQ
UlJlZykKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IEpTVmFsdWVSZWdzKEdQUlJl
ZyBncHIpCi0gICAgICAgIDogbV9ncHIoZ3ByKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgc3Rh
dGljIEpTVmFsdWVSZWdzIHBheWxvYWRPbmx5KEdQUlJlZyBncHIpCi0gICAgewotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVJlZ3MoZ3ByKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciEo
KSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBJbnZhbGlkR1BSUmVnOyB9Ci0gICAgCi0gICAgR1BS
UmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9Ci0gICAgR1BSUmVnIHBheWxvYWRHUFIo
KSBjb25zdCB7IHJldHVybiBtX2dwcjsgfQotICAgIAotcHJpdmF0ZToKLSAgICBHUFJSZWcgbV9n
cHI7Ci19OwotCi1jbGFzcyBKU1ZhbHVlU291cmNlIHsKLXB1YmxpYzoKLSAgICBKU1ZhbHVlU291
cmNlKCkKLSAgICAgICAgOiBtX29mZnNldChub3RBZGRyZXNzKCkpCi0gICAgICAgICwgbV9iYXNl
KEludmFsaWRHUFJSZWcpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBKU1ZhbHVlU291cmNlKEpT
VmFsdWVSZWdzIHJlZ3MpCi0gICAgICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygpKQotICAgICAg
ICAsIG1fYmFzZShyZWdzLmdwcigpKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgZXhwbGljaXQg
SlNWYWx1ZVNvdXJjZShHUFJSZWcgZ3ByKQotICAgICAgICA6IG1fb2Zmc2V0KG5vdEFkZHJlc3Mo
KSkKLSAgICAgICAgLCBtX2Jhc2UoZ3ByKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgSlNWYWx1
ZVNvdXJjZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhZGRyZXNzKQotICAgICAgICA6IG1fb2Zm
c2V0KGFkZHJlc3Mub2Zmc2V0KQotICAgICAgICAsIG1fYmFzZShhZGRyZXNzLmJhc2UpCi0gICAg
ewotICAgICAgICBBU1NFUlQobV9vZmZzZXQgIT0gbm90QWRkcmVzcygpKTsKLSAgICAgICAgQVNT
RVJUKG1fYmFzZSAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIEpT
VmFsdWVTb3VyY2UgdW5ib3hlZENlbGwoR1BSUmVnIHBheWxvYWRHUFIpCi0gICAgewotICAgICAg
ICByZXR1cm4gSlNWYWx1ZVNvdXJjZShwYXlsb2FkR1BSKTsKLSAgICB9Ci0gICAgCi0gICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2Jhc2UgPT0gSW52YWxpZEdQUlJlZzsgfQot
ICAgIAotICAgIGJvb2wgaXNBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQgIT0gbm90
QWRkcmVzcygpOyB9Ci0gICAgCi0gICAgaW50MzJfdCBvZmZzZXQoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGlzQWRkcmVzcygpKTsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwotICAg
IH0KLSAgICAKLSAgICBHUFJSZWcgYmFzZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQo
aXNBZGRyZXNzKCkpOwotICAgICAgICByZXR1cm4gbV9iYXNlOwotICAgIH0KLSAgICAKLSAgICBH
UFJSZWcgZ3ByKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNBZGRyZXNzKCkpOwot
ICAgICAgICByZXR1cm4gbV9iYXNlOwotICAgIH0KLSAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyBhc0FkZHJlc3MoKSBjb25zdCB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlKCksIG9mZnNldCgpKTsgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdGF0aWMgaW5saW5l
IGludDMyX3Qgbm90QWRkcmVzcygpIHsgcmV0dXJuIDB4ODAwMDAwMDA7IH0gICAgIAotICAgICAg
ICAgIAotICAgIGludDMyX3QgbV9vZmZzZXQ7Ci0gICAgR1BSUmVnIG1fYmFzZTsKLX07Ci0jZW5k
aWYKLQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi1jbGFzcyBKU1ZhbHVlUmVncyB7Ci1wdWJsaWM6
Ci0gICAgSlNWYWx1ZVJlZ3MoKQotICAgICAgICA6IG1fdGFnR1BSKHN0YXRpY19jYXN0PGludDhf
dD4oSW52YWxpZEdQUlJlZykpCi0gICAgICAgICwgbV9wYXlsb2FkR1BSKHN0YXRpY19jYXN0PGlu
dDhfdD4oSW52YWxpZEdQUlJlZykpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBKU1ZhbHVlUmVn
cyhHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKLSAgICAgICAgOiBtX3RhZ0dQUih0
YWdHUFIpCi0gICAgICAgICwgbV9wYXlsb2FkR1BSKHBheWxvYWRHUFIpCi0gICAgewotICAgIH0K
LSAgICAKLSAgICBzdGF0aWMgSlNWYWx1ZVJlZ3MgcGF5bG9hZE9ubHkoR1BSUmVnIGdwcikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhJbnZhbGlkR1BSUmVnLCBncHIpOwotICAg
IH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3RhZ0dQUikgPT0gSW52YWxpZEdQUlJlZwotICAgICAg
ICAgICAgJiYgc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWRHUFIpID09IEludmFsaWRHUFJS
ZWc7Ci0gICAgfQotICAgIAotICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxHUFJSZWc+KG1fdGFnR1BSKTsgfQotICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWRHUFIpOyB9Ci0gICAgR1BS
UmVnIGdwcihXaGljaFZhbHVlV29yZCB3aGljaCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3aXRj
aCAod2hpY2gpIHsKLSAgICAgICAgY2FzZSBUYWdXb3JkOgotICAgICAgICAgICAgcmV0dXJuIHRh
Z0dQUigpOwotICAgICAgICBjYXNlIFBheWxvYWRXb3JkOgotICAgICAgICAgICAgcmV0dXJuIHBh
eWxvYWRHUFIoKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIHRhZ0dQUigpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBpbnQ4X3QgbV90
YWdHUFI7Ci0gICAgaW50OF90IG1fcGF5bG9hZEdQUjsKLX07Ci0KLWNsYXNzIEpTVmFsdWVTb3Vy
Y2UgewotcHVibGljOgotICAgIEpTVmFsdWVTb3VyY2UoKQotICAgICAgICA6IG1fb2Zmc2V0KG5v
dEFkZHJlc3MoKSkKLSAgICAgICAgLCBtX2Jhc2VPclRhZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KElu
dmFsaWRHUFJSZWcpKQotICAgICAgICAsIG1fcGF5bG9hZChzdGF0aWNfY2FzdDxpbnQ4X3Q+KElu
dmFsaWRHUFJSZWcpKQotICAgICAgICAsIG1fdGFnVHlwZSgwKQotICAgIHsKLSAgICB9Ci0gICAg
Ci0gICAgSlNWYWx1ZVNvdXJjZShKU1ZhbHVlUmVncyByZWdzKQotICAgICAgICA6IG1fb2Zmc2V0
KG5vdEFkZHJlc3MoKSkKLSAgICAgICAgLCBtX2Jhc2VPclRhZyhyZWdzLnRhZ0dQUigpKQotICAg
ICAgICAsIG1fcGF5bG9hZChyZWdzLnBheWxvYWRHUFIoKSkKLSAgICAgICAgLCBtX3RhZ1R5cGUo
MCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEpTVmFsdWVTb3VyY2UoR1BSUmVnIHRhZ0dQUiwg
R1BSUmVnIHBheWxvYWRHUFIpCi0gICAgICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygpKQotICAg
ICAgICAsIG1fYmFzZU9yVGFnKHN0YXRpY19jYXN0PGludDhfdD4odGFnR1BSKSkKLSAgICAgICAg
LCBtX3BheWxvYWQoc3RhdGljX2Nhc3Q8aW50OF90PihwYXlsb2FkR1BSKSkKLSAgICAgICAgLCBt
X3RhZ1R5cGUoMCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEpTVmFsdWVTb3VyY2UoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MgYWRkcmVzcykKLSAgICAgICAgOiBtX29mZnNldChhZGRyZXNzLm9m
ZnNldCkKLSAgICAgICAgLCBtX2Jhc2VPclRhZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KGFkZHJlc3Mu
YmFzZSkpCi0gICAgICAgICwgbV9wYXlsb2FkKHN0YXRpY19jYXN0PGludDhfdD4oSW52YWxpZEdQ
UlJlZykpCi0gICAgICAgICwgbV90YWdUeXBlKDApCi0gICAgewotICAgICAgICBBU1NFUlQobV9v
ZmZzZXQgIT0gbm90QWRkcmVzcygpKTsKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PEdQUlJl
Zz4obV9iYXNlT3JUYWcpICE9IEludmFsaWRHUFJSZWcpOwotICAgIH0KLSAgICAKLSAgICBzdGF0
aWMgSlNWYWx1ZVNvdXJjZSB1bmJveGVkQ2VsbChHUFJSZWcgcGF5bG9hZEdQUikKLSAgICB7Ci0g
ICAgICAgIEpTVmFsdWVTb3VyY2UgcmVzdWx0OwotICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBu
b3RBZGRyZXNzKCk7Ci0gICAgICAgIHJlc3VsdC5tX2Jhc2VPclRhZyA9IHN0YXRpY19jYXN0PGlu
dDhfdD4oSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIHJlc3VsdC5tX3BheWxvYWQgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KHBheWxvYWRHUFIpOwotICAgICAgICByZXN1bHQubV90YWdUeXBlID0gc3Rh
dGljX2Nhc3Q8aW50OF90PihKU1ZhbHVlOjpDZWxsVGFnKTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9iYXNlT3JUYWcpID09IEludmFsaWRHUFJS
ZWcKLSAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PEdQUlJlZz4obV9wYXlsb2FkKSA9PSBJbnZh
bGlkR1BSUmVnOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQWRkcmVzcygpIGNvbnN0Ci0gICAg
ewotICAgICAgICBBU1NFUlQoISEqdGhpcyk7Ci0gICAgICAgIHJldHVybiBtX29mZnNldCAhPSBu
b3RBZGRyZXNzKCk7Ci0gICAgfQotICAgIAotICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChpc0FkZHJlc3MoKSk7Ci0gICAgICAgIHJldHVybiBtX29mZnNl
dDsKLSAgICB9Ci0gICAgCi0gICAgR1BSUmVnIGJhc2UoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKGlzQWRkcmVzcygpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4o
bV9iYXNlT3JUYWcpOwotICAgIH0KLSAgICAKLSAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCghaXNBZGRyZXNzKCkgJiYgc3RhdGljX2Nhc3Q8R1BSUmVnPiht
X2Jhc2VPclRhZykgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHUFJSZWc+KG1fYmFzZU9yVGFnKTsKLSAgICB9Ci0gICAgCi0gICAgR1BSUmVnIHBheWxvYWRH
UFIoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0FkZHJlc3MoKSk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fcGF5bG9hZCk7Ci0gICAgfQotICAgIAotICAg
IGJvb2wgaGFzS25vd25UYWcoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCEhKnRoaXMp
OwotICAgICAgICBBU1NFUlQoIWlzQWRkcmVzcygpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdQUlJlZz4obV9iYXNlT3JUYWcpID09IEludmFsaWRHUFJSZWc7Ci0gICAgfQotICAgIAot
ICAgIHVpbnQzMl90IHRhZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50MzJfdD4obV90YWdUeXBlKTsKLSAgICB9Ci0gICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MgYXNBZGRyZXNzKHVuc2lnbmVkIGFkZGl0aW9uYWxPZmZzZXQgPSAwKSBjb25zdCB7
IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKCksIG9mZnNldCgpICsgYWRkaXRp
b25hbE9mZnNldCk7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgc3RhdGljIGlubGluZSBpbnQzMl90
IG5vdEFkZHJlc3MoKSB7IHJldHVybiAweDgwMDAwMDAwOyB9ICAgICAKLSAgICAgICAgICAKLSAg
ICBpbnQzMl90IG1fb2Zmc2V0OwotICAgIGludDhfdCBtX2Jhc2VPclRhZzsKLSAgICBpbnQ4X3Qg
bV9wYXlsb2FkOyAKLSAgICBpbnQ4X3QgbV90YWdUeXBlOyAvLyBDb250YWlucyB0aGUgbG93IGJp
dHMgb2YgdGhlIHRhZy4KLX07Ci0jZW5kaWYKLQotI2lmIENQVShYODYpCi0jZGVmaW5lIE5VTUJF
Ul9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgMAotCi1jbGFzcyBHUFJJbmZvIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG51bWJlck9mUmVnaXN0ZXJzID0gNTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7Ci0KLSAg
ICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAg
PSBYODZSZWdpc3RlcnM6OmVheDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gWDg2
UmVnaXN0ZXJzOjplZHg7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IFg4NlJlZ2lz
dGVyczo6ZWN4OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBYODZSZWdpc3RlcnM6
OmVieDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gWDg2UmVnaXN0ZXJzOjplc2k7
Ci0gICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCi0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOwotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7Ci0gICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWRpOwotICAg
IC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVy
cG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCi0gICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBYODZSZWdpc3RlcnM6OmVjeDsgLy8gcmVnVDIKLSAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyBy
ZWdUMQotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6
ZWF4OyAvLyByZWdUMAotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IFg4NlJl
Z2lzdGVyczo6ZWJ4OyAvLyByZWdUMwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BS
MiA9IFg4NlJlZ2lzdGVyczo6ZXNpOyAvLyByZWdUNAotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKLSAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdU
MQotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gWDg2
UmVnaXN0ZXJzOjplY3g7Ci0KLSAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQg
aW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJl
Z2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCB9OwotICAgICAg
ICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHVu
c2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChyZWcgIT0g
SW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCA4
KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbOF0gPSB7
IDAsIDIsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA0LCBJbnZhbGlkSW5kZXgg
fTsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOwotICAg
ICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVn
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDgpOwotICAgICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogbmFtZUZvclJlZ2lzdGVyWzhdID0gewotICAgICAgICAgICAgImVheCIsICJlY3giLCAi
ZWR4IiwgImVieCIsCi0gICAgICAgICAgICAiZXNwIiwgImVicCIsICJlc2kiLCAiZWRpIiwKLSAg
ICAgICAgfTsKLSAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOwotICAgIH0KLXBy
aXZhdGU6Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZm
ZmZmZjsKLX07Ci0KLSNlbmRpZgotCi0jaWYgQ1BVKFg4Nl82NCkKLSNkZWZpbmUgTlVNQkVSX09G
X0FSR1VNRU5UX1JFR0lTVEVSUyA2Ci0KLWNsYXNzIEdQUkluZm8gewotcHVibGljOgotICAgIHR5
cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVt
YmVyT2ZSZWdpc3RlcnMgPSA5OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFy
Z3VtZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsKLQotICAgIC8v
IFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgotICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKLSAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTM7
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIgPSBYODZSZWdp
c3RlcnM6OnIxNDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHRhZ01hc2tSZWdpc3RlciA9IFg4
NlJlZ2lzdGVyczo6cjE1OwotICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCi0gICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwotICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmVnVDEgPSBYODZSZWdpc3RlcnM6OmVkeDsKLSAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ1QyID0gWDg2UmVnaXN0ZXJzOjplY3g7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUMyA9IFg4NlJlZ2lzdGVyczo6ZWJ4OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQg
PSBYODZSZWdpc3RlcnM6OmVkaTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gWDg2
UmVnaXN0ZXJzOjplc2k7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNiA9IFg4NlJlZ2lz
dGVyczo6cjg7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNyA9IFg4NlJlZ2lzdGVyczo6
cjk7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOCA9IFg4NlJlZ2lzdGVyczo6cjEwOwot
ICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwg
cHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCi0gICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBYODZSZWdpc3RlcnM6OmVkaTsgLy8gcmVnVDQKLSAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZXNpOyAv
LyByZWdUNQotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gWDg2UmVnaXN0
ZXJzOjplZHg7IC8vIHJlZ1QxCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMg
PSBYODZSZWdpc3RlcnM6OmVjeDsgLy8gcmVnVDIKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFy
Z3VtZW50R1BSNCA9IFg4NlJlZ2lzdGVyczo6cjg7ICAvLyByZWdUNgotICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgYXJndW1lbnRHUFI1ID0gWDg2UmVnaXN0ZXJzOjpyOTsgIC8vIHJlZ1Q3Ci0gICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJl
Z1QwCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJzOjpl
Yng7IC8vIHJlZ1QzCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0gWDg2UmVn
aXN0ZXJzOjpyMTA7IC8vIHJlZ1Q4Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1
ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAotICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxCi0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6
OmVzaTsKLQotICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKLSAgICAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9
IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3
LCByZWdUOCB9OwotICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07Ci0gICAg
fQotICAgIAotICAgIHN0YXRpYyBHUFJSZWcgdG9Bcmd1bWVudFJlZ2lzdGVyKHVuc2lnbmVkIGlu
ZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZBcmd1bWVudFJlZ2lz
dGVycyk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzXSA9IHsgYXJndW1lbnRHUFIwLCBhcmd1bWVudEdQUjEsIGFy
Z3VtZW50R1BSMiwgYXJndW1lbnRHUFIzLCBhcmd1bWVudEdQUjQsIGFyZ3VtZW50R1BSNSB9Owot
ICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07Ci0gICAgfQotICAgIAotICAg
IHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50
PihyZWcpIDwgMTYpOwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdp
c3RlclsxNl0gPSB7IDAsIDIsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCA0
LCA2LCA3LCA4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCB9OwotICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRl
eEZvclJlZ2lzdGVyW3JlZ107Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4
KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hh
ciogZGVidWdOYW1lKEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYp
OwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKLSAg
ICAgICAgICAgICJyYXgiLCAicmN4IiwgInJkeCIsICJyYngiLAotICAgICAgICAgICAgInJzcCIs
ICJyYnAiLCAicnNpIiwgInJkaSIsCi0gICAgICAgICAgICAicjgiLCAicjkiLCAicjEwIiwgInIx
MSIsCi0gICAgICAgICAgICAicjEyIiwgInIxMyIsICJyMTQiLCAicjE1IgotICAgICAgICB9Owot
ICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107Ci0gICAgfQotcHJpdmF0ZToKLQot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwotfTsK
LQotI2VuZGlmCi0KLSNpZiBDUFUoQVJNKQotI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVH
SVNURVJTIDQKLQotY2xhc3MgR1BSSW5mbyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBHUFJSZWcg
UmVnaXN0ZXJUeXBlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVy
cyA9IDg7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOwotCi0gICAgLy8gVGVtcG9yYXJ5IHJl
Z2lzdGVycy4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpy
MDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpyMTsKLSAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gQVJNUmVnaXN0ZXJzOjpyMjsKLSAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gQVJNUmVnaXN0ZXJzOjpyNDsKLSAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJlZ1Q0ID0gQVJNUmVnaXN0ZXJzOjpyODsKLSAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ1Q1ID0gQVJNUmVnaXN0ZXJzOjpyOTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJl
Z1Q2ID0gQVJNUmVnaXN0ZXJzOjpyMTA7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNyA9
IEFSTVJlZ2lzdGVyczo6cjExOwotICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFz
ZWxpbmUgSklULgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIg
PSByZWdUMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9
IHJlZ1QxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk1S
ZWdpc3RlcnM6OnI1OwotICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBm
b3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMu
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBBUk1SZWdpc3RlcnM6OnIw
OyAvLyByZWdUMAotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gQVJNUmVn
aXN0ZXJzOjpyMTsgLy8gcmVnVDEKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BS
MiA9IEFSTVJlZ2lzdGVyczo6cjI7IC8vIHJlZ1QyCi0gICAgLy8gRklYTUU6IHIzIGlzIGN1cnJl
bnRseSB1c2VkIGJlIHRoZSBNYWNyb0Fzc2VtYmxlciBhcyBhIHRlbXBvcmFyeSAtIGl0IHNlZW1z
Ci0gICAgLy8gVGhpcyBjb3VsZCB0aHJlb3JldGljYWxseSBiZSBhIHByb2JsZW0gaWYgdGhpcyBp
cyB1c2VkIGluIGNvZGUgZ2VuZXJhdGlvbgotICAgIC8vIGJldHdlZW4gdGhlIGFyZ3VtZW50cyBi
ZWluZyBzZXQgdXAsIGFuZCB0aGUgY2FsbCBiZWluZyBtYWRlLiBUaGF0IHNhaWQsCi0gICAgLy8g
YW55IGNoYW5nZSBpbnRyb2R1Y2luZyBhIHByb2JsZW0gaGVyZSBpcyBsaWtlbHkgdG8gYmUgaW1t
ZWRpYXRlbHkgYXBwYXJlbnQhCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMg
PSBBUk1SZWdpc3RlcnM6OnIzOyAvLyBGSVhNRSEKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5v
bkFyZ0dQUjAgPSBBUk1SZWdpc3RlcnM6OnI0OyAvLyByZWdUMwotICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgbm9uQXJnR1BSMSA9IEFSTVJlZ2lzdGVyczo6cjg7IC8vIHJlZ1Q0Ci0gICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0gQVJNUmVnaXN0ZXJzOjpyOTsgLy8gcmVnVDUKLSAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gQVJNUmVnaXN0ZXJzOjpyMDsg
Ly8gcmVnVDAKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IEFSTVJl
Z2lzdGVyczo6cjE7IC8vIHJlZ1QxCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2
ZWROb25SZXR1cm5HUFIgPSBBUk1SZWdpc3RlcnM6OnIyOwotCi0gICAgc3RhdGljIEdQUlJlZyB0
b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwg
bnVtYmVyT2ZSZWdpc3RlcnMpOwotICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVy
Rm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdU
MywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcgfTsKLSAgICAgICAgcmV0dXJuIHJlZ2lzdGVy
Rm9ySW5kZXhbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQ
UlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJl
ZykgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmVnKSA8IDE2KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVn
aXN0ZXJbMTZdID0geyAwLCAxLCAyLCBJbnZhbGlkSW5kZXgsIDMsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDQsIDUsIDYsIDcsIEludmFsaWRJbmRleCwgSW52YWxp
ZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCB9OwotICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgIT0g
SW52YWxpZEluZGV4KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlZykgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAg
IEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVnKSA8IDE2KTsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7Ci0gICAgICAgICAgICAicjAiLCAi
cjEiLCAicjIiLCAicjMiLAotICAgICAgICAgICAgInI0IiwgInI1IiwgInI2IiwgInI3IiwKLSAg
ICAgICAgICAgICJyOCIsICJyOSIsICJyMTAiLCAicjExIiwKLSAgICAgICAgICAgICJyMTIiLCAi
cjEzIiwgInIxNCIsICJyMTUiCi0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiBuYW1lRm9yUmVn
aXN0ZXJbcmVnXTsKLSAgICB9Ci1wcml2YXRlOgotCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Ci19OwotCi0jZW5kaWYKLQotI2lmIENQVShNSVBT
KQotI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKLQotY2xhc3MgR1BSSW5m
byB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwotICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTOwotCi0gICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KLSAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7Ci0gICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUMSA9IE1JUFNSZWdpc3RlcnM6OnYxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjp0NDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Qz
ID0gTUlQU1JlZ2lzdGVyczo6dDU7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IE1J
UFNSZWdpc3RlcnM6OnQ2OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBNSVBTUmVn
aXN0ZXJzOjp0NzsKLSAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJ
VC4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gcmVnVDA7
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSByZWdUMTsK
LSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVy
czo6czA7Ci0gICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUg
Z2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KLSAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IE1JUFNSZWdpc3RlcnM6OmEwOwotICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gTUlQU1JlZ2lzdGVyczo6YTE7Ci0g
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBNSVBTUmVnaXN0ZXJzOjphMjsK
LSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IE1JUFNSZWdpc3RlcnM6OmEz
OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1QyOwotICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1QzOwotICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgbm9uQXJnR1BSMiA9IHJlZ1Q0OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFs
dWVHUFIgPSByZWdUMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9
IHJlZ1QxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BS
ID0gcmVnVDU7Ci0KLSAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgp
Ci0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVy
c10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUgfTsKLSAgICAg
ICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyB1
bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVnICE9
IEludmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NFUlQocmVnIDwgMTYpOwotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIEludmFsaWRJbmRleCwgMiwgMywgNCwgNSB9OwotICAgICAgICB1bnNpZ25lZCByZXN1bHQg
PSBpbmRleEZvclJlZ2lzdGVyW3JlZ107Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxp
ZEluZGV4KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29u
c3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBBU1NFUlQocmVn
ICE9IEludmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NFUlQocmVnIDwgMTYpOwotICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKLSAgICAgICAgICAgICJ6
ZXJvIiwgImF0IiwgInYwIiwgInYxIiwKLSAgICAgICAgICAgICJhMCIsICJhMSIsICJhMiIsICJh
MyIsCi0gICAgICAgICAgICAidDAiLCAidDEiLCAidDIiLCAidDMiLAotICAgICAgICAgICAgInQ0
IiwgInQ1IiwgInQ2IiwgInQ3IgotICAgICAgICB9OwotICAgICAgICByZXR1cm4gbmFtZUZvclJl
Z2lzdGVyW3JlZ107Ci0gICAgfQotcHJpdmF0ZToKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwotfTsKLQotI2VuZGlmCi0KLSNpZiBDUFUoU0g0
KQotI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKLQotY2xhc3MgR1BSSW5m
byB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwotICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDEwOwotCi0gICAgLy8gVGVtcG9y
YXJ5IHJlZ2lzdGVycy4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gU0g0UmVnaXN0
ZXJzOjpyMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpy
MTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gU0g0UmVnaXN0ZXJzOjpyMjsKLSAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gU0g0UmVnaXN0ZXJzOjpyMTA7Ci0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IFNINFJlZ2lzdGVyczo6cjQ7Ci0gICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUNSA9IFNINFJlZ2lzdGVyczo6cjU7Ci0gICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUNiA9IFNINFJlZ2lzdGVyczo6cjY7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUNyA9IFNINFJlZ2lzdGVyczo6cjc7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOCA9
IFNINFJlZ2lzdGVyczo6cjg7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOSA9IFNINFJl
Z2lzdGVyczo6cjk7Ci0gICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBK
SVQuCi0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1Qw
OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7
Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFNINFJlZ2lzdGVy
czo6ZnA7Ci0gICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUg
Z2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KLSAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IHJlZ1Q0OwotICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgYXJndW1lbnRHUFIxID0gcmVnVDU7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBh
cmd1bWVudEdQUjIgPSByZWdUNjsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BS
MyA9IHJlZ1Q3OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1QzOwot
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q4OwotICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9IHJlZ1Q5OwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZh
bHVlR1BSMiA9IHJlZ1QxOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9u
UmV0dXJuR1BSID0gcmVnVDI7Ci0KLSAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWdu
ZWQgaW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVy
cyk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJP
ZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUs
IHJlZ1Q2LCByZWdUNywgcmVnVDgsIHJlZ1Q5IH07Ci0gICAgICAgIHJldHVybiByZWdpc3RlckZv
ckluZGV4W2luZGV4XTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChHUFJS
ZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKLSAg
ICAgICAgQVNTRVJUKHJlZyA8IDE0KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu
ZGV4Rm9yUmVnaXN0ZXJbMTRdID0geyAwLCAxLCAyLCBJbnZhbGlkSW5kZXgsIDQsIDUsIDYsIDcs
IDgsIDksIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKLSAg
ICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOwotICAgICAgICBB
U1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKLSAgICAgICAgQVNTRVJU
KHJlZyA8IDE2KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3Rlclsx
Nl0gPSB7Ci0gICAgICAgICAgICAicjAiLCAicjEiLCAicjIiLCAicjMiLCAicjQiLCAicjUiLCAi
cjYiLCAicjciLAotICAgICAgICAgICAgInI4IiwgInI5IiwgInIxMCIsICJyMTEiLCAicjEyIiwg
InIxMyIsICJyMTQiLCAicjE1IgotICAgICAgICB9OwotICAgICAgICByZXR1cm4gbmFtZUZvclJl
Z2lzdGVyW3JlZ107Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwotfTsKLQotI2VuZGlmCi0KLXR5cGVkZWYgUmVn
aXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRlcmF0b3I7Ci0KLX0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKLQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgi
CiAjaW5jbHVkZSAiREZHQ2xvYmJlclNldC5oIgorI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNp
bmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25F
eGVjdXRhYmxlRHVtcC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTU2MTM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICsz
MCw5IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVy
cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0FyZ3VtZW50UG9zaXRp
b24uaCIKLSNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRlICJERkdCYXNp
Y0Jsb2NrLmgiCiAjaW5jbHVkZSAiREZHRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkRGR0xvbmdM
aXZlZFN0YXRlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oCShyZXZpc2lvbiAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE3ICsyOCwxNyBAQAogCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJD
YWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiREZH
Q0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZHRGlzYXNzZW1ibGVyLmgiCi0jaW5jbHVkZSAi
REZHRlBSSW5mby5oIgotI2luY2x1ZGUgIkRGR0dQUkluZm8uaCIKICNpbmNsdWRlICJERkdHcmFw
aC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGls
YXRpb25JbmZvLmgiCiAjaW5jbHVkZSAiREZHUmVnaXN0ZXJCYW5rLmgiCiAjaW5jbHVkZSAiREZH
UmVnaXN0ZXJTZXQuaCIKKyNpbmNsdWRlICJGUFJJbmZvLmgiCisjaW5jbHVkZSAiR1BSSW5mby5o
IgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXIuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmNwcAkocmV2aXNpb24gMTU2MTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNs
dWRlICJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUg
IkRGR1NwZWN1bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHJldmlzaW9uIDE1NjEzNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw5ICszMyw5IEBACiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRGR0Nv
bW1vbi5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCi0jaW5jbHVkZSAiREZHR1BSSW5m
by5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRCYXNlLmgiCiAjaW5jbHVkZSAiREZHVmFsdWVSZWNv
dmVyeU92ZXJyaWRlLmgiCisjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyLmgiCiAjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgogI2lu
Y2x1ZGUgIk9wZXJhbmRzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyLmgJKHJldmlzaW9uIDE1NjEzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDgg
KzMwLDggQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiREZHQXNzZW1ibHlI
ZWxwZXJzLmgiCi0jaW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiQXNzZW1i
bHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZHT1NS
RXhpdC5oIgogI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMuaCIKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCShyZXZp
c2lvbiAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICNpZiBFTkFC
TEUoREZHX0pJVCkKIAotI2luY2x1ZGUgIkRGR0NDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkND
YWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdp
c3RlckJhbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jl
Z2lzdGVyQmFuay5oCShyZXZpc2lvbiAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1JlZ2lzdGVyQmFuay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAj
aWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJG
UFJJbmZvLmgiCisjaW5jbHVkZSAiR1BSSW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKQEAgLTM1OCw2ICszNjAsOSBAQCBwcml2YXRlOgogICAgIE1hcEVudHJ5IG1f
ZGF0YVtOVU1fUkVHU107CiB9OwogCit0eXBlZGVmIFJlZ2lzdGVyQmFuazxHUFJJbmZvPjo6aXRl
cmF0b3IgZ3ByX2l0ZXJhdG9yOwordHlwZWRlZiBSZWdpc3RlckJhbms8RlBSSW5mbz46Oml0ZXJh
dG9yIGZwcl9pdGVyYXRvcjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyU2V0LmgJKHJldmlz
aW9uIDE1NjEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJTZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAKLSNpbmNsdWRlICJERkdGUFJJbmZvLmgiCi0jaW5jbHVkZSAiREZHR1BSSW5mby5oIgorI2lu
Y2x1ZGUgIkZQUkluZm8uaCIKKyNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL0Jp
dG1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE1NjEzNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiQ0NhbGxI
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgotI2luY2x1ZGUgIkRGR0ND
YWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRGR1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIgog
I2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lz
dGVyU2F2ZVBsYW4uaAkocmV2aXNpb24gMTU2MTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDgg
KzMxLDggQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgot
I2luY2x1ZGUgIkRGR0ZQUkluZm8uaCIKLSNpbmNsdWRlICJERkdHUFJJbmZvLmgiCisjaW5jbHVk
ZSAiRlBSSW5mby5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3Mu
Y3BwCShyZXZpc2lvbiAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCwxMCBAQAogCiAjaWYgRU5BQkxF
KERGR19KSVQpCiAKLSNpbmNsdWRlICJERkdDQ2FsbEhlbHBlcnMuaCIKLSNpbmNsdWRlICJERkdG
UFJJbmZvLmgiCi0jaW5jbHVkZSAiREZHR1BSSW5mby5oIgorI2luY2x1ZGUgIkNDYWxsSGVscGVy
cy5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRDb21waWxlci5oIgorI2luY2x1ZGUgIkZQUkluZm8u
aCIKKyNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwCShyZXZpc2lvbiAxNTYxMzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAotI2luY2x1ZGUg
IkRGR0ZQUkluZm8uaCIKLSNpbmNsdWRlICJERkdHUFJJbmZvLmgiCisjaW5jbHVkZSAiRlBSSW5m
by5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENBcmd1bWVudEdldHRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ0FyZ3VtZW50
R2V0dGVyLmgJKHJldmlzaW9uIDE1NjEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ0FyZ3VtZW50R2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAog
I2lmIEVOQUJMRShGVExfSklUKQogCi0jaW5jbHVkZSAiREZHQXNzZW1ibHlIZWxwZXJzLmgiCisj
aW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCiAjaW5jbHVkZSAiRlRMVmFsdWVGb3JtYXQuaCIK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewpAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUGVlayBvZmZzZXQgaXMgdGhlIG51bWJlciBvZiB0aGluZ3Mgb24gdGhlIHN0
YWNrIGJlbG93IHRoZSBmaXJzdCBhcmd1bWVudC4KICAgICAvLyBJdCB3aWxsIGJlIDEgaWYgeW91
IGhhdmVuJ3QgcHVzaGVkIG9yIHBvcHBlZCBhZnRlciB0aGUgY2FsbDsgaS5lLiB0aGUgb25seQog
ICAgIC8vIHRoaW5nIGlzIHRoZSByZXR1cm4gYWRkcmVzcy4KLSAgICBDQXJndW1lbnRHZXR0ZXIo
REZHOjpBc3NlbWJseUhlbHBlcnMmIGppdCwgaW50IHBlZWtPZmZzZXQgPSAxKQorICAgIENBcmd1
bWVudEdldHRlcihBc3NlbWJseUhlbHBlcnMmIGppdCwgaW50IHBlZWtPZmZzZXQgPSAxKQogICAg
ICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX3BlZWtPZmZzZXQocGVla09mZnNldCkKICAg
ICAgICAgLCBtX2dwckFyZ3VtZW50SW5kZXgoMCkKQEAgLTYyLDUyICs2Miw1MiBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KICAgICAKLSAgICB2b2lkIGxvYWROZXh0OChERkc6OkdQUlJlZyBkZXN0
aW5hdGlvbikKKyAgICB2b2lkIGxvYWROZXh0OChHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgewot
ICAgICAgICBBU1NFUlQoIWlzQXJndW1lbnRSZWdpc3RlcjxERkc6OkdQUkluZm8+KGRlc3RpbmF0
aW9uKSk7Ci0gICAgICAgIGlmIChtX2dwckFyZ3VtZW50SW5kZXggPCBERkc6OkdQUkluZm86Om51
bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoREZHOjpH
UFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobV9ncHJBcmd1bWVudEluZGV4KyspLCBkZXN0aW5h
dGlvbik7CisgICAgICAgIEFTU0VSVCghaXNBcmd1bWVudFJlZ2lzdGVyPEdQUkluZm8+KGRlc3Rp
bmF0aW9uKSk7CisgICAgICAgIGlmIChtX2dwckFyZ3VtZW50SW5kZXggPCBHUFJJbmZvOjpudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86
OnRvQXJndW1lbnRSZWdpc3RlcihtX2dwckFyZ3VtZW50SW5kZXgrKyksIGRlc3RpbmF0aW9uKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9qaXQu
bG9hZDgobmV4dEFkZHJlc3MoKSwgZGVzdGluYXRpb24pOwogICAgIH0KICAgICAKLSAgICB2b2lk
IGxvYWROZXh0MzIoREZHOjpHUFJSZWcgZGVzdGluYXRpb24pCisgICAgdm9pZCBsb2FkTmV4dDMy
KEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNBcmd1bWVudFJl
Z2lzdGVyPERGRzo6R1BSSW5mbz4oZGVzdGluYXRpb24pKTsKLSAgICAgICAgaWYgKG1fZ3ByQXJn
dW1lbnRJbmRleCA8IERGRzo6R1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykgewot
ICAgICAgICAgICAgbV9qaXQubW92ZShERkc6OkdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlciht
X2dwckFyZ3VtZW50SW5kZXgrKyksIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFpc0Fy
Z3VtZW50UmVnaXN0ZXI8R1BSSW5mbz4oZGVzdGluYXRpb24pKTsKKyAgICAgICAgaWYgKG1fZ3By
QXJndW1lbnRJbmRleCA8IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpIHsKKyAg
ICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG1fZ3ByQXJn
dW1lbnRJbmRleCsrKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkMzIobmV4dEFkZHJlc3MoKSwgZGVzdGlu
YXRpb24pOwogICAgIH0KICAgICAKLSAgICB2b2lkIGxvYWROZXh0NjQoREZHOjpHUFJSZWcgZGVz
dGluYXRpb24pCisgICAgdm9pZCBsb2FkTmV4dDY0KEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICB7
Ci0gICAgICAgIEFTU0VSVCghaXNBcmd1bWVudFJlZ2lzdGVyPERGRzo6R1BSSW5mbz4oZGVzdGlu
YXRpb24pKTsKLSAgICAgICAgaWYgKG1fZ3ByQXJndW1lbnRJbmRleCA8IERGRzo6R1BSSW5mbzo6
bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycykgewotICAgICAgICAgICAgbV9qaXQubW92ZShERkc6
OkdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihtX2dwckFyZ3VtZW50SW5kZXgrKyksIGRlc3Rp
bmF0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFpc0FyZ3VtZW50UmVnaXN0ZXI8R1BSSW5mbz4oZGVz
dGluYXRpb24pKTsKKyAgICAgICAgaWYgKG1fZ3ByQXJndW1lbnRJbmRleCA8IEdQUkluZm86Om51
bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5m
bzo6dG9Bcmd1bWVudFJlZ2lzdGVyKG1fZ3ByQXJndW1lbnRJbmRleCsrKSwgZGVzdGluYXRpb24p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2pp
dC5sb2FkNjQobmV4dEFkZHJlc3MoKSwgZGVzdGluYXRpb24pOwogICAgIH0KICAgICAKLSAgICB2
b2lkIGxvYWROZXh0UHRyKERGRzo6R1BSUmVnIGRlc3RpbmF0aW9uKQorICAgIHZvaWQgbG9hZE5l
eHRQdHIoR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgIHsKICAgICAgICAgbG9hZE5leHQ2NChkZXN0
aW5hdGlvbik7CiAgICAgfQogICAgIAotICAgIHZvaWQgbG9hZE5leHREb3VibGUoREZHOjpGUFJS
ZWcgZGVzdGluYXRpb24pCisgICAgdm9pZCBsb2FkTmV4dERvdWJsZShGUFJSZWcgZGVzdGluYXRp
b24pCiAgICAgewogICAgICAgICBBU1NFUlQoCi0gICAgICAgICAgICAhaXNBcmd1bWVudFJlZ2lz
dGVyPERGRzo6RlBSSW5mbz4oZGVzdGluYXRpb24pCi0gICAgICAgICAgICB8fCBkZXN0aW5hdGlv
biA9PSBERkc6OkZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgICAgICAhaXNBcmd1bWVu
dFJlZ2lzdGVyPEZQUkluZm8+KGRlc3RpbmF0aW9uKQorICAgICAgICAgICAgfHwgZGVzdGluYXRp
b24gPT0gRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKICAgICAgICAgCi0gICAgICAgIGlmIChtX2Zw
ckFyZ3VtZW50SW5kZXggPCBERkc6OkZQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMp
IHsKLSAgICAgICAgICAgIG1faml0Lm1vdmVEb3VibGUoREZHOjpGUFJJbmZvOjp0b0FyZ3VtZW50
UmVnaXN0ZXIobV9mcHJBcmd1bWVudEluZGV4KyspLCBkZXN0aW5hdGlvbik7CisgICAgICAgIGlm
IChtX2ZwckFyZ3VtZW50SW5kZXggPCBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJz
KSB7CisgICAgICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKEZQUkluZm86OnRvQXJndW1lbnRSZWdp
c3RlcihtX2ZwckFyZ3VtZW50SW5kZXgrKyksIGRlc3RpbmF0aW9uKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTExNSw4ICsxMTUsOCBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIAogICAgIHZvaWQgbG9hZE5leHRBbmRCb3goCi0gICAgICAgIFZhbHVlRm9ybWF0
LCBERkc6OkdQUlJlZyBkZXN0aW5hdGlvbiwKLSAgICAgICAgREZHOjpHUFJSZWcgc2NyYXRjaDEg
PSBJbnZhbGlkR1BSUmVnLCBERkc6OkdQUlJlZyBzY3JhdGNoMiA9IEludmFsaWRHUFJSZWcpOwor
ICAgICAgICBWYWx1ZUZvcm1hdCwgR1BSUmVnIGRlc3RpbmF0aW9uLAorICAgICAgICBHUFJSZWcg
c2NyYXRjaDEgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcgc2NyYXRjaDIgPSBJbnZhbGlkR1BSUmVn
KTsKIAogcHJpdmF0ZToKICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBuZXh0QWRkcmVzcygp
CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIChtX3BlZWtPZmZzZXQg
KyBtX3N0YWNrQXJndW1lbnRJbmRleCsrKSAqIHNpemVvZih2b2lkKikpOwogICAgIH0KICAgICAg
ICAgICAgIAotICAgIERGRzo6QXNzZW1ibHlIZWxwZXJzJiBtX2ppdDsKKyAgICBBc3NlbWJseUhl
bHBlcnMmIG1faml0OwogICAgIHVuc2lnbmVkIG1fcGVla09mZnNldDsKICAgICB1bnNpZ25lZCBt
X2dwckFyZ3VtZW50SW5kZXg7CiAgICAgdW5zaWduZWQgbV9mcHJBcmd1bWVudEluZGV4OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCShyZXZpc2lvbiAxNTYx
MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKICNpbmNsdWRl
ICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgotI2luY2x1ZGUgIkRGR0NDYWxsSGVscGVycy5oIgor
I2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1
ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkZUTEpJVENvZGUuaCIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFRodW5rR2VuZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VGh1bmtHZW5lcmF0b3IuaAkocmV2
aXNpb24gMTU2MTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VGh1bmtH
ZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTQgKzMwLDE0IEBACiAKICNpZiBFTkFC
TEUoRlRMX0pJVCkKIAotI2luY2x1ZGUgIkRGR0NDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkND
YWxsSGVscGVycy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIGNsYXNz
IFN0YXRlOwogc3RydWN0IE9TUkV4aXRDb21waWxhdGlvbkluZm87CiAKLWNsYXNzIEV4aXRUaHVu
a0dlbmVyYXRvciA6IHB1YmxpYyBERkc6OkNDYWxsSGVscGVycyB7CitjbGFzcyBFeGl0VGh1bmtH
ZW5lcmF0b3IgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKIHB1YmxpYzoKICAgICBFeGl0VGh1bmtH
ZW5lcmF0b3IoU3RhdGUmIHN0YXRlKTsKICAgICB+RXhpdFRodW5rR2VuZXJhdG9yKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE1NjEzNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCisjaW5jbHVkZSAiQ0NhbGxI
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVC
bG9ja1dpdGhKSVRUeXBlLmgiCi0jaW5jbHVkZSAiREZHQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiRlRMSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0
dWJzLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCShyZXZp
c2lvbiAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQog
Ci0jaW5jbHVkZSAiREZHR1BSSW5mby5oIgotI2luY2x1ZGUgIkRGR0ZQUkluZm8uaCIKKyNpbmNs
dWRlICJGUFJJbmZvLmgiCiAjaW5jbHVkZSAiRlRMT1NSRXhpdENvbXBpbGVyLmgiCisjaW5jbHVk
ZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlci5oIgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKworI2lmIEVOQUJMRShK
SVQpCisKK25hbWVzcGFjZSBKU0MgeworCitFeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJz
OjpleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCit7CisgICAgaWYg
KCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgcmV0dXJuIG1fY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCk7Cit9CisKK1ZlY3RvcjxCeXRlY29kZUFuZE1hY2hp
bmVPZmZzZXQ+JiBBc3NlbWJseUhlbHBlcnM6OmRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayog
Y29kZUJsb2NrKQoreworICAgIEFTU0VSVChjb2RlQmxvY2sgPT0gY29kZUJsb2NrLT5iYXNlbGlu
ZVZlcnNpb24oKSk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRDb2RlTWFwKCkpOworICAg
IAorICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dD4gPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fZGVjb2RlZENvZGVNYXBzLmFkZChjb2RlQmxvY2ss
IFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+KCkpOworICAgIAorICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKK30KKworI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKK3ZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjpzZXRTYW1wbGluZ0ZsYWcoaW50MzJfdCBmbGFnKQoreworICAgIEFTU0VSVChmbGFn
ID49IDEpOworICAgIEFTU0VSVChmbGFnIDw9IDMyKTsKKyAgICBvcjMyKFRydXN0ZWRJbW0zMigx
dSA8PCAoZmxhZyAtIDEpKSwgQWJzb2x1dGVBZGRyZXNzKFNhbXBsaW5nRmxhZ3M6OmFkZHJlc3NP
ZkZsYWdzKCkpKTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmNsZWFyU2FtcGxpbmdGbGFn
KGludDMyX3QgZmxhZykKK3sKKyAgICBBU1NFUlQoZmxhZyA+PSAxKTsKKyAgICBBU1NFUlQoZmxh
ZyA8PSAzMik7CisgICAgYW5kMzIoVHJ1c3RlZEltbTMyKH4oMXUgPDwgKGZsYWcgLSAxKSkpLCBB
YnNvbHV0ZUFkZHJlc3MoU2FtcGxpbmdGbGFnczo6YWRkcmVzc09mRmxhZ3MoKSkpOworfQorI2Vu
ZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgVVNFKEpTVkFMVUU2NCkKK3ZvaWQgQXNz
ZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0ludDMyKEdQUlJlZyBncHIpCit7CisjaWYgQ1BVKFg4
Nl82NCkKKyAgICBKdW1wIGNoZWNrSW50MzIgPSBicmFuY2g2NChCZWxvd09yRXF1YWwsIGdwciwg
VHJ1c3RlZEltbTY0KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhGRkZGRkZGRnUpKSk7CisgICAg
YnJlYWtwb2ludCgpOworICAgIGNoZWNrSW50MzIubGluayh0aGlzKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGdwcik7CisjZW5kaWYKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFz
c2VydElzSlNJbnQzMihHUFJSZWcgZ3ByKQoreworICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJh
bmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7
CisgICAgYnJlYWtwb2ludCgpOworICAgIGNoZWNrSlNJbnQzMi5saW5rKHRoaXMpOworfQorCit2
b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU051bWJlcihHUFJSZWcgZ3ByKQorewor
ICAgIEp1bXAgY2hlY2tKU051bWJlciA9IGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIGJyZWFrcG9p
bnQoKTsKKyAgICBjaGVja0pTTnVtYmVyLmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjpqaXRBc3NlcnRJc0pTRG91YmxlKEdQUlJlZyBncHIpCit7CisgICAgSnVtcCBjaGVj
a0pTSW50MzIgPSBicmFuY2g2NChBYm92ZU9yRXF1YWwsIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKTsKKyAgICBKdW1wIGNoZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KTsKKyAgICBjaGVja0pTSW50MzIubGluayh0aGlzKTsKKyAgICBicmVha3BvaW50KCk7CisgICAg
Y2hlY2tKU051bWJlci5saW5rKHRoaXMpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0
QXNzZXJ0SXNDZWxsKEdQUlJlZyBncHIpCit7CisgICAgSnVtcCBjaGVja0NlbGwgPSBicmFuY2hU
ZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGdwciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
KTsKKyAgICBicmVha3BvaW50KCk7CisgICAgY2hlY2tDZWxsLmxpbmsodGhpcyk7Cit9CisjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQordm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50
MzIoR1BSUmVnIGdwcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZ3ByKTsKK30KKwordm9pZCBBc3Nl
bWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNJbnQzMihHUFJSZWcgZ3ByKQoreworICAgIEp1bXAg
Y2hlY2tKU0ludDMyID0gYnJhbmNoMzIoRXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkludDMyVGFnKSk7CisgICAgYnJlYWtwb2ludCgpOworICAgIGNoZWNrSlNJbnQzMi5saW5rKHRo
aXMpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU051bWJlcihHUFJS
ZWcgZ3ByKQoreworICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoMzIoRXF1YWwsIGdwciwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CisgICAgSnVtcCBjaGVja0pTRG91Ymxl
ID0gYnJhbmNoMzIoQmVsb3csIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykp
OworICAgIGJyZWFrcG9pbnQoKTsKKyAgICBjaGVja0pTSW50MzIubGluayh0aGlzKTsKKyAgICBj
aGVja0pTRG91YmxlLmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRB
c3NlcnRJc0pTRG91YmxlKEdQUlJlZyBncHIpCit7CisgICAgSnVtcCBjaGVja0pTRG91YmxlID0g
YnJhbmNoMzIoQmVsb3csIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpOwor
ICAgIGJyZWFrcG9pbnQoKTsKKyAgICBjaGVja0pTRG91YmxlLmxpbmsodGhpcyk7Cit9CisKK3Zv
aWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0NlbGwoR1BSUmVnIGdwcikKK3sKKyAgICBK
dW1wIGNoZWNrQ2VsbCA9IGJyYW5jaDMyKEVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSk7CisgICAgYnJlYWtwb2ludCgpOworICAgIGNoZWNrQ2VsbC5saW5rKHRoaXMp
OworfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpCit7CisgICAgSnVtcCBjaGVja0NGUiA9IGJy
YW5jaFRlc3RQdHIoWmVybywgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFRydXN0ZWRJbW0z
Mig3KSk7CisgICAgYnJlYWtwb2ludCgpOworICAgIGNoZWNrQ0ZSLmxpbmsodGhpcyk7Cit9Cisj
ZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShKSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBB
c3NlbWJseUhlbHBlcnNfaAorI2RlZmluZSBBc3NlbWJseUhlbHBlcnNfaAorCisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCisjaW5jbHVkZSAiRlBSSW5mby5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRl
ICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJWTS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKwordHlwZWRlZiB2b2lkICgqVl9EZWJ1Z09wZXJhdGlvbl9F
UFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKik7CisKK2NsYXNzIEFzc2VtYmx5SGVscGVycyA6
IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CitwdWJsaWM6CisgICAgQXNzZW1ibHlIZWxwZXJzKFZN
KiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgICAgIDogbV92bSh2bSkKKyAgICAgICAg
LCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgICAgICwgbV9iYXNlbGluZUNvZGVCbG9jayhj
b2RlQmxvY2sgPyBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpIDogMCkKKyAgICB7CisgICAg
ICAgIGlmIChtX2NvZGVCbG9jaykgeworICAgICAgICAgICAgQVNTRVJUKG1fYmFzZWxpbmVDb2Rl
QmxvY2spOworICAgICAgICAgICAgQVNTRVJUKCFtX2Jhc2VsaW5lQ29kZUJsb2NrLT5hbHRlcm5h
dGl2ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2Jhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBl
KCkgPT0gSklUQ29kZTo6Tm9uZSB8fCBKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShtX2Jhc2VsaW5l
Q29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaygpIHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9CisgICAgVk0qIHZtKCkg
eyByZXR1cm4gbV92bTsgfQorICAgIEFzc2VtYmxlclR5cGVfVCYgYXNzZW1ibGVyKCkgeyByZXR1
cm4gbV9hc3NlbWJsZXI7IH0KKyAgICAKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQorICAg
IHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUlJlZyByZWcpCisgICAgewor
ICAgICAgICBwb3AocmVnKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBwdXNoKHJlZyk7CisgICAg
fQorCisgICAgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBwdXNoKGFkZHJlc3MpOworICAgIH0KKyNlbmRpZiAvLyBD
UFUoWDg2XzY0KSB8fCBDUFUoWDg2KQorCisjaWYgQ1BVKEFSTSkKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQorICAg
IHsKKyAgICAgICAgbW92ZShsaW5rUmVnaXN0ZXIsIHJlZyk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQg
cmVnKQorICAgIHsKKyAgICAgICAgbW92ZShyZWcsIGxpbmtSZWdpc3Rlcik7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgbGlua1JlZ2lz
dGVyKTsKKyAgICB9CisjZW5kaWYKKworI2lmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAg
eworICAgICAgICBtb3ZlKHJldHVybkFkZHJlc3NSZWdpc3RlciwgcmVnKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVn
aXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtb3ZlKHJlZywgcmV0dXJuQWRkcmVzc1JlZ2lz
dGVyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihh
ZGRyZXNzLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworICAgIH0KKyNlbmRpZgorCisjaWYgQ1BV
KFNINCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RzcHIocmVn
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
ZHNwcihyZWcpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBsb2Fk
UHRyTGlua1JlZyhhZGRyZXNzKTsKKyAgICB9CisjZW5kaWYKKworICAgIHZvaWQgZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnks
IEdQUlJlZyB0bykKKyAgICB7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOworICAgIH0KKyAg
ICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihHUFJSZWcgZnJvbSwgSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIHN0b3JlNjQoZnJvbSwgQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50
cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CisjZWxzZQorICAgICAgICBzdG9yZTMyKGZyb20sIEFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVy
KSkpOworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBlbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJh
bWVIZWFkZXIodm9pZCogdmFsdWUsIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5
KQorICAgIHsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cih2YWx1ZSksIEFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoSWZOb3RDZWxsKEdQUlJlZyByZWcpCisgICAgeworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIHJlZywgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyNlbHNlCisgICAg
ICAgIHJldHVybiBicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHJlZywgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAgICBzdGF0
aWMgQWRkcmVzcyBhZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
dmlydHVhbFJlZ2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgfQorICAgIHN0YXRpYyBB
ZGRyZXNzIGFkZHJlc3NGb3IoaW50IG9wZXJhbmQpCisgICAgeworICAgICAgICByZXR1cm4gYWRk
cmVzc0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgQWRkcmVzcyB0YWdGb3IoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rl
cikKKyAgICB7CisgICAgICAgIHJldHVybiBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCB2aXJ0dWFsUmVnaXN0ZXIgKiBzaXplb2YoUmVnaXN0ZXIpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICB9CisgICAgc3RhdGlj
IEFkZHJlc3MgdGFnRm9yKGludCBvcGVyYW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRhZ0Zv
cihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgQWRkcmVzcyBwYXlsb2FkRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgdmlydHVhbFJlZ2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgIH0KKyAgICBzdGF0
aWMgQWRkcmVzcyBwYXlsb2FkRm9yKGludCBvcGVyYW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHBheWxvYWRGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hJZk5vdE9iamVjdChHUFJSZWcgc3RydWN0dXJlUmVnKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3Moc3RydWN0dXJlUmVnLCBT
dHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgR1BSUmVnIHNlbGVjdFNjcmF0Y2hHUFIoR1BSUmVnIHBy
ZXNlcnZlMSA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTIgPSBJbnZhbGlkR1BSUmVn
LCBHUFJSZWcgcHJlc2VydmUzID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlNCA9IElu
dmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBpZiAocHJlc2VydmUxICE9IEdQUkluZm86OnJl
Z1QwICYmIHByZXNlcnZlMiAhPSBHUFJJbmZvOjpyZWdUMCAmJiBwcmVzZXJ2ZTMgIT0gR1BSSW5m
bzo6cmVnVDAgJiYgcHJlc2VydmU0ICE9IEdQUkluZm86OnJlZ1QwKQorICAgICAgICAgICAgcmV0
dXJuIEdQUkluZm86OnJlZ1QwOworCisgICAgICAgIGlmIChwcmVzZXJ2ZTEgIT0gR1BSSW5mbzo6
cmVnVDEgJiYgcHJlc2VydmUyICE9IEdQUkluZm86OnJlZ1QxICYmIHByZXNlcnZlMyAhPSBHUFJJ
bmZvOjpyZWdUMSAmJiBwcmVzZXJ2ZTQgIT0gR1BSSW5mbzo6cmVnVDEpCisgICAgICAgICAgICBy
ZXR1cm4gR1BSSW5mbzo6cmVnVDE7CisKKyAgICAgICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJbmZv
OjpyZWdUMiAmJiBwcmVzZXJ2ZTIgIT0gR1BSSW5mbzo6cmVnVDIgJiYgcHJlc2VydmUzICE9IEdQ
UkluZm86OnJlZ1QyICYmIHByZXNlcnZlNCAhPSBHUFJJbmZvOjpyZWdUMikKKyAgICAgICAgICAg
IHJldHVybiBHUFJJbmZvOjpyZWdUMjsKKworICAgICAgICBpZiAocHJlc2VydmUxICE9IEdQUklu
Zm86OnJlZ1QzICYmIHByZXNlcnZlMiAhPSBHUFJJbmZvOjpyZWdUMyAmJiBwcmVzZXJ2ZTMgIT0g
R1BSSW5mbzo6cmVnVDMgJiYgcHJlc2VydmU0ICE9IEdQUkluZm86OnJlZ1QzKQorICAgICAgICAg
ICAgcmV0dXJuIEdQUkluZm86OnJlZ1QzOworCisgICAgICAgIHJldHVybiBHUFJJbmZvOjpyZWdU
NDsKKyAgICB9CisKKyAgICAvLyBBZGQgYSBkZWJ1ZyBjYWxsLiBUaGlzIGNhbGwgaGFzIG5vIGVm
ZmVjdCBvbiBKSVQgY29kZSBleGVjdXRpb24gc3RhdGUuCisgICAgdm9pZCBkZWJ1Z0NhbGwoVl9E
ZWJ1Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQorICAgIHsKKyAgICAg
ICAgc2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAg
ICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IG1fdm0tPnNjcmF0Y2hCdWZmZXJGb3JT
aXplKHNjcmF0Y2hTaXplKTsKKyAgICAgICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZlciA9IHN0YXRp
Y19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnM7ICsraSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBzdG9yZTY0KEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOworI2Vsc2UKKyAgICAgICAgICAgIHN0b3Jl
MzIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7CisjZW5kaWYKKyAgICAgICAg
fQorCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyICsg
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICAgICAgc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgR1BSSW5mbzo6cmVnVDAp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVsbCBHQyBtYXJrIHBoYXNlIGhvdyBtdWNoIG9m
IHRoZSBzY3JhdGNoIGJ1ZmZlciBpcyBhY3RpdmUgZHVyaW5nIGNhbGwuCisgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSksIEdQUkluZm86
OnJlZ1QwKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIEdQ
UkluZm86OnJlZ1QwKTsKKworI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShNSVBT
KSB8fCBDUFUoU0g0KQorICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gg
PSBzZWxlY3RTY3JhdGNoR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworI2VsaWYgQ1BVKFg4NikKKyAgICAgICAg
cG9rZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7CisgICAgICAgIHBva2UoVHJ1c3Rl
ZEltbVB0cihhcmd1bWVudCksIDEpOworICAgICAgICBwb2tlKFRydXN0ZWRJbW1QdHIoYnVmZmVy
KSwgMik7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gR1BSSW5mbzo6cmVnVDA7CisjZWxzZQor
I2Vycm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKKyNlbmRpZgorICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24p
KSwgc2NyYXRjaCk7CisgICAgICAgIGNhbGwoc2NyYXRjaCk7CisKKyAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBHUFJJbmZvOjpyZWdUMCk7
CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzOyArK2kpIHsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
ICAgICBsb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsK
KyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnM7ICsraSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBs
b2FkNjQoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisjZWxzZQorICAgICAg
ICAgICAgbG9hZDMyKGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworI2VuZGlm
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGVzZSBtZXRob2RzIEpJVCBnZW5lcmF0ZSBk
eW5hbWljLCBkZWJ1Zy1vbmx5IGNoZWNrcyAtIGFraW4gdG8gQVNTRVJUcy4KKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgdm9pZCBqaXRBc3NlcnRJc0ludDMyKEdQUlJlZyk7CisgICAgdm9pZCBq
aXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnKTsKKyAgICB2b2lkIGppdEFzc2VydElzSlNOdW1iZXIo
R1BSUmVnKTsKKyAgICB2b2lkIGppdEFzc2VydElzSlNEb3VibGUoR1BSUmVnKTsKKyAgICB2b2lk
IGppdEFzc2VydElzQ2VsbChHUFJSZWcpOworICAgIHZvaWQgaml0QXNzZXJ0SGFzVmFsaWRDYWxs
RnJhbWUoKTsKKyNlbHNlCisgICAgdm9pZCBqaXRBc3NlcnRJc0ludDMyKEdQUlJlZykgeyB9Cisg
ICAgdm9pZCBqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnKSB7IH0KKyAgICB2b2lkIGppdEFzc2Vy
dElzSlNOdW1iZXIoR1BSUmVnKSB7IH0KKyAgICB2b2lkIGppdEFzc2VydElzSlNEb3VibGUoR1BS
UmVnKSB7IH0KKyAgICB2b2lkIGppdEFzc2VydElzQ2VsbChHUFJSZWcpIHsgfQorICAgIHZvaWQg
aml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKSB7IH0KKyNlbmRpZgorCisgICAgLy8gVGhlc2Ug
bWV0aG9kcyBjb252ZXJ0IGJldHdlZW4gZG91YmxlcywgYW5kIGRvdWJsZXMgYm94ZWQgYW5kIEpT
VmFsdWVzLgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgR1BSUmVnIGJveERvdWJsZShGUFJSZWcg
ZnByLCBHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZVRvNjQoZnByLCBncHIp
OworICAgICAgICBzdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdwcik7Cisg
ICAgICAgIGppdEFzc2VydElzSlNEb3VibGUoZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAg
ICB9CisgICAgRlBSUmVnIHVuYm94RG91YmxlKEdQUlJlZyBncHIsIEZQUlJlZyBmcHIpCisgICAg
eworICAgICAgICBqaXRBc3NlcnRJc0pTRG91YmxlKGdwcik7CisgICAgICAgIGFkZDY0KEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByKTsKKyAgICAgICAgbW92ZTY0VG9Eb3VibGUo
Z3ByLCBmcHIpOworICAgICAgICByZXR1cm4gZnByOworICAgIH0KKyAgICAKKyAgICB2b2lkIGJv
eEludDUyKEdQUlJlZyBzb3VyY2UsIEdQUlJlZyB0YXJnZXQsIEdQUlJlZyBzY3JhdGNoLCBGUFJS
ZWcgZnBTY3JhdGNoKQorICAgIHsKKyAgICAgICAgLy8gSXMgaXQgYW4gaW50MzI/CisgICAgICAg
IHNpZ25FeHRlbmQzMlRvUHRyKHNvdXJjZSwgc2NyYXRjaCk7CisgICAgICAgIEp1bXAgaXNJbnQz
MiA9IGJyYW5jaDY0KEVxdWFsLCBzb3VyY2UsIHNjcmF0Y2gpOworICAgICAgICAKKyAgICAgICAg
Ly8gTm9wZSwgaXQncyBub3QsIGJ1dCByZWdUMCBjb250YWlucyB0aGUgaW50NjQgdmFsdWUuCisg
ICAgICAgIGNvbnZlcnRJbnQ2NFRvRG91YmxlKHNvdXJjZSwgZnBTY3JhdGNoKTsKKyAgICAgICAg
Ym94RG91YmxlKGZwU2NyYXRjaCwgdGFyZ2V0KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVtcCgp
OworICAgICAgICAKKyAgICAgICAgaXNJbnQzMi5saW5rKHRoaXMpOworICAgICAgICB6ZXJvRXh0
ZW5kMzJUb1B0cihzb3VyY2UsIHRhcmdldCk7CisgICAgICAgIG9yNjQoR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyLCB0YXJnZXQpOworICAgICAgICAKKyAgICAgICAgZG9uZS5saW5rKHRo
aXMpOworICAgIH0KKyNlbmRpZgorCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICB2b2lkIGJv
eERvdWJsZShGUFJSZWcgZnByLCBHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKKyAg
ICB7CisgICAgICAgIG1vdmVEb3VibGVUb0ludHMoZnByLCBwYXlsb2FkR1BSLCB0YWdHUFIpOwor
ICAgIH0KKyAgICB2b2lkIHVuYm94RG91YmxlKEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2Fk
R1BSLCBGUFJSZWcgZnByLCBGUFJSZWcgc2NyYXRjaEZQUikKKyAgICB7CisgICAgICAgIG1vdmVJ
bnRzVG9Eb3VibGUocGF5bG9hZEdQUiwgdGFnR1BSLCBmcHIsIHNjcmF0Y2hGUFIpOworICAgIH0K
KyNlbmRpZgorICAgIAorICAgIGVudW0gRXhjZXB0aW9uQ2hlY2tLaW5kIHsgTm9ybWFsRXhjZXB0
aW9uQ2hlY2ssIEludmVydGVkRXhjZXB0aW9uQ2hlY2sgfTsKKyAgICBKdW1wIGVtaXRFeGNlcHRp
b25DaGVjayhFeGNlcHRpb25DaGVja0tpbmQga2luZCA9IE5vcm1hbEV4Y2VwdGlvbkNoZWNrKQor
ICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBicmFuY2hUZXN0NjQoa2luZCA9
PSBOb3JtYWxFeGNlcHRpb25DaGVjayA/IE5vblplcm8gOiBaZXJvLCBBYnNvbHV0ZUFkZHJlc3Mo
dm0oKS0+YWRkcmVzc09mRXhjZXB0aW9uKCkpKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgcmV0dXJuIGJyYW5jaDMyKGtpbmQgPT0gTm9ybWFsRXhjZXB0aW9uQ2hlY2sgPyBOb3RFcXVh
bCA6IEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odm0oKS0+
YWRkcmVzc09mRXhjZXB0aW9uKCkpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnRhZykpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworI2VuZGlmCisg
ICAgfQorCisjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQorICAgIHN0YXRpYyB2b2lkIGVt
aXRDb3VudChNYWNyb0Fzc2VtYmxlciYgaml0LCBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291
bnRlciwgaW50MzJfdCBpbmNyZW1lbnQgPSAxKQorICAgIHsKKyAgICAgICAgaml0LmFkZDY0KFRy
dXN0ZWRJbW0zMihpbmNyZW1lbnQpLCBBYnNvbHV0ZUFkZHJlc3MoY291bnRlci5hZGRyZXNzT2ZD
b3VudGVyKCkpKTsKKyAgICB9CisgICAgdm9pZCBlbWl0Q291bnQoQWJzdHJhY3RTYW1wbGluZ0Nv
dW50ZXImIGNvdW50ZXIsIGludDMyX3QgaW5jcmVtZW50ID0gMSkKKyAgICB7CisgICAgICAgIGFk
ZDY0KFRydXN0ZWRJbW0zMihpbmNyZW1lbnQpLCBBYnNvbHV0ZUFkZHJlc3MoY291bnRlci5hZGRy
ZXNzT2ZDb3VudGVyKCkpKTsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShTQU1QTElOR19G
TEFHUykKKyAgICB2b2lkIHNldFNhbXBsaW5nRmxhZyhpbnQzMl90KTsKKyAgICB2b2lkIGNsZWFy
U2FtcGxpbmdGbGFnKGludDMyX3QgZmxhZyk7CisjZW5kaWYKKworICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3RGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7CisgICAgfQor
ICAgIAorICAgIGJvb2wgc3RyaWN0TW9kZUZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCisgICAg
eworICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAg
cmV0dXJuIGNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKTsKKyAgICAgICAgcmV0dXJuIGpzQ2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0
YWJsZS5nZXQoKSktPmlzU3RyaWN0TW9kZSgpOworICAgIH0KKyAgICAKKyAgICBFeGVjdXRhYmxl
QmFzZSogZXhlY3V0YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKTsKKyAgICAK
KyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNv
ZGVPcmlnaW4pCisgICAgeworICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmln
aW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jaygpKTsK
KyAgICB9CisgICAgCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvcihJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKKyAgICB7CisgICAgICAgIGlmICghaW5saW5lQ2Fs
bEZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrKCk7CisgICAgICAg
IHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJh
bWUpOworICAgIH0KKyAgICAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2Jhc2VsaW5lQ29kZUJsb2NrOworICAgIH0KKyAgICAKKyAg
ICBpbnQgYXJndW1lbnRzUmVnaXN0ZXJGb3IoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJh
bWUpCisgICAgeworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJl
dHVybiBjb2RlQmxvY2soKS0+YXJndW1lbnRzUmVnaXN0ZXIoKTsKKyAgICAgICAgCisgICAgICAg
IHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZSgKKyAgICAgICAgICAg
IGlubGluZUNhbGxGcmFtZSktPmFyZ3VtZW50c1JlZ2lzdGVyKCkgKyBpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0OworICAgIH0KKyAgICAKKyAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXJGb3Io
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICB7CisgICAgICAgIHJldHVybiBhcmd1
bWVudHNSZWdpc3RlckZvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgfQorICAg
IAorICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZUZvcihjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9y
KGNvZGVPcmlnaW4pLT5zeW1ib2xUYWJsZSgpOworICAgIH0KKworICAgIGludCBvZmZzZXRPZkxv
Y2Fscyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgaWYgKCFj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICogc2l6ZW9m
KFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICBpbnQgb2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdU
aGlzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCisgICAgeworICAgICAgICBpZiAoIWNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6
YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApICogc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAg
ICAgcmV0dXJuIChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxs
RnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSkgKiBzaXplb2YoUmVnaXN0ZXIp
OworICAgIH0KKworICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBkZWNvZGVk
Q29kZU1hcEZvcihDb2RlQmxvY2sqKTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBWTSogbV92bTsK
KyAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOworICAgIENvZGVCbG9jayogbV9iYXNlbGluZUNv
ZGVCbG9jazsKKworICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFj
aGluZU9mZnNldD4gPiBtX2RlY29kZWRDb2RlTWFwczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEFzc2VtYmx5SGVscGVyc19o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ0NhbGxIZWxwZXJzX2gKKyNkZWZpbmUgQ0NhbGxI
ZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkK
KworI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhl
bHBlcnMgeworcHVibGljOgorICAgIENDYWxsSGVscGVycyhWTSogdm0sIENvZGVCbG9jayogY29k
ZUJsb2NrID0gMCkKKyAgICAgICAgOiBBc3NlbWJseUhlbHBlcnModm0sIGNvZGVCbG9jaykKKyAg
ICB7CisgICAgfQorCisgICAgLy8gVGhlc2UgbWV0aG9kcyB1c2VkIHRvIHNvcnQgYXJndW1lbnRz
IGludG8gdGhlIGNvcnJlY3QgcmVnaXN0ZXJzLgorICAgIC8vIE9uIFg4NiB3ZSB1c2UgY2RlY2wg
Y2FsbGluZyBjb252ZW50aW9ucywgd2hpY2ggcGFzcyBhbGwgYXJndW1lbnRzIG9uIHRoZQorICAg
IC8vIHN0YWNrLiBPbiBvdGhlciBhcmNoaXRlY3R1cmVzIHdlIG1heSBuZWVkIHRvIHNvcnQgdmFs
dWVzIGludG8gdGhlCisgICAgLy8gY29ycmVjdCByZWdpc3RlcnMuCisjaWYgIU5VTUJFUl9PRl9B
UkdVTUVOVF9SRUdJU1RFUlMKKyAgICB1bnNpZ25lZCBtX2NhbGxBcmd1bWVudE9mZnNldDsKKyAg
ICB2b2lkIHJlc2V0Q2FsbEFyZ3VtZW50cygpIHsgbV9jYWxsQXJndW1lbnRPZmZzZXQgPSAwOyB9
CisKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2luZyBpbnRlcm5hbGx5IHRvIGltcGxlbWVu
dCB0aGUgY2FsbE9wZXJhdGlvbiBtZXRob2RzLgorICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEdQ
UlJlZyB2YWx1ZSkKKyAgICB7CisgICAgICAgIHBva2UodmFsdWUsIG1fY2FsbEFyZ3VtZW50T2Zm
c2V0KyspOworICAgIH0KKyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tMzIgaW1t
KQorICAgIHsKKyAgICAgICAgcG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOworICAg
IH0KKyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChUcnVzdGVkSW1tUHRyIHBvaW50ZXIpCisgICAg
eworICAgICAgICBwb2tlKHBvaW50ZXIsIG1fY2FsbEFyZ3VtZW50T2Zmc2V0KyspOworICAgIH0K
KyAgICB2b2lkIGFkZENhbGxBcmd1bWVudChGUFJSZWcgdmFsdWUpCisgICAgeworICAgICAgICBz
dG9yZURvdWJsZSh2YWx1ZSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgbV9jYWxsQXJn
dW1lbnRPZmZzZXQgKiBzaXplb2Yodm9pZCopKSk7CisgICAgICAgIG1fY2FsbEFyZ3VtZW50T2Zm
c2V0ICs9IHNpemVvZihkb3VibGUpIC8gc2l6ZW9mKHZvaWQqKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisgICAgeworICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJn
MSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Mik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEdQUlJl
ZyBhcmcxKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFk
ZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgcmVz
ZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0ciBhcmcxKQorICAgIHsKKyAgICAgICAg
cmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKQor
ICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKKyAgICB7
CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
MSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1
bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzEpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1Q
dHIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFy
Z3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7
CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
MSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJn
MSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0
ZWRJbW1QdHIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50
cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHJlc2V0Q2Fs
bEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgewor
ICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmcz
KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW1QdHIg
YXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczKQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1l
bnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcz
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmcz
LCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIg
YXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxs
QXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisg
ICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCisgICAg
eworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAg
ICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcz
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1Q
dHIgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVk
SW1tMzIgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
NCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmcz
LCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQo
YXJnNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcg
YXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsK
KyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Mik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzQpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Myk7CisgICAgfQorI2VuZGlmIC8vICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCisgICAg
Ly8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24g
dGhhdCBwcm92aWRlcyBmb3IKKyAgICAvLyBhdCBsZWFzdCA0IGFyZ3VtZW50IHJlZ2lzdGVycywg
ZS5nLiBYODZfNjQsIEFSTXY3LgorI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0g
NAorICAgIHRlbXBsYXRlPEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCPgorICAgIHZvaWQgc2V0
dXBUd29TdHViQXJncyhHUFJSZWcgc3JjQSwgR1BSUmVnIHNyY0IpCisgICAgeworICAgICAgICAv
LyBBc3N1bWluZyB0aGF0IHNyY0EgIT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3Rh
dGVzIHRoZSByZWdpc3RlcnMgbWF5IGJlIGluOgorICAgICAgICAvLyAoMSkgYm90aCBhcmUgYWxy
ZWFkeSBpbiBhcmcgcmVncywgdGhlIHJpZ2h0IHdheSBhcm91bmQuCisgICAgICAgIC8vICgyKSBi
b3RoIGFyZSBhbHJlYWR5IGluIGFyZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4KKyAgICAg
ICAgLy8gKDMpIG5laXRoZXIgYXJlIGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgorICAgICAg
ICAvLyAoNCkgc3JjQSBpbiBpbiBpdHMgY29ycmVjdCByZWcuCisgICAgICAgIC8vICg1KSBzcmNB
IGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgorICAgICAgICAvLyAoNikgc3JjQiBpbiBpbiBpdHMg
Y29ycmVjdCByZWcuCisgICAgICAgIC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJlY3QgcmVn
LgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0byBzaW1w
bHkgZW1pdCB0d28gbW92ZXMsIHRvIHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBpbgorICAg
ICAgICAvLyBwbGFjZSAodGhlIE1hY3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRhbnQgbW92
ZXMpLiBUaGlzIGFwcG9yYWNoIHdpbGwgYmUgc2FmZSBpbgorICAgICAgICAvLyBjYXNlcyAxLCAz
LCA0LCA1LCA2LCBhbmQgaW4gY2FzZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBwcm9ibGVt
IGNhc2VzIGFyZSAyCisgICAgICAgIC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0IG1v
dmUgc3JjQiBmaXJzdCwgdG8gYXZvaWQgdHJhbXBsaW5nLikKKworICAgICAgICBpZiAoc3JjQiAh
PSBkZXN0QSkgeworICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNp
bXBsZSBtb3Zlcy4KKyAgICAgICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOworICAgICAgICAgICAg
bW92ZShzcmNCLCBkZXN0Qik7CisgICAgICAgIH0gZWxzZSBpZiAoc3JjQSAhPSBkZXN0Qikgewor
ICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBub24tc3dhcCBjYXNlIC0ganVzdCBwdXQgc3JjQiBp
biBwbGFjZSBmaXJzdC4KKyAgICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIpOworICAgICAgICAg
ICAgbW92ZShzcmNBLCBkZXN0QSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3dhcChk
ZXN0QSwgZGVzdEIpOworICAgIH0KKyNpZiBDUFUoWDg2XzY0KQorICAgIHRlbXBsYXRlPEZQUlJl
ZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgorICAgIHZvaWQgc2V0dXBUd29TdHViQXJncyhGUFJSZWcg
c3JjQSwgRlBSUmVnIHNyY0IpCisgICAgeworICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHNyY0Eg
IT0gc3JjQiwgdGhlcmUgYXJlIDcgaW50ZXJlc3Rpbmcgc3RhdGVzIHRoZSByZWdpc3RlcnMgbWF5
IGJlIGluOgorICAgICAgICAvLyAoMSkgYm90aCBhcmUgYWxyZWFkeSBpbiBhcmcgcmVncywgdGhl
IHJpZ2h0IHdheSBhcm91bmQuCisgICAgICAgIC8vICgyKSBib3RoIGFyZSBhbHJlYWR5IGluIGFy
ZyByZWdzLCB0aGUgd3Jvbmcgd2F5IGFyb3VuZC4KKyAgICAgICAgLy8gKDMpIG5laXRoZXIgYXJl
IGN1cnJlbnRseSBpbiBhcmcgcmVnaXN0ZXJzLgorICAgICAgICAvLyAoNCkgc3JjQSBpbiBpbiBp
dHMgY29ycmVjdCByZWcuCisgICAgICAgIC8vICg1KSBzcmNBIGluIGluIHRoZSBpbmNvcnJlY3Qg
cmVnLgorICAgICAgICAvLyAoNikgc3JjQiBpbiBpbiBpdHMgY29ycmVjdCByZWcuCisgICAgICAg
IC8vICg3KSBzcmNCIGluIGluIHRoZSBpbmNvcnJlY3QgcmVnLgorICAgICAgICAvLworICAgICAg
ICAvLyBUaGUgdHJpdmlhbCBhcHByb2FjaCBpcyB0byBzaW1wbHkgZW1pdCB0d28gbW92ZXMsIHRv
IHB1dCBzcmNBIGluIHBsYWNlIHRoZW4gc3JjQiBpbgorICAgICAgICAvLyBwbGFjZSAodGhlIE1h
Y3JvQXNzZW1ibGVyIHdpbGwgb21pdCByZWR1bmRhbnQgbW92ZXMpLiBUaGlzIGFwcG9yYWNoIHdp
bGwgYmUgc2FmZSBpbgorICAgICAgICAvLyBjYXNlcyAxLCAzLCA0LCA1LCA2LCBhbmQgaW4gY2Fz
ZXMgd2hlcmUgc3JjQT09c3JjQi4gVGhlIHR3byBwcm9ibGVtIGNhc2VzIGFyZSAyCisgICAgICAg
IC8vIChyZXF1aXJlcyBhIHN3YXApIGFuZCA3IChtdXN0IG1vdmUgc3JjQiBmaXJzdCwgdG8gYXZv
aWQgdHJhbXBsaW5nLikKKworICAgICAgICBpZiAoc3JjQiAhPSBkZXN0QSkgeworICAgICAgICAg
ICAgLy8gSGFuZGxlIHRoZSBlYXN5IGNhc2VzIC0gdHdvIHNpbXBsZSBtb3Zlcy4KKyAgICAgICAg
ICAgIG1vdmVEb3VibGUoc3JjQSwgZGVzdEEpOworICAgICAgICAgICAgbW92ZURvdWJsZShzcmNC
LCBkZXN0Qik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChzcmNBICE9IGRlc3RCKSB7CisgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5vbi1z
d2FwIGNhc2UgLSBqdXN0IHB1dCBzcmNCIGluIHBsYWNlIGZpcnN0LgorICAgICAgICAgICAgbW92
ZURvdWJsZShzcmNCLCBkZXN0Qik7CisgICAgICAgICAgICBtb3ZlRG91YmxlKHNyY0EsIGRlc3RB
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChzcmNC
ID09IGRlc3RBICYmIHNyY0EgPT0gZGVzdEIpOworICAgICAgICAvLyBOZWVkIHRvIHN3YXA7IHBp
Y2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCisgICAgICAgIEZQUlJlZyB0ZW1wOworICAgICAgICBp
ZiAoZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIzICYmIGRlc3RBICE9IEZQUkluZm86OmFy
Z3VtZW50RlBSMykKKyAgICAgICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjM7Cisg
ICAgICAgIGVsc2UgaWYgKGRlc3RBICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMiAmJiBkZXN0QSAh
PSBGUFJJbmZvOjphcmd1bWVudEZQUjIpCisgICAgICAgICAgICB0ZW1wID0gRlBSSW5mbzo6YXJn
dW1lbnRGUFIyOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChkZXN0QSAhPSBG
UFJJbmZvOjphcmd1bWVudEZQUjEgJiYgZGVzdEEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsK
KyAgICAgICAgICAgIHRlbXAgPSBGUFJJbmZvOjphcmd1bWVudEZQUjE7CisgICAgICAgIH0KKyAg
ICAgICAgbW92ZURvdWJsZShkZXN0QSwgdGVtcCk7CisgICAgICAgIG1vdmVEb3VibGUoZGVzdEIs
IGRlc3RBKTsKKyAgICAgICAgbW92ZURvdWJsZSh0ZW1wLCBkZXN0Qik7CisgICAgfQorI2VuZGlm
CisgICAgdm9pZCBzZXR1cFN0dWJBcmd1bWVudHMoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQor
ICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMj4oYXJnMSwgYXJnMik7CisgICAgfQorICAgIHZvaWQgc2V0dXBT
dHViQXJndW1lbnRzKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAg
eworICAgICAgICAvLyBJZiBuZWl0aGVyIG9mIGFyZzIvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhl
biB3ZSBjYW4gbW92ZSBhcmcxIGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2FuIHVz
ZSBzZXR1cFR3b1N0dWJBcmdzIHRvIGZpeCBhcmcyL2FyZzMuCisgICAgICAgIGlmIChhcmcyICE9
IEdQUkluZm86OmFyZ3VtZW50R1BSMSAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMSkg
eworICAgICAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAg
ICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMz4oYXJnMiwgYXJnMyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICAvLyBJZiBuZWl0aGVyIG9mIGFyZzEvYXJnMyBhcmUgaW4gb3VyIHdheSwgdGhl
biB3ZSBjYW4gbW92ZSBhcmcyIGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2FuIHVz
ZSBzZXR1cFR3b1N0dWJBcmdzIHRvIGZpeCBhcmcxL2FyZzMuCisgICAgICAgIGlmIChhcmcxICE9
IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiBhcmczICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMikg
eworICAgICAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAg
ICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFy
Z3VtZW50R1BSMz4oYXJnMSwgYXJnMyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICAvLyBJZiBuZWl0aGVyIG9mIGFyZzEvYXJnMiBhcmUgaW4gb3VyIHdheSwgdGhl
biB3ZSBjYW4gbW92ZSBhcmczIGludG8gcGxhY2UuCisgICAgICAgIC8vIFRoZW4gd2UgY2FuIHVz
ZSBzZXR1cFR3b1N0dWJBcmdzIHRvIGZpeCBhcmcxL2FyZzIuCisgICAgICAgIGlmIChhcmcxICE9
IEdQUkluZm86OmFyZ3VtZW50R1BSMyAmJiBhcmcyICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMykg
eworICAgICAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAg
ICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFy
Z3VtZW50R1BSMj4oYXJnMSwgYXJnMik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gbW92
ZSBhbnkgb2YgYXJnMS9hcmcyL2FyZzMuCisgICAgICAgIC8vIFNpbmNlIGFsbCB0aHJlZSBhcmUg
YmxvY2tlZCwgdGhlbiBhbGwgdGhyZWUgbXVzdCBhbHJlYWR5IGJlIGluIHRoZSBhcmd1bWVudCBy
ZWdpc3Rlci4KKyAgICAgICAgLy8gQnV0IGFyZSB0aGV5IGluIHRoZSByaWdodCBvbmVzPworCisg
ICAgICAgIC8vIEZpcnN0LCBlbnN1cmUgYXJnMSBpcyBpbiBwbGFjZS4KKyAgICAgICAgaWYgKGFy
ZzEgIT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxKSB7CisgICAgICAgICAgICBzd2FwKGFyZzEsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CisKKyAgICAgICAgICAgIC8vIElmIGFyZzEgd2Fzbid0IGlu
IGFyZ3VtZW50R1BSMSwgb25lIG9mIGFyZzIvYXJnMyBtdXN0IGJlLgorICAgICAgICAgICAgQVNT
RVJUKGFyZzIgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxIHx8IGFyZzMgPT0gR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKKyAgICAgICAgICAgIC8vIElmIGFyZzIgd2FzIGluIGFyZ3VtZW50R1BSMSBp
dCBubyBsb25nZXIgaXMgKGR1ZSB0byB0aGUgc3dhcCkuCisgICAgICAgICAgICAvLyBPdGhlcndp
c2UgYXJnMyBtdXN0IGhhdmUgYmVlbi4gTWFyayBoaW0gYXMgbW92ZWQuCisgICAgICAgICAgICBp
ZiAoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEpCisgICAgICAgICAgICAgICAgYXJnMiA9
IGFyZzE7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXJnMyA9IGFyZzE7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBFaXRoZXIgYXJnMiAmIGFyZzMgbmVlZCBzd2FwcGluZywg
b3Igd2UncmUgYWxsIGRvbmUuCisgICAgICAgIEFTU0VSVCgoYXJnMiA9PSBHUFJJbmZvOjphcmd1
bWVudEdQUjIgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpCisgICAgICAgICAgICB8
fCAoYXJnMiA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMgfHwgYXJnMyA9PSBHUFJJbmZvOjphcmd1
bWVudEdQUjIpKTsKKworICAgICAgICBpZiAoYXJnMiAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjIp
CisgICAgICAgICAgICBzd2FwKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIzKTsKKyAgICB9CisKKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgUE9LRV9BUkdVTUVOVF9P
RkZTRVQgNAorI2Vsc2UKKyNkZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgMAorI2VuZGlmCisK
KyNpZiBDUFUoWDg2XzY0KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhG
UFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHVi
QXJnczxGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMT4oYXJnMSwg
YXJnMik7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAg
bW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBtb3ZlKGFy
ZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmczLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwg
YXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgfQorI2VsaWYgQ1BVKEFSTSkKKyNpZiBDUFUoQVJNX0hBUkRG
UCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisg
ICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcx
LCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjEpOworICAgICAgICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7
CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Cisg
ICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCisgICAgICAgICAg
ICBtb3ZlRG91YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMCwgQVJNUmVnaXN0ZXJzOjpkMik7Cisg
ICAgICAgICAgICBtb3ZlRG91YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoQVJNUmVnaXN0ZXJzOjpkMiwgRlBS
SW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBzZXR1
cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIsIEZQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMiwg
RlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVk
SW1tMzIsIEZQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmc0LCBGUFJJ
bmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJn
Mik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgfQorCisjZWxzZQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3Yo
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIGFyZzEpOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwg
RlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBhcmcxKTsKKyAgICAgICAgYXNzZW1i
bGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywg
YXJnMik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtb3Zl
KGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3Yo
R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIGFyZzEpOworICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKKyAgICB7Cisg
ICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
YXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQ
UjAsIGFyZzMpOworICAgICAgICBwb2tlKEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyIGFyZzEsIEZQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHBv
a2UoYXJnMywgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBtb3ZlKGFyZzEsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJn
dW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzIpOworICAgICAgICBtb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgRlBSUmVnIGFyZzQpCisg
ICAgeworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgYXNzZW1i
bGVyKCkudm1vdihHUFJJbmZvOjpub25BcmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIxLCBhcmc0
KTsKKyAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5UX09GRlNF
VCk7CisgICAgICAgIHBva2UoR1BSSW5mbzo6bm9uQXJnR1BSMSwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQgKyAxKTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKEFSTV9IQVJERlApCisjZWxpZiBDUFUoTUlQ
UykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisg
ICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcx
LCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjEpOworICAgICAgICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7
CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Cisg
ICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCisgICAgICAgICAg
ICBzd2FwRG91YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIx
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAg
ICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMywgYXJnMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHBva2UoYXJnMiwgNCk7CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBT
dHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBwb2tlKGFyZzMsIDQp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEZQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7
CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcyLCBhcmczKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEZQUlJlZyBhcmc0KQor
ICAgIHsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzQpOworICAgIH0KKyNlbGlmIENQVShTSDQpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzKEZQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBp
ZiAoYXJnMiAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjApIHsKKyAgICAgICAgICAgIG1vdmVEb3Vi
bGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUo
YXJnMiwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9
IEZQUkluZm86OmFyZ3VtZW50RlBSMSkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBG
UFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjApOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHN3YXBEb3Vi
bGUoRlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBh
cmczKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOworICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgfQorI2Vsc2UKKyNlcnJvciAiSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4i
CisjZW5kaWYKKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhHUFJSZWcg
YXJnMSkKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZv
Ojphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMT4oYXJnMSwgYXJnMik7CisgICAg
fQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1t
UHRyIGFyZzEpCisgICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRXhlY1N0
YXRlKCkKKyAgICB7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1v
dmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZShh
cmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIp
OworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMikKKyAgICB7Cisg
ICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShh
cmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyNpZiBDUFUoWDg2
XzY0KSAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tNjQgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUo
YXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW02NCBhcmcxLCBHUFJS
ZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEK
KyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IH0KKyNlbmRpZgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQorICAgIHsKKyAgICAgICAgbW92
ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEltbVB0ciBh
cmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwor
ICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOyAvLyBNb3ZlIHRoaXMgZmlyc3QsIHNvIHNldHRpbmcg
YXJnMSBkb2VzIG5vdCB0cmFtcGxlIQorICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcy
KQorICAgIHsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOyAvLyBN
b3ZlIHRoaXMgZmlyc3QsIHNvIHNldHRpbmcgYXJnMSBkb2VzIG5vdCB0cmFtcGxlIQorICAgICAg
ICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorICAg
IAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoSW1t
UHRyIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIpOyAvLyBNb3ZlIHRoaXMgZmlyc3QsIHNvIHNldHRpbmcgYXJnMSBkb2Vz
IG5vdCB0cmFtcGxlIQorICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAg
eworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1v
dmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyIGFyZzEsIFRydXN0ZWRJbW0zMiBh
cmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwor
ICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0
dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVw
U3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZvOjph
cmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcy
LCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6
YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjM+KGFyZzEsIGFyZzMpOworICAgICAg
ICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIG1vdmUoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMykKKyAgICB7CisgICAg
ICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFy
Z3VtZW50R1BSMyk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnMykKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIp
OworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1v
dmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisg
ICAgeworICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAg
IG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmczLCBH
UFJJbmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmd1bWVu
dHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIz
KTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BS
UmVnIGFyZzMpCisgICAgeworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BS
Myk7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAg
bW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAg
ICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1vdmUoYXJnMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBU
cnVzdGVkSW1tMzIgYXJnMykKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwor
ICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAg
ICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMz4oYXJnMiwgYXJnMyk7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBUd29TdHViQXJnczxHUFJJbmZvOjphcmd1
bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMiwgYXJnMyk7CisgICAgICAgIG1v
dmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgewor
ICAgICAgICBtb3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUo
YXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShhcmczLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjMpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJ
bW0zMiBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMykKKyAgICB7CisgICAgICAgIG1vdmUoYXJnMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIpOworICAgICAgICBtb3ZlKGFyZzMsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7Cisg
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgfQorCisjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+
PSA0CisgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNv
bnZlbnRpb24gdGhhdCBwcm92aWRlcyBmb3IKKyAgICAvLyBleGFjdGx5IDQgYXJndW1lbnQgcmVn
aXN0ZXJzLCBlLmcuIEFSTXY3LgorI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0g
NAorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7
CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKKyAgICB7Cisg
ICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
VHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCisgICAg
eworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBH
UFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQgKyAxKTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBh
cmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Cisg
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0z
MiBhcmc0LCBUcnVzdGVkSW1tMzIgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgUE9L
RV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5U
X09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVn
IGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VN
RU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRy
dXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVO
VF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJS
ZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJH
VU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJS
ZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVk
SW1tUHRyIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJn
MywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FS
R1VNRU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3Rl
ZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tF
X0FSR1VNRU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2Uo
YXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tF
X0FSR1VNRU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tMzIgYXJnNSkKKyAgICB7CisgICAgICAg
IHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICAgICAgcG9rZShhcmc0
LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCisgICAgewor
ICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBv
a2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3RlZEltbTMyIGFy
ZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7
CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJn
NCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRf
T0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRf
T0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Cisg
ICAgfQorCisjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0CisKKyNp
ZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDUKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRy
IGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHNl
dHVwVHdvU3R1YkFyZ3M8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjQ+KGFyZzEsIGFyZzQpOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CisgICAgICAgIG1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAg
bW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICB9CisjZW5kaWYKKworICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BS
UmVnIGRlc3RCKQorICAgIHsKKyAgICAgICAgR1BSUmVnIHNyY0EgPSBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUjsKKyAgICAgICAgR1BSUmVnIHNyY0IgPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjI7
CisKKyAgICAgICAgaWYgKGRlc3RBID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtb3Zl
KHNyY0IsIGRlc3RCKTsKKyAgICAgICAgZWxzZSBpZiAoZGVzdEIgPT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgICAgIG1vdmUoc3JjQSwgZGVzdEEpOworICAgICAgICBlbHNlIGlmIChzcmNCICE9
IGRlc3RBKSB7CisgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGVhc3kgY2FzZXMgLSB0d28gc2lt
cGxlIG1vdmVzLgorICAgICAgICAgICAgbW92ZShzcmNBLCBkZXN0QSk7CisgICAgICAgICAgICBt
b3ZlKHNyY0IsIGRlc3RCKTsKKyAgICAgICAgfSBlbHNlIGlmIChzcmNBICE9IGRlc3RCKSB7Cisg
ICAgICAgICAgICAvLyBIYW5kbGUgdGhlIG5vbi1zd2FwIGNhc2UgLSBqdXN0IHB1dCBzcmNCIGlu
IHBsYWNlIGZpcnN0LgorICAgICAgICAgICAgbW92ZShzcmNCLCBkZXN0Qik7CisgICAgICAgICAg
ICBtb3ZlKHNyY0EsIGRlc3RBKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzd2FwKGRl
c3RBLCBkZXN0Qik7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gQ0NhbGxIZWxwZXJzX2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ZQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEZQUkluZm9faAorI2RlZmluZSBGUFJJbmZvX2gKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
LmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit0
eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgRlBSUmVnOworI2RlZmluZSBJbnZh
bGlkRlBSUmVnICgoOjpKU0M6OkZQUlJlZyktMSkKKworI2lmIENQVShYODYpIHx8IENQVShYODZf
NjQpCisKK2NsYXNzIEZQUkluZm8geworcHVibGljOgorICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lz
dGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0g
ODsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEZQUlJl
ZyBmcFJlZ1QwID0gWDg2UmVnaXN0ZXJzOjp4bW0wOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcg
ZnBSZWdUMSA9IFg4NlJlZ2lzdGVyczo6eG1tMTsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZw
UmVnVDIgPSBYODZSZWdpc3RlcnM6OnhtbTI7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJl
Z1QzID0gWDg2UmVnaXN0ZXJzOjp4bW0zOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdU
NCA9IFg4NlJlZ2lzdGVyczo6eG1tNDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUg
PSBYODZSZWdpc3RlcnM6OnhtbTU7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAvLyBPbmx5IFg4Nl82
NCBwYXNzZXMgYWd1bWVudHMgaW4geG1tIHJlZ2lzdGVycworICAgIHN0YXRpYyBjb25zdCBGUFJS
ZWcgYXJndW1lbnRGUFIwID0gWDg2UmVnaXN0ZXJzOjp4bW0wOyAvLyBmcFJlZ1QwCisgICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBYODZSZWdpc3RlcnM6OnhtbTE7IC8vIGZw
UmVnVDEKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMiA9IFg4NlJlZ2lzdGVy
czo6eG1tMjsgLy8gZnBSZWdUMgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIz
ID0gWDg2UmVnaXN0ZXJzOjp4bW0zOyAvLyBmcFJlZ1QzCisjZW5kaWYKKyAgICAvLyBPbiBYODYg
dGhlIHJldHVybiB3aWxsIGFjdHVhbGx5IGJlIG9uIHRoZSB4ODcgc3RhY2ssCisgICAgLy8gc28g
d2UnbGwgY29weSB0byB4bW0wIGZvciBzYW5pdHkhCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBy
ZXR1cm5WYWx1ZUZQUiA9IFg4NlJlZ2lzdGVyczo6eG1tMDsgLy8gZnBSZWdUMAorCisgICAgLy8g
RlBSUmVnIG1hcHBpbmcgaXMgZGlyZWN0LCB0aGUgbWFjaGluZSByZWdzaXRlciBudW1iZXJzIGNh
bgorICAgIC8vIGJlIHVzZWQgZGlyZWN0bHkgYXMgaW5kaWNlcyBpbnRvIHRoZSBGUFIgUmVnaXN0
ZXJCYW5rLgorICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMCA9PSAwLCB4bW0w
X2lzXzApOworICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMSA9PSAxLCB4bW0x
X2lzXzEpOworICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMiA9PSAyLCB4bW0y
X2lzXzIpOworICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tMyA9PSAzLCB4bW0z
X2lzXzMpOworICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tNCA9PSA0LCB4bW00
X2lzXzQpOworICAgIENPTVBJTEVfQVNTRVJUKFg4NlJlZ2lzdGVyczo6eG1tNSA9PSA1LCB4bW01
X2lzXzUpOworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAg
ICB7CisgICAgICAgIHJldHVybiAoRlBSUmVnKWluZGV4OworICAgIH0KKyAgICBzdGF0aWMgdW5z
aWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25l
ZClyZWc7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBGUFJSZWcgdG9Bcmd1bWVudFJlZ2lzdGVy
KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIChGUFJSZWcpaW5kZXg7Cisg
ICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKKyNpZiBDUFUoWDg2XzY0
KQorICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOworICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJ4
bW0wIiwgInhtbTEiLCAieG1tMiIsICJ4bW0zIiwKKyAgICAgICAgICAgICJ4bW00IiwgInhtbTUi
LCAieG1tNiIsICJ4bW03IiwKKyAgICAgICAgICAgICJ4bW04IiwgInhtbTkiLCAieG1tMTAiLCAi
eG1tMTEiLAorICAgICAgICAgICAgInhtbTEyIiwgInhtbTEzIiwgInhtbTE0IiwgInhtbTE1Igor
ICAgICAgICB9OworI2VsaWYgQ1BVKFg4NikKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGlu
dD4ocmVnKSA8IDgpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVy
WzhdID0geworICAgICAgICAgICAgInhtbTAiLCAieG1tMSIsICJ4bW0yIiwgInhtbTMiLAorICAg
ICAgICAgICAgInhtbTQiLCAieG1tNSIsICJ4bW02IiwgInhtbTciCisgICAgICAgIH07CisjZW5k
aWYKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK307CisKKyNl
bmRpZgorCisjaWYgQ1BVKEFSTSkKKworY2xhc3MgRlBSSW5mbyB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1i
ZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIC8v
IGQ3IGlzIHVzZSBieSB0aGUgTWFjcm9Bc3NlbWJsZXIgYXMgZnBUZW1wUmVnaXN0ZXIuCisgICAg
c3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpkMDsKKyAgICBzdGF0
aWMgY29uc3QgRlBSUmVnIGZwUmVnVDEgPSBBUk1SZWdpc3RlcnM6OmQxOworICAgIHN0YXRpYyBj
b25zdCBGUFJSZWcgZnBSZWdUMiA9IEFSTVJlZ2lzdGVyczo6ZDI7CisgICAgc3RhdGljIGNvbnN0
IEZQUlJlZyBmcFJlZ1QzID0gQVJNUmVnaXN0ZXJzOjpkMzsKKyAgICBzdGF0aWMgY29uc3QgRlBS
UmVnIGZwUmVnVDQgPSBBUk1SZWdpc3RlcnM6OmQ0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcg
ZnBSZWdUNSA9IEFSTVJlZ2lzdGVyczo6ZDU7CisgICAgLy8gQVJNdjcgZG9lc24ndCBwYXNzIGFy
Z3VtZW50cyBpbiBmcCByZWdpc3RlcnMuIFRoZSByZXR1cm4KKyAgICAvLyB2YWx1ZSBpcyBhbHNv
IGFjdHVhbGx5IGluIGludGVnZXIgcmVnaXN0ZXJzLCBmb3Igbm93CisgICAgLy8gd2UnbGwgcmV0
dXJuIGluIGQwIGZvciBzaW1wbGljaXR5LgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJu
VmFsdWVGUFIgPSBBUk1SZWdpc3RlcnM6OmQwOyAvLyBmcFJlZ1QwCisKKyNpZiBDUFUoQVJNX0hB
UkRGUCkKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IEFSTVJlZ2lzdGVy
czo6ZDA7IC8vIGZwUmVnVDAKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9
IEFSTVJlZ2lzdGVyczo6ZDE7IC8vIGZwUmVnVDEKKyNlbmRpZgorCisgICAgLy8gRlBSUmVnIG1h
cHBpbmcgaXMgZGlyZWN0LCB0aGUgbWFjaGluZSByZWdzaXRlciBudW1iZXJzIGNhbgorICAgIC8v
IGJlIHVzZWQgZGlyZWN0bHkgYXMgaW5kaWNlcyBpbnRvIHRoZSBGUFIgUmVnaXN0ZXJCYW5rLgor
ICAgIENPTVBJTEVfQVNTRVJUKEFSTVJlZ2lzdGVyczo6ZDAgPT0gMCwgZDBfaXNfMCk7CisgICAg
Q09NUElMRV9BU1NFUlQoQVJNUmVnaXN0ZXJzOjpkMSA9PSAxLCBkMV9pc18xKTsKKyAgICBDT01Q
SUxFX0FTU0VSVChBUk1SZWdpc3RlcnM6OmQyID09IDIsIGQyX2lzXzIpOworICAgIENPTVBJTEVf
QVNTRVJUKEFSTVJlZ2lzdGVyczo6ZDMgPT0gMywgZDNfaXNfMyk7CisgICAgQ09NUElMRV9BU1NF
UlQoQVJNUmVnaXN0ZXJzOjpkNCA9PSA0LCBkNF9pc180KTsKKyAgICBDT01QSUxFX0FTU0VSVChB
Uk1SZWdpc3RlcnM6OmQ1ID09IDUsIGQ1X2lzXzUpOworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdp
c3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiAoRlBSUmVnKWluZGV4
OworICAgIH0KKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAh
PSBJbnZhbGlkRlBSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8
IDMyKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclszMl0gPSB7
CisgICAgICAgICAgICAiZDAiLCAiZDEiLCAiZDIiLCAiZDMiLAorICAgICAgICAgICAgImQ0Iiwg
ImQ1IiwgImQ2IiwgImQ3IiwKKyAgICAgICAgICAgICJkOCIsICJkOSIsICJkMTAiLCAiZDExIiwK
KyAgICAgICAgICAgICJkMTIiLCAiZDEzIiwgImQxNCIsICJkMTUiLAorICAgICAgICAgICAgImQx
NiIsICJkMTciLCAiZDE4IiwgImQxOSIsCisgICAgICAgICAgICAiZDIwIiwgImQyMSIsICJkMjIi
LCAiZDIzIiwKKyAgICAgICAgICAgICJkMjQiLCAiZDI1IiwgImQyNiIsICJkMjciLAorICAgICAg
ICAgICAgImQyOCIsICJkMjkiLCAiZDMwIiwgImQzMSIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0
dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK307CisKKyNlbmRpZgorCisjaWYgQ1BV
KE1JUFMpCisKK2NsYXNzIEZQUkluZm8geworcHVibGljOgorICAgIHR5cGVkZWYgRlBSUmVnIFJl
Z2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMg
PSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgRlBS
UmVnIGZwUmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjpmMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjpmNDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZw
UmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjpmNjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVn
VDMgPSBNSVBTUmVnaXN0ZXJzOjpmODsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDQg
PSBNSVBTUmVnaXN0ZXJzOjpmMTA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0g
TUlQU1JlZ2lzdGVyczo6ZjE4OworCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1
ZUZQUiA9IE1JUFNSZWdpc3RlcnM6OmYwOworCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1
bWVudEZQUjAgPSBNSVBTUmVnaXN0ZXJzOjpmMTI7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBh
cmd1bWVudEZQUjEgPSBNSVBTUmVnaXN0ZXJzOjpmMTQ7CisKKyAgICBzdGF0aWMgRlBSUmVnIHRv
UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgRlBS
UmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geworICAgICAgICAgICAg
ZnBSZWdUMCwgZnBSZWdUMSwgZnBSZWdUMiwgZnBSZWdUMywgZnBSZWdUNCwgZnBSZWdUNSB9Owor
CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0
dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25l
ZCB0b0luZGV4KEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFs
aWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMjApOworICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsyMF0gPSB7CisgICAgICAgICAgICAwLCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgMSwgSW52
YWxpZEluZGV4LCAyLCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICAzLCBJbnZhbGlkSW5kZXgs
IDQsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCA1LCBJbnZhbGlkSW5kZXgsCisgICAgICAgIH07CisgICAgICAgIHVuc2ln
bmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAgICAgQVNTRVJUKHJlc3Vs
dCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVnIHJlZykKKyAgICB7CisgICAgICAg
IEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAzMik7
CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbMzJdID0geworICAg
ICAgICAgICAgImYwIiwgImYxIiwgImYyIiwgImYzIiwKKyAgICAgICAgICAgICJmNCIsICJmNSIs
ICJmNiIsICJmNyIsCisgICAgICAgICAgICAiZjgiLCAiZjkiLCAiZjEwIiwgImYxMSIsCisgICAg
ICAgICAgICAiZjEyIiwgImYxMyIsICJmMTQiLCAiZjE1IgorICAgICAgICAgICAgImYxNiIsICJm
MTciLCAiZjE4IiwgImYxOSIKKyAgICAgICAgICAgICJmMjAiLCAiZjIxIiwgImYyMiIsICJmMjMi
CisgICAgICAgICAgICAiZjI0IiwgImYyNSIsICJmMjYiLCAiZjI3IgorICAgICAgICAgICAgImYy
OCIsICJmMjkiLCAiZjMwIiwgImYzMSIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVG
b3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCisjaWYgQ1BV
KFNINCkKKworY2xhc3MgRlBSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcgUmVn
aXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9
IDY7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBGUFJS
ZWcgZnBSZWdUMCA9IFNINFJlZ2lzdGVyczo6ZHIwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcg
ZnBSZWdUMSA9IFNINFJlZ2lzdGVyczo6ZHIyOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBS
ZWdUMiA9IFNINFJlZ2lzdGVyczo6ZHI0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdU
MyA9IFNINFJlZ2lzdGVyczo6ZHI2OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9
IFNINFJlZ2lzdGVyczo6ZHI4OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9IFNI
NFJlZ2lzdGVyczo6ZHIxMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFsdWVG
UFIgPSBTSDRSZWdpc3RlcnM6OmRyMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1l
bnRGUFIwID0gU0g0UmVnaXN0ZXJzOjpkcjQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1
bWVudEZQUjEgPSBTSDRSZWdpc3RlcnM6OmRyNjsKKworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdp
c3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcg
cmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7CisgICAgICAgICAgICBmcFJl
Z1QwLCBmcFJlZ1QxLCBmcFJlZ1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisKKyAg
ICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4g
cmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRv
SW5kZXgoRlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQ
UlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgIDAsIEludmFsaWRJ
bmRleCwgMSwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgMiwgSW52YWxpZEluZGV4LCAzLCBJ
bnZhbGlkSW5kZXgsCisgICAgICAgICAgICA0LCBJbnZhbGlkSW5kZXgsIDUsIEludmFsaWRJbmRl
eCwKKyAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleAorICAgICAgICB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRl
eEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciogZGVidWdOYW1lKEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJkcjAiLCAi
ZnIxIiwgImRyMiIsICJmcjMiLAorICAgICAgICAgICAgImRyNCIsICJmcjUiLCAiZHI2IiwgImZy
NyIsCisgICAgICAgICAgICAiZHI4IiwgImZyOSIsICJkcjEwIiwgImZyMTEiLAorICAgICAgICAg
ICAgImRyMTIiLCAiZnIxMyIsICJkcjE0IiwgImZyMTUiCisgICAgICAgIH07CisgICAgICAgIHJl
dHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisjZW5kaWYK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitpbmxpbmUgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6RlBSUmVnIHJlZykKK3sKKyNpZiBF
TkFCTEUoSklUKQorICAgIG91dC5wcmludCgiJSIsIEpTQzo6RlBSSW5mbzo6ZGVidWdOYW1lKHJl
ZykpOworI2Vsc2UKKyAgICBvdXQucHJpbnRmKCIlJWZyJWQiLCByZWcpOworI2VuZGlmCit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R1BSSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHUFJJbmZvX2gKKyNk
ZWZpbmUgR1BSSW5mb19oCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwordHlwZWRlZiBNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCBHUFJSZWc7CisjZGVmaW5lIEludmFsaWRHUFJSZWcgKCg6OkpT
Qzo6R1BSUmVnKS0xKQorCisjaWYgVVNFKEpTVkFMVUU2NCkKK2NsYXNzIEpTVmFsdWVSZWdzIHsK
K3B1YmxpYzoKKyAgICBKU1ZhbHVlUmVncygpCisgICAgICAgIDogbV9ncHIoSW52YWxpZEdQUlJl
ZykKKyAgICB7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IEpTVmFsdWVSZWdzKEdQUlJlZyBn
cHIpCisgICAgICAgIDogbV9ncHIoZ3ByKQorICAgIHsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IEpTVmFsdWVSZWdzIHBheWxvYWRPbmx5KEdQUlJlZyBncHIpCisgICAgeworICAgICAgICByZXR1
cm4gSlNWYWx1ZVJlZ3MoZ3ByKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiBtX2dwciA9PSBJbnZhbGlkR1BSUmVnOyB9CisgICAgCisgICAgR1BSUmVn
IGdwcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByOyB9CisgICAgR1BSUmVnIHBheWxvYWRHUFIoKSBj
b25zdCB7IHJldHVybiBtX2dwcjsgfQorICAgIAorcHJpdmF0ZToKKyAgICBHUFJSZWcgbV9ncHI7
Cit9OworCitjbGFzcyBKU1ZhbHVlU291cmNlIHsKK3B1YmxpYzoKKyAgICBKU1ZhbHVlU291cmNl
KCkKKyAgICAgICAgOiBtX29mZnNldChub3RBZGRyZXNzKCkpCisgICAgICAgICwgbV9iYXNlKElu
dmFsaWRHUFJSZWcpCisgICAgeworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlU291cmNlKEpTVmFs
dWVSZWdzIHJlZ3MpCisgICAgICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygpKQorICAgICAgICAs
IG1fYmFzZShyZWdzLmdwcigpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgSlNW
YWx1ZVNvdXJjZShHUFJSZWcgZ3ByKQorICAgICAgICA6IG1fb2Zmc2V0KG5vdEFkZHJlc3MoKSkK
KyAgICAgICAgLCBtX2Jhc2UoZ3ByKQorICAgIHsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZVNv
dXJjZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhZGRyZXNzKQorICAgICAgICA6IG1fb2Zmc2V0
KGFkZHJlc3Mub2Zmc2V0KQorICAgICAgICAsIG1fYmFzZShhZGRyZXNzLmJhc2UpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9vZmZzZXQgIT0gbm90QWRkcmVzcygpKTsKKyAgICAgICAgQVNTRVJU
KG1fYmFzZSAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIEpTVmFs
dWVTb3VyY2UgdW5ib3hlZENlbGwoR1BSUmVnIHBheWxvYWRHUFIpCisgICAgeworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVNvdXJjZShwYXlsb2FkR1BSKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2Jhc2UgPT0gSW52YWxpZEdQUlJlZzsgfQorICAg
IAorICAgIGJvb2wgaXNBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQgIT0gbm90QWRk
cmVzcygpOyB9CisgICAgCisgICAgaW50MzJfdCBvZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OworICAgIH0K
KyAgICAKKyAgICBHUFJSZWcgYmFzZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNB
ZGRyZXNzKCkpOworICAgICAgICByZXR1cm4gbV9iYXNlOworICAgIH0KKyAgICAKKyAgICBHUFJS
ZWcgZ3ByKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCghaXNBZGRyZXNzKCkpOworICAg
ICAgICByZXR1cm4gbV9iYXNlOworICAgIH0KKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyBhc0FkZHJlc3MoKSBjb25zdCB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlKCksIG9mZnNldCgpKTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgaW5saW5lIGlu
dDMyX3Qgbm90QWRkcmVzcygpIHsgcmV0dXJuIDB4ODAwMDAwMDA7IH0gICAgIAorICAgICAgICAg
IAorICAgIGludDMyX3QgbV9vZmZzZXQ7CisgICAgR1BSUmVnIG1fYmFzZTsKK307CisjZW5kaWYK
KworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCitjbGFzcyBKU1ZhbHVlUmVncyB7CitwdWJsaWM6Cisg
ICAgSlNWYWx1ZVJlZ3MoKQorICAgICAgICA6IG1fdGFnR1BSKHN0YXRpY19jYXN0PGludDhfdD4o
SW52YWxpZEdQUlJlZykpCisgICAgICAgICwgbV9wYXlsb2FkR1BSKHN0YXRpY19jYXN0PGludDhf
dD4oSW52YWxpZEdQUlJlZykpCisgICAgeworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlUmVncyhH
UFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKKyAgICAgICAgOiBtX3RhZ0dQUih0YWdH
UFIpCisgICAgICAgICwgbV9wYXlsb2FkR1BSKHBheWxvYWRHUFIpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgSlNWYWx1ZVJlZ3MgcGF5bG9hZE9ubHkoR1BSUmVnIGdwcikKKyAgICB7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhJbnZhbGlkR1BSUmVnLCBncHIpOworICAgIH0K
KyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R1BSUmVnPihtX3RhZ0dQUikgPT0gSW52YWxpZEdQUlJlZworICAgICAgICAg
ICAgJiYgc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWRHUFIpID09IEludmFsaWRHUFJSZWc7
CisgICAgfQorICAgIAorICAgIEdQUlJlZyB0YWdHUFIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxHUFJSZWc+KG1fdGFnR1BSKTsgfQorICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWRHUFIpOyB9CisgICAgR1BSUmVn
IGdwcihXaGljaFZhbHVlV29yZCB3aGljaCkgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
d2hpY2gpIHsKKyAgICAgICAgY2FzZSBUYWdXb3JkOgorICAgICAgICAgICAgcmV0dXJuIHRhZ0dQ
UigpOworICAgICAgICBjYXNlIFBheWxvYWRXb3JkOgorICAgICAgICAgICAgcmV0dXJuIHBheWxv
YWRHUFIoKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIHRhZ0dQUigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQ4X3QgbV90YWdH
UFI7CisgICAgaW50OF90IG1fcGF5bG9hZEdQUjsKK307CisKK2NsYXNzIEpTVmFsdWVTb3VyY2Ug
eworcHVibGljOgorICAgIEpTVmFsdWVTb3VyY2UoKQorICAgICAgICA6IG1fb2Zmc2V0KG5vdEFk
ZHJlc3MoKSkKKyAgICAgICAgLCBtX2Jhc2VPclRhZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFs
aWRHUFJSZWcpKQorICAgICAgICAsIG1fcGF5bG9hZChzdGF0aWNfY2FzdDxpbnQ4X3Q+KEludmFs
aWRHUFJSZWcpKQorICAgICAgICAsIG1fdGFnVHlwZSgwKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgSlNWYWx1ZVNvdXJjZShKU1ZhbHVlUmVncyByZWdzKQorICAgICAgICA6IG1fb2Zmc2V0KG5v
dEFkZHJlc3MoKSkKKyAgICAgICAgLCBtX2Jhc2VPclRhZyhyZWdzLnRhZ0dQUigpKQorICAgICAg
ICAsIG1fcGF5bG9hZChyZWdzLnBheWxvYWRHUFIoKSkKKyAgICAgICAgLCBtX3RhZ1R5cGUoMCkK
KyAgICB7CisgICAgfQorICAgIAorICAgIEpTVmFsdWVTb3VyY2UoR1BSUmVnIHRhZ0dQUiwgR1BS
UmVnIHBheWxvYWRHUFIpCisgICAgICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygpKQorICAgICAg
ICAsIG1fYmFzZU9yVGFnKHN0YXRpY19jYXN0PGludDhfdD4odGFnR1BSKSkKKyAgICAgICAgLCBt
X3BheWxvYWQoc3RhdGljX2Nhc3Q8aW50OF90PihwYXlsb2FkR1BSKSkKKyAgICAgICAgLCBtX3Rh
Z1R5cGUoMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIEpTVmFsdWVTb3VyY2UoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MgYWRkcmVzcykKKyAgICAgICAgOiBtX29mZnNldChhZGRyZXNzLm9mZnNl
dCkKKyAgICAgICAgLCBtX2Jhc2VPclRhZyhzdGF0aWNfY2FzdDxpbnQ4X3Q+KGFkZHJlc3MuYmFz
ZSkpCisgICAgICAgICwgbV9wYXlsb2FkKHN0YXRpY19jYXN0PGludDhfdD4oSW52YWxpZEdQUlJl
ZykpCisgICAgICAgICwgbV90YWdUeXBlKDApCisgICAgeworICAgICAgICBBU1NFUlQobV9vZmZz
ZXQgIT0gbm90QWRkcmVzcygpKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PEdQUlJlZz4o
bV9iYXNlT3JUYWcpICE9IEludmFsaWRHUFJSZWcpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMg
SlNWYWx1ZVNvdXJjZSB1bmJveGVkQ2VsbChHUFJSZWcgcGF5bG9hZEdQUikKKyAgICB7CisgICAg
ICAgIEpTVmFsdWVTb3VyY2UgcmVzdWx0OworICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBub3RB
ZGRyZXNzKCk7CisgICAgICAgIHJlc3VsdC5tX2Jhc2VPclRhZyA9IHN0YXRpY19jYXN0PGludDhf
dD4oSW52YWxpZEdQUlJlZyk7CisgICAgICAgIHJlc3VsdC5tX3BheWxvYWQgPSBzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KHBheWxvYWRHUFIpOworICAgICAgICByZXN1bHQubV90YWdUeXBlID0gc3RhdGlj
X2Nhc3Q8aW50OF90PihKU1ZhbHVlOjpDZWxsVGFnKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9iYXNlT3JUYWcpID09IEludmFsaWRHUFJSZWcK
KyAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PEdQUlJlZz4obV9wYXlsb2FkKSA9PSBJbnZhbGlk
R1BSUmVnOworICAgIH0KKyAgICAKKyAgICBib29sIGlzQWRkcmVzcygpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQoISEqdGhpcyk7CisgICAgICAgIHJldHVybiBtX29mZnNldCAhPSBub3RB
ZGRyZXNzKCk7CisgICAgfQorICAgIAorICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVChpc0FkZHJlc3MoKSk7CisgICAgICAgIHJldHVybiBtX29mZnNldDsK
KyAgICB9CisgICAgCisgICAgR1BSUmVnIGJhc2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKGlzQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9i
YXNlT3JUYWcpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVCghaXNBZGRyZXNzKCkgJiYgc3RhdGljX2Nhc3Q8R1BSUmVnPihtX2Jh
c2VPclRhZykgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
UFJSZWc+KG1fYmFzZU9yVGFnKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIHBheWxvYWRHUFIo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpc0FkZHJlc3MoKSk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fcGF5bG9hZCk7CisgICAgfQorICAgIAorICAgIGJv
b2wgaGFzS25vd25UYWcoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhKnRoaXMpOwor
ICAgICAgICBBU1NFUlQoIWlzQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdQUlJlZz4obV9iYXNlT3JUYWcpID09IEludmFsaWRHUFJSZWc7CisgICAgfQorICAgIAorICAg
IHVpbnQzMl90IHRhZygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50MzJfdD4obV90YWdUeXBlKTsKKyAgICB9CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MgYXNBZGRyZXNzKHVuc2lnbmVkIGFkZGl0aW9uYWxPZmZzZXQgPSAwKSBjb25zdCB7IHJl
dHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKCksIG9mZnNldCgpICsgYWRkaXRpb25h
bE9mZnNldCk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIGlubGluZSBpbnQzMl90IG5v
dEFkZHJlc3MoKSB7IHJldHVybiAweDgwMDAwMDAwOyB9ICAgICAKKyAgICAgICAgICAKKyAgICBp
bnQzMl90IG1fb2Zmc2V0OworICAgIGludDhfdCBtX2Jhc2VPclRhZzsKKyAgICBpbnQ4X3QgbV9w
YXlsb2FkOyAKKyAgICBpbnQ4X3QgbV90YWdUeXBlOyAvLyBDb250YWlucyB0aGUgbG93IGJpdHMg
b2YgdGhlIHRhZy4KK307CisjZW5kaWYKKworI2lmIENQVShYODYpCisjZGVmaW5lIE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgMAorCitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51
bWJlck9mUmVnaXN0ZXJzID0gNTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZB
cmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7CisKKyAgICAv
LyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAgPSBY
ODZSZWdpc3RlcnM6OmVheDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gWDg2UmVn
aXN0ZXJzOjplZHg7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IFg4NlJlZ2lzdGVy
czo6ZWN4OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBYODZSZWdpc3RlcnM6OmVi
eDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gWDg2UmVnaXN0ZXJzOjplc2k7Cisg
ICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWRpOworICAgIC8v
IFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9z
ZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyBhcmd1bWVudEdQUjAgPSBYODZSZWdpc3RlcnM6OmVjeDsgLy8gcmVnVDIKKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdU
MQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6ZWF4
OyAvLyByZWdUMAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IFg4NlJlZ2lz
dGVyczo6ZWJ4OyAvLyByZWdUMworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9
IFg4NlJlZ2lzdGVyczo6ZXNpOyAvLyByZWdUNAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKKyAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMQor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gWDg2UmVn
aXN0ZXJzOjplY3g7CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5k
ZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lz
dGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCB9OworICAgICAgICBy
ZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2ln
bmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52
YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJlZykgPCA4KTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbOF0gPSB7IDAs
IDIsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA0LCBJbnZhbGlkSW5kZXggfTsK
KyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAg
ICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNT
RVJUKHN0YXRpY19jYXN0PGludD4ocmVnKSA8IDgpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogbmFtZUZvclJlZ2lzdGVyWzhdID0geworICAgICAgICAgICAgImVheCIsICJlY3giLCAiZWR4
IiwgImVieCIsCisgICAgICAgICAgICAiZXNwIiwgImVicCIsICJlc2kiLCAiZWRpIiwKKyAgICAg
ICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZh
dGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZm
ZjsKK307CisKKyNlbmRpZgorCisjaWYgQ1BVKFg4Nl82NCkKKyNkZWZpbmUgTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA2CisKK2NsYXNzIEdQUkluZm8geworcHVibGljOgorICAgIHR5cGVk
ZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZSZWdpc3RlcnMgPSA5OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsKKworICAgIC8vIFRo
ZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgorICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTM7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OnIxNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHRhZ01hc2tSZWdpc3RlciA9IFg4NlJl
Z2lzdGVyczo6cjE1OworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDEgPSBYODZSZWdpc3RlcnM6OmVkeDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1QyID0gWDg2UmVnaXN0ZXJzOjplY3g7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
MyA9IFg4NlJlZ2lzdGVyczo6ZWJ4OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBY
ODZSZWdpc3RlcnM6OmVkaTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gWDg2UmVn
aXN0ZXJzOjplc2k7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNiA9IFg4NlJlZ2lzdGVy
czo6cjg7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNyA9IFg4NlJlZ2lzdGVyczo6cjk7
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOCA9IFg4NlJlZ2lzdGVyczo6cjEwOworICAg
IC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVy
cG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBYODZSZWdpc3RlcnM6OmVkaTsgLy8gcmVnVDQKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZXNpOyAvLyBy
ZWdUNQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gWDg2UmVnaXN0ZXJz
OjplZHg7IC8vIHJlZ1QxCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBY
ODZSZWdpc3RlcnM6OmVjeDsgLy8gcmVnVDIKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3Vt
ZW50R1BSNCA9IFg4NlJlZ2lzdGVyczo6cjg7ICAvLyByZWdUNgorICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgYXJndW1lbnRHUFI1ID0gWDg2UmVnaXN0ZXJzOjpyOTsgIC8vIHJlZ1Q3CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1Qw
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplYng7
IC8vIHJlZ1QzCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0gWDg2UmVnaXN0
ZXJzOjpyMTA7IC8vIHJlZ1Q4CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQ
UiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1QxCisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6OmVz
aTsKKworICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsg
cmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCBy
ZWdUOCB9OworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQor
ICAgIAorICAgIHN0YXRpYyBHUFJSZWcgdG9Bcmd1bWVudFJlZ2lzdGVyKHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
cyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJP
ZkFyZ3VtZW50UmVnaXN0ZXJzXSA9IHsgYXJndW1lbnRHUFIwLCBhcmd1bWVudEdQUjEsIGFyZ3Vt
ZW50R1BSMiwgYXJndW1lbnRHUFIzLCBhcmd1bWVudEdQUjQsIGFyZ3VtZW50R1BSNSB9OworICAg
ICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorICAgIAorICAgIHN0
YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQo
cmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50Pihy
ZWcpIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3Rl
clsxNl0gPSB7IDAsIDIsIDEsIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCA0LCA2
LCA3LCA4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZv
clJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
ZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFs
aWRHUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMTYpOwor
ICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAg
ICAgICAgICJyYXgiLCAicmN4IiwgInJkeCIsICJyYngiLAorICAgICAgICAgICAgInJzcCIsICJy
YnAiLCAicnNpIiwgInJkaSIsCisgICAgICAgICAgICAicjgiLCAicjkiLCAicjEwIiwgInIxMSIs
CisgICAgICAgICAgICAicjEyIiwgInIxMyIsICJyMTQiLCAicjE1IgorICAgICAgICB9OworICAg
ICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKwor
I2VuZGlmCisKKyNpZiBDUFUoQVJNKQorI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTIDQKKworY2xhc3MgR1BSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBHUFJSZWcgUmVn
aXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9
IDg7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMg
PSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lz
dGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpyMDsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpyMTsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gQVJNUmVnaXN0ZXJzOjpyMjsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ1QzID0gQVJNUmVnaXN0ZXJzOjpyNDsKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1Q0ID0gQVJNUmVnaXN0ZXJzOjpyODsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1Q1ID0gQVJNUmVnaXN0ZXJzOjpyOTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q2
ID0gQVJNUmVnaXN0ZXJzOjpyMTA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNyA9IEFS
TVJlZ2lzdGVyczo6cjExOworICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxp
bmUgSklULgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBy
ZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJl
Z1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk1SZWdp
c3RlcnM6OnI1OworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3Ig
dGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBBUk1SZWdpc3RlcnM6OnIwOyAv
LyByZWdUMAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gQVJNUmVnaXN0
ZXJzOjpyMTsgLy8gcmVnVDEKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9
IEFSTVJlZ2lzdGVyczo6cjI7IC8vIHJlZ1QyCisgICAgLy8gRklYTUU6IHIzIGlzIGN1cnJlbnRs
eSB1c2VkIGJlIHRoZSBNYWNyb0Fzc2VtYmxlciBhcyBhIHRlbXBvcmFyeSAtIGl0IHNlZW1zCisg
ICAgLy8gVGhpcyBjb3VsZCB0aHJlb3JldGljYWxseSBiZSBhIHByb2JsZW0gaWYgdGhpcyBpcyB1
c2VkIGluIGNvZGUgZ2VuZXJhdGlvbgorICAgIC8vIGJldHdlZW4gdGhlIGFyZ3VtZW50cyBiZWlu
ZyBzZXQgdXAsIGFuZCB0aGUgY2FsbCBiZWluZyBtYWRlLiBUaGF0IHNhaWQsCisgICAgLy8gYW55
IGNoYW5nZSBpbnRyb2R1Y2luZyBhIHByb2JsZW0gaGVyZSBpcyBsaWtlbHkgdG8gYmUgaW1tZWRp
YXRlbHkgYXBwYXJlbnQhCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBB
Uk1SZWdpc3RlcnM6OnIzOyAvLyBGSVhNRSEKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFy
Z0dQUjAgPSBBUk1SZWdpc3RlcnM6OnI0OyAvLyByZWdUMworICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgbm9uQXJnR1BSMSA9IEFSTVJlZ2lzdGVyczo6cjg7IC8vIHJlZ1Q0CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBub25BcmdHUFIyID0gQVJNUmVnaXN0ZXJzOjpyOTsgLy8gcmVnVDUKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gQVJNUmVnaXN0ZXJzOjpyMDsgLy8g
cmVnVDAKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IEFSTVJlZ2lz
dGVyczo6cjE7IC8vIHJlZ1QxCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWRO
b25SZXR1cm5HUFIgPSBBUk1SZWdpc3RlcnM6OnIyOworCisgICAgc3RhdGljIEdQUlJlZyB0b1Jl
Z2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVt
YmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9y
SW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywg
cmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9y
SW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJl
ZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlZykg
IT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cmVnKSA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0
ZXJbMTZdID0geyAwLCAxLCAyLCBJbnZhbGlkSW5kZXgsIDMsIEludmFsaWRJbmRleCwgSW52YWxp
ZEluZGV4LCBJbnZhbGlkSW5kZXgsIDQsIDUsIDYsIDcsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCB9OworICAgICAgICB1bnNpZ25lZCByZXN1
bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52
YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlZykgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFT
U0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVnKSA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAicjAiLCAicjEi
LCAicjIiLCAicjMiLAorICAgICAgICAgICAgInI0IiwgInI1IiwgInI2IiwgInI3IiwKKyAgICAg
ICAgICAgICJyOCIsICJyOSIsICJyMTAiLCAicjExIiwKKyAgICAgICAgICAgICJyMTIiLCAicjEz
IiwgInIxNCIsICJyMTUiCisgICAgICAgIH07CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0
ZXJbcmVnXTsKKyAgICB9Citwcml2YXRlOgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIElu
dmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisjZW5kaWYKKworI2lmIENQVShNSVBTKQor
I2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKKworY2xhc3MgR1BSSW5mbyB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVH
SVNURVJTOworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUMSA9IE1JUFNSZWdpc3RlcnM6OnYxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
VDIgPSBNSVBTUmVnaXN0ZXJzOjp0NDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0g
TUlQU1JlZ2lzdGVyczo6dDU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IE1JUFNS
ZWdpc3RlcnM6OnQ2OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBNSVBTUmVnaXN0
ZXJzOjp0NzsKKyAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4K
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gcmVnVDA7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSByZWdUMTsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6
czA7CisgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2Vu
ZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IE1JUFNSZWdpc3RlcnM6OmEwOworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gTUlQU1JlZ2lzdGVyczo6YTE7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBNSVBTUmVnaXN0ZXJzOjphMjsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IE1JUFNSZWdpc3RlcnM6OmEzOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1QyOworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1QzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
bm9uQXJnR1BSMiA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVH
UFIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IHJl
Z1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0g
cmVnVDU7CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10g
PSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUgfTsKKyAgICAgICAg
cmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNp
Z25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleCwgMiwgMywgNCwgNSB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBp
bmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZElu
ZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9
IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJ6ZXJv
IiwgImF0IiwgInYwIiwgInYxIiwKKyAgICAgICAgICAgICJhMCIsICJhMSIsICJhMiIsICJhMyIs
CisgICAgICAgICAgICAidDAiLCAidDEiLCAidDIiLCAidDMiLAorICAgICAgICAgICAgInQ0Iiwg
InQ1IiwgInQ2IiwgInQ3IgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lz
dGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJ
bnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKKyNpZiBDUFUoU0g0KQor
I2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKKworY2xhc3MgR1BSSW5mbyB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDEwOworCisgICAgLy8gVGVtcG9yYXJ5
IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gU0g0UmVnaXN0ZXJz
OjpyMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpyMTsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gU0g0UmVnaXN0ZXJzOjpyMjsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gU0g0UmVnaXN0ZXJzOjpyMTA7CisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyByZWdUNCA9IFNINFJlZ2lzdGVyczo6cjQ7CisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZWdUNSA9IFNINFJlZ2lzdGVyczo6cjU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUNiA9IFNINFJlZ2lzdGVyczo6cjY7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
NyA9IFNINFJlZ2lzdGVyczo6cjc7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOCA9IFNI
NFJlZ2lzdGVyczo6cjg7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOSA9IFNINFJlZ2lz
dGVyczo6cjk7CisgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQu
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFNINFJlZ2lzdGVyczo6
ZnA7CisgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2Vu
ZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgYXJndW1lbnRHUFIxID0gcmVnVDU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1
bWVudEdQUjIgPSByZWdUNjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9
IHJlZ1Q3OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1QzOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1Q4OworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uQXJnR1BSMiA9IHJlZ1Q5OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVl
R1BSMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0
dXJuR1BSID0gcmVnVDI7CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQg
aW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7
CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJl
Z2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJl
Z1Q2LCByZWdUNywgcmVnVDgsIHJlZ1Q5IH07CisgICAgICAgIHJldHVybiByZWdpc3RlckZvcklu
ZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChHUFJSZWcg
cmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAg
ICAgQVNTRVJUKHJlZyA8IDE0KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4
Rm9yUmVnaXN0ZXJbMTRdID0geyAwLCAxLCAyLCBJbnZhbGlkSW5kZXgsIDQsIDUsIDYsIDcsIDgs
IDksIDMsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyAgICAg
ICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NF
UlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJl
ZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0g
PSB7CisgICAgICAgICAgICAicjAiLCAicjEiLCAicjIiLCAicjMiLCAicjQiLCAicjUiLCAicjYi
LCAicjciLAorICAgICAgICAgICAgInI4IiwgInI5IiwgInIxMCIsICJyMTEiLCAicjEyIiwgInIx
MyIsICJyMTQiLCAicjE1IgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lz
dGVyW3JlZ107CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJ
bnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNl
IEpTQworCituYW1lc3BhY2UgV1RGIHsKKworaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBKU0M6OkdQUlJlZyByZWcpCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBv
dXQucHJpbnQoIiUiLCBKU0M6OkdQUkluZm86OmRlYnVnTmFtZShyZWcpKTsKKyNlbHNlCisgICAg
b3V0LnByaW50ZigiJSVyJWQiLCByZWcpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE1
NjEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzIsOSArNzIsOCBAQCB2b2lkIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhDb2Rl
QmxvCiB9CiAKIEpJVDo6SklUKFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgOiBt
X2ludGVycHJldGVyKHZtLT5pbnRlcnByZXRlcikKLSAgICAsIG1fdm0odm0pCi0gICAgLCBtX2Nv
ZGVCbG9jayhjb2RlQmxvY2spCisgICAgOiBKU0ludGVyZmFjZUpJVCh2bSwgY29kZUJsb2NrKQor
ICAgICwgbV9pbnRlcnByZXRlcih2bS0+aW50ZXJwcmV0ZXIpCiAgICAgLCBtX2xhYmVscyhjb2Rl
QmxvY2sgPyBjb2RlQmxvY2stPm51bWJlck9mSW5zdHJ1Y3Rpb25zKCkgOiAwKQogICAgICwgbV9i
eXRlY29kZU9mZnNldCgodW5zaWduZWQpLTEpCiAgICAgLCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25JbmRleChVSU5UX01BWCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNp
b24gMTU2MTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtODg2LDggKzg4Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICAg
ICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7Ci0gICAgICAgIFZNKiBtX3ZtOwotICAgICAg
ICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogCiAgICAgICAgIFZlY3RvcjxDYWxsUmVjb3JkPiBt
X2NhbGxzOwogICAgICAgICBWZWN0b3I8TGFiZWw+IG1fbGFiZWxzOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShy
ZXZpc2lvbiAxNTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbioKIAogSklUOjpDb2RlUmVmIEpJVDo6c3Ry
aW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBKU0ludGVyZmFjZUpJVCBq
aXQ7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICBKdW1wTGlzdCBmYWlsdXJlczsK
ICAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0tPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNTYxMzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogSklUOjpDb2RlUmVmIEpJVDo6c3Ry
aW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBKU0ludGVyZmFjZUpJVCBq
aXQ7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICBKdW1wTGlzdCBmYWlsdXJlczsK
ICAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0tPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0lu
dGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJ
bnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTU2MTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
ZGVmaW5lIEpTSW50ZXJmYWNlSklUX2gKIAogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMu
aCIKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5j
bHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0zOCw4ICszOSwx
MyBAQAogI2lmIEVOQUJMRShKSVQpCiAKIG5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNzIEpTSW50
ZXJmYWNlSklUIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKKyAgICBjbGFzcyBKU0ludGVyZmFj
ZUpJVCA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgIHB1YmxpYzoKKyAgICAgICAgSlNJbnRl
cmZhY2VKSVQoVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDApCisgICAgICAgICAgICA6
IENDYWxsSGVscGVycyh2bSwgY29kZUJsb2NrKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAg
ICAgCiAgICAgICAgIC8vIE5PVEVTOgogICAgICAgICAvLwogICAgICAgICAvLyByZWdUMCBoYXMg
dHdvIHNwZWNpYWwgbWVhbmluZ3MuICBUaGUgcmV0dXJuIHZhbHVlIGZyb20gYSBzdHViCkBAIC0y
MDYsOSArMjEyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFB1dEltbWVk
aWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFk
ZXJFbnRyeSk7CiAgICAgICAgIHZvaWQgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihSZWdp
c3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKIAotICAgICAgICB2
b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEKTsKLSAgICAgICAg
dm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEKTsKLSAgICAg
ICAgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzKTsKICAgICAg
ICAgdm9pZCByZXN0b3JlQXJndW1lbnRSZWZlcmVuY2UoKTsKIAogICAgICAgICBpbmxpbmUgQWRk
cmVzcyBwYXlsb2FkRm9yKGludCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVn
aXN0ZXIpOwpAQCAtMzk2LDc1ICszOTksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0
dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0dWFsUmVnaXN0ZXJJ
bmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgfQogCi0jaWYgQ1BVKEFSTSkKLQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6cHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgbW92ZShsaW5rUmVnaXN0
ZXIsIHJlZyk7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFj
ZUpJVDo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCi0g
ICAgewotICAgICAgICBtb3ZlKHJlZywgbGlua1JlZ2lzdGVyKTsKLSAgICB9Ci0gICAgCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpyZXN0b3JlUmV0dXJuQWRkcmVzc0Jl
Zm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBsb2FkUHRyKGFkZHJl
c3MsIGxpbmtSZWdpc3Rlcik7Ci0gICAgfQotI2VsaWYgQ1BVKFNINCkKLQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3RzcHIocmVnKTsK
LSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjpyZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmxkc3ByKHJlZyk7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4o
QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZFB0ckxpbmtSZWcoYWRkcmVzcyk7
Ci0gICAgfQotICAgIAotI2VsaWYgQ1BVKE1JUFMpCi0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
SlNJbnRlcmZhY2VKSVQ6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklE
IHJlZykKLSAgICB7Ci0gICAgICAgIG1vdmUocmV0dXJuQWRkcmVzc1JlZ2lzdGVyLCByZWcpOwot
ICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OnJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAg
ICAgbW92ZShyZWcsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0gICAgfQotICAgIAotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZFB0cihhZGRyZXNz
LCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwotICAgIH0KLSAgICAKLSNlbHNlIC8vIENQVShYODYp
IHx8IENQVShYODZfNjQpCi0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6
OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKLSAgICB7Ci0g
ICAgICAgIHBvcChyZWcpOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJ
bnRlcmZhY2VKSVQ6OnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQg
cmVnKQotICAgIHsKLSAgICAgICAgcHVzaChyZWcpOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0
dXJuKEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIHB1c2goYWRkcmVzcyk7Ci0gICAg
fQotICAgIAotI2VuZGlmCi0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6
OnJlc3RvcmVBcmd1bWVudFJlZmVyZW5jZSgpCiAgICAgewogICAgICAgICBtb3ZlKHN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDE1NjEz
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IFNwZWNpYWxpemVkVGh1bmtKSVQgOiBwdWJsaWMgSlNJbnRlcmZhY2VKSVQgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBUaGlzQXJndW1lbnQgPSAtMTsKLSAgICAgICAg
U3BlY2lhbGl6ZWRUaHVua0pJVChpbnQgZXhwZWN0ZWRBcmdDb3VudCkKKyAgICAgICAgU3BlY2lh
bGl6ZWRUaHVua0pJVChWTSogdm0sIGludCBleHBlY3RlZEFyZ0NvdW50KQorICAgICAgICAgICAg
OiBKU0ludGVyZmFjZUpJVCh2bSkKICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2hlY2sgdGhh
dCB3ZSBoYXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCiAgICAgICAgICAgICBt
X2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihKU1N0YWNrOjpB
cmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOwpAQCAt
MTMwLDkgKzEzMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0KCk7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmaW5hbGl6ZShW
TSYgdm0sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtL
aW5kKQorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmluYWxpemUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGZhbGxiYWNrLCBjb25zdCBjaGFyKiB0aHVua0tpbmQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodm0sIHRoaXMsIEdMT0JBTF9USFVOS19J
RCk7CisgICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBHTE9C
QUxfVEhVTktfSUQpOwogICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2ZhaWx1cmVzLCBD
b2RlTG9jYXRpb25MYWJlbChmYWxsYmFjaykpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fY2FsbHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICAgICAgcGF0Y2hCdWZm
ZXIubGluayhtX2NhbGxzW2ldLmZpcnN0LCBtX2NhbGxzW2ldLnNlY29uZCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAx
NTYxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIEpTSW50ZXJmYWNlSklUOjpD
YWxsIGdlbmVyYXRlU2xvdwogCiBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtGb3JH
ZW5lcmF0b3IoVk0qIHZtLCBGdW5jdGlvblB0ciBsYXp5TGluaywgRnVuY3Rpb25QdHIgbm90SlNG
dW5jdGlvbiwgY29uc3QgY2hhciogbmFtZSkKIHsKLSAgICBKU0ludGVyZmFjZUpJVCBqaXQ7Cisg
ICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICAKICAgICBKU0ludGVyZmFjZUpJVDo6SnVt
cExpc3Qgc2xvd0Nhc2U7CiAgICAgCkBAIC0xMTQsNyArMTE0LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGxpbmtDbG9zdXJlQ2FsbEdlbgogCiBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHZpcnR1YWxGb3JHZW5lcmF0b3IoVk0qIHZtLCBGdW5jdGlvblB0ciBjb21waWxlLCBGdW5jdGlv
blB0ciBub3RKU0Z1bmN0aW9uLCBjb25zdCBjaGFyKiBuYW1lLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpCiB7Ci0gICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIEpTSW50ZXJmYWNlSklU
IGppdCh2bSk7CiAgICAgCiAgICAgSlNJbnRlcmZhY2VKSVQ6Okp1bXBMaXN0IHNsb3dDYXNlOwog
CkBAIC0xNjksNyArMTY5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxDb25zdHJ1
Y3RHZQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3RyaW5nTGVuZ3RoVHJhbXBvbGluZUdlbmVy
YXRvcihWTSogdm0pCiB7Ci0gICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIEpTSW50ZXJmYWNl
SklUIGppdCh2bSk7CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAvLyBDaGVjayBlYXgg
aXMgYSBzdHJpbmcKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIG5hdGl2ZUZvckdlCiB7CiAgICAgaW50IGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uID0g
TmF0aXZlRXhlY3V0YWJsZTo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihraW5kKTsKICAgICAK
LSAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAg
ICAKICAgICBqaXQuZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKDAsIEpTU3RhY2s6
OkNvZGVCbG9jayk7CiAgICAgaml0LnN0b3JlUHRyKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVS
ZWdpc3RlciwgJnZtLT50b3BDYWxsRnJhbWUpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBuYXRpdmVDb25zdHJ1Y3RHZW4KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGFyaXR5Rml4dXAoVk0qIHZtKQogewotICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICBKU0lu
dGVyZmFjZUpJVCBqaXQodm0pOwogCiAgICAgLy8gV2UgZW50ZXIgd2l0aCBmaXh1cCBjb3VudCBp
biByZWdUMAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC01MzksNDEgKzUzOSw0MSBAQCBzdGF0aWMg
dm9pZCBjaGFyVG9TdHJpbmcoU3BlY2lhbGl6ZWRUaHVuCiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1
bmtKSVQgaml0KDEpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBz
dHJpbmdDaGFyTG9hZChqaXQsIHZtKTsKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDApOwotICAgIHJldHVybiBqaXQuZmluYWxpemUoKnZtLCB2bS0+aml0U3R1
YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiY2hhckNvZGVBdCIpOworICAgIHJldHVybiBqaXQuZmlu
YWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgImNoYXJDb2RlQXQiKTsKIH0K
IAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNoYXJBdFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsK
LSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgxKTsKKyAgICBTcGVjaWFsaXplZFRodW5rSklU
IGppdCh2bSwgMSk7CiAgICAgc3RyaW5nQ2hhckxvYWQoaml0LCB2bSk7CiAgICAgY2hhclRvU3Ry
aW5nKGppdCwgdm0sIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAgIGppdC5yZXR1cm5K
U0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwotICAgIHJldHVybiBqaXQuZmluYWxp
emUoKnZtLCB2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiY2hhckF0Iik7CisgICAg
cmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAiY2hh
ckF0Iik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmcm9tQ2hhckNvZGVUaHVua0dlbmVy
YXRvcihWTSogdm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQoMSk7CisgICAgU3Bl
Y2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIC8vIGxvYWQgY2hhciBjb2RlCiAgICAg
aml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAg
ICBjaGFyVG9TdHJpbmcoaml0LCB2bSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7CiAgICAg
aml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7Ci0gICAgcmV0dXJu
IGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJmcm9t
Q2hhckNvZGUiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0
aXZlQ2FsbCh2bSksICJmcm9tQ2hhckNvZGUiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHNxcnRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBq
aXQoMSk7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICghaml0
LnN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSkKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0
aXZlQ2FsbCh2bSkpOwogCiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0
LnNxcnREb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6ZnBSZWdUMCk7CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklU
OjpmcFJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5j
dGlOYXRpdmVDYWxsKHZtKSwgInNxcnQiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5q
aXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJzcXJ0Iik7CiB9CiAKIApAQCAtNjY4LDcgKzY2
OCw3IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgaGFsZkNvbnN0YW50ID0gMC41OwogICAgIAogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZsb29yVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNw
ZWNpYWxpemVkVGh1bmtKSVQgaml0KDEpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZt
LCAxKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwogICAgIGlmICghVW5h
cnlEb3VibGVPcFdyYXBwZXIoZmxvb3IpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkp
CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKQEAgLTY5NSwxMiArNjk1
LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9vclRodW5rR2VuZXJhdG8KICAgICBqaXQu
cmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGRvdWJsZVJlc3Vs
dC5saW5rKCZqaXQpOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3Rp
TmF0aXZlQ2FsbCh2bSksICJmbG9vciIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmpp
dFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwgImZsb29yIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1
bmtKSVQgaml0KDEpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBp
ZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGNlaWwpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1Bv
aW50KCkpCiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZN
YW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwpAQCAtNzE0LDEyICs3MTQsMTIgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcgogICAgIGppdC5yZXR1cm5JbnQzMihT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgZG91YmxlUmVzdWx0LmxpbmsoJmppdCk7
CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKLSAg
ICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZt
KSwgImNlaWwiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0
aXZlQ2FsbCh2bSksICJjZWlsIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByb3VuZFRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgxKTsK
KyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFVbmFyeURvdWJs
ZU9wV3JhcHBlcihqc1JvdW5kKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQogICAg
ICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVS
ZWYodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgbm9uSW50SnVtcDsKQEAgLTc0OCwzOCArNzQ4LDM4IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiByb3VuZFRodW5rR2VuZXJhdG8KICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDApOwogICAgIGRvdWJsZVJlc3VsdC5saW5rKCZqaXQpOwogICAgIGppdC5y
ZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGpp
dC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJyb3VuZCIp
OworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZt
KSwgInJvdW5kIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBleHBUaHVua0dlbmVyYXRv
cihWTSogdm0pCiB7CiAgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihleHApKQogICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
dm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJ
VCBqaXQoMSk7CisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIGlmICgh
aml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmppdFN0dWJzLT5jdGlOYXRp
dmVDYWxsKHZtKSk7CiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNh
bGxEb3VibGVUb0RvdWJsZVByZXNlcnZpbmdSZXR1cm4oVW5hcnlEb3VibGVPcFdyYXBwZXIoZXhw
KSk7CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsK
LSAgICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxs
KHZtKSwgImV4cCIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlO
YXRpdmVDYWxsKHZtKSwgImV4cCIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbG9nVGh1
bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIobG9n
KSkKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFn
ZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwotICAgIFNwZWNpYWxp
emVkVGh1bmtKSVQgaml0KDEpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsK
ICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKICAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVi
cy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwogICAgIGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwog
ICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQcmVzZXJ2aW5nUmV0dXJuKFVuYXJ5RG91YmxlT3BX
cmFwcGVyKGxvZykpOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqdm0sIHZtLT5qaXRTdHVicy0+Y3Rp
TmF0aXZlQ2FsbCh2bSksICJsb2ciKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSksICJsb2ciKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGFic1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklU
IGppdCgxKTsKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgaWYgKCFq
aXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkpCiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS0+aml0U3R1YnMtPmN0aU5h
dGl2ZUNhbGwodm0pKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub25JbnRKdW1wOwpAQCAt
Nzk0LDEyICs3OTQsMTIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFic1RodW5rR2VuZXJhdG9y
KAogICAgIGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBS
ZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGppdC5hYnNEb3VibGUoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMSk7
CiAgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QxKTsKLSAg
ICByZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZt
KSwgImFicyIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRp
dmVDYWxsKHZtKSwgImFicyIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcG93VGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KDIpOworICAg
IFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAyKTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKSkKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwog
CkBAIC04NDYsMTIgKzg0NiwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcG93VGh1bmtHZW5l
cmF0b3IoCiAgICAgfSBlbHNlCiAgICAgICAgIGppdC5hcHBlbmRGYWlsdXJlKG5vbkludEV4cG9u
ZW50KTsKIAotICAgIHJldHVybiBqaXQuZmluYWxpemUoKnZtLCB2bS0+aml0U3R1YnMtPmN0aU5h
dGl2ZUNhbGwodm0pLCAicG93Iik7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1
YnMtPmN0aU5hdGl2ZUNhbGwodm0pLCAicG93Iik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1bmtKSVQg
aml0KDIpOworICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAyKTsKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBub25JbnRBcmcwSnVtcDsKICAgICBqaXQubG9hZEludDMyQXJndW1lbnQo
MCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIG5vbkludEFyZzBKdW1wKTsKICAgICBTcGVj
aWFsaXplZFRodW5rSklUOjpMYWJlbCBkb25lTG9hZGluZ0FyZzAoJmppdCk7CkBAIC04NzksNyAr
ODc5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcgogICAgIH0g
ZWxzZQogICAgICAgICBqaXQuYXBwZW5kRmFpbHVyZShub25JbnRBcmcxSnVtcCk7CiAKLSAgICBy
ZXR1cm4gaml0LmZpbmFsaXplKCp2bSwgdm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSwg
ImltdWwiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZl
Q2FsbCh2bSksICJpbXVsIik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMTU2MTM2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyAr
NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAogc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhWTSogdm0sIHZvaWQgKCp0
YXJnZXQpKCksIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKIHsKLSAgICBKU0ludGVyZmFjZUpJVCBq
aXQ7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICAKICAgICAvLyBGSVhNRTogdGhl
cmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQgSSdtIG5vdCBz
dXJlIEkgY2FyZS4KICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24g
MTU2MTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIHZhbHVl
cyBhcyBiZWluZyBtaXNzaW5nLCBzbyBpdCBpcyB1c2VmdWwgdG8gaGF2ZSBpdCBhYmJyZXZpYXRl
ZC4KICNkZWZpbmUgUU5hTiAoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KSkKIAorY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlND
ZWxsOworY2xhc3MgSlNWYWx1ZVNvdXJjZTsKIGNsYXNzIFZNOwogY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CiBjbGFzcyBKU09iamVjdDsKQEAgLTUxLDEwICs1Myw3IEBAIGNsYXNzIFByb3BlcnR5U2xv
dDsKIGNsYXNzIFB1dFByb3BlcnR5U2xvdDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIG5hbWVzcGFj
ZSBERkcgewotY2xhc3MgQXNzZW1ibHlIZWxwZXJzOwogY2xhc3MgSklUQ29tcGlsZXI7Ci1jbGFz
cyBKSVRDb2RlR2VuZXJhdG9yOwotY2xhc3MgSlNWYWx1ZVNvdXJjZTsKIGNsYXNzIE9TUkV4aXRD
b21waWxlcjsKIGNsYXNzIFNwZWN1bGF0aXZlSklUOwogfQpAQCAtMTE2LDE3ICsxMTUsMTYgQEAg
aW5saW5lIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSBudW1iZXIpCiAKIGNsYXNzIEpTVmFsdWUg
ewogICAgIGZyaWVuZCBzdHJ1Y3QgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzOworICAgIGZyaWVu
ZCBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBmcmll
bmQgY2xhc3MgSklUU2xvd1BhdGhDYWxsOwogICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViczsKICAg
ICBmcmllbmQgY2xhc3MgSklUU3R1YkNhbGw7CiAgICAgZnJpZW5kIGNsYXNzIEpTSW50ZXJmYWNl
SklUOworICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlU291cmNlOwogICAgIGZyaWVuZCBjbGFzcyBT
cGVjaWFsaXplZFRodW5rSklUOwogI2lmIEVOQUJMRShERkdfSklUKQotICAgIGZyaWVuZCBjbGFz
cyBERkc6OkFzc2VtYmx5SGVscGVyczsKICAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxl
cjsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb2RlR2VuZXJhdG9yOwotICAgIGZyaWVuZCBj
bGFzcyBERkc6OkpTVmFsdWVTb3VyY2U7CiAgICAgZnJpZW5kIGNsYXNzIERGRzo6T1NSRXhpdENv
bXBpbGVyOwogICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>