<?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>126038</bug_id>
          
          <creation_ts>2013-12-19 18:48:32 -0800</creation_ts>
          <short_desc>Web Inspector: Extract CommandLineAPI into its own InjectedScriptModule</short_desc>
          <delta_ts>2013-12-20 14:01:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>961673</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-19 18:48:32 -0800</bug_when>
    <thetext>The CommandLineAPI that currently lives inside of InjectedScriptSource.js is infested with knowledge and functions dealing with the DOM. &quot;getEventListeners&quot;, &quot;$n&quot;, &quot;$$&quot;, etc. These APIs cannot be used when inspecting a JSContext. However the rest of InjectedScriptSource is generic. Split the CommandLineAPI code out into is own module.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961675</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-12-19 18:50:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/15705590&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961679</commentid>
    <comment_count>2</comment_count>
      <attachid>219713</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-19 19:01:02 -0800</bug_when>
    <thetext>Created attachment 219713
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961680</commentid>
    <comment_count>3</comment_count>
      <attachid>219713</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-19 19:03:07 -0800</bug_when>
    <thetext>Comment on attachment 219713
[PATCH] Proposed Fix

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

&gt; Source/WebCore/inspector/PageRuntimeAgent.cpp:143
&gt;          JSC::ExecState* scriptState = mainWorldExecState(&amp;m_inspectedPage-&gt;mainFrame());
&gt;          InjectedScript result = injectedScriptManager()-&gt;injectedScriptFor(scriptState);
&gt;          if (result.hasNoValue())
&gt; -            *errorString = &quot;Internal error: main world execution context not found.&quot;;
&gt; +            *errorString = ASCIILiteral(&quot;Internal error: main world execution context not found.&quot;);
&gt; +        CommandLineAPIModule::injectIfNeeded(injectedScriptManager(), result);
&gt;          return result;
&gt;      }
&gt; +
&gt;      InjectedScript injectedScript = injectedScriptManager()-&gt;injectedScriptForId(*executionContextId);
&gt;      if (injectedScript.hasNoValue())
&gt; -        *errorString = &quot;Execution context with given id not found.&quot;;
&gt; +        *errorString = ASCIILiteral(&quot;Execution context with given id not found.&quot;);
&gt; +    CommandLineAPIModule::injectIfNeeded(injectedScriptManager(), injectedScript);
&gt;      return injectedScript;
&gt;  }

Although this works, I don&apos;t think it is ideal. This means every time you evaluate something in the console (e.g. 1+1) we first evaluate and check the result of &apos;InjectedScript.module(&quot;CommandLineAPI&quot;)&apos;.

I think a better approach will be to subclass InjectedScriptManager, and provide a one evaluate at the same time we create InjectedScript. So we only have to inject the CommandLineAPI once, instead of keep checking it. I&apos;ll make this change tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961681</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-19 19:03:37 -0800</bug_when>
    <thetext>Attachment 219713 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.cpp&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.h&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModuleSource.js&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptSource.js&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/PageRuntimeAgent.cpp:133:  Declaration has space between type name and * in *errorString  [whitespace/declaration] [3]
ERROR: Source/WebCore/inspector/PageRuntimeAgent.cpp:140:  Declaration has space between type name and * in *errorString  [whitespace/declaration] [3]
Total errors found: 2 in 17 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>961683</commentid>
    <comment_count>5</comment_count>
      <attachid>219713</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-19 19:05:54 -0800</bug_when>
    <thetext>Comment on attachment 219713
[PATCH] Proposed Fix

Attachment 219713 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/49338152</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961689</commentid>
    <comment_count>6</comment_count>
      <attachid>219717</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-19 19:19:52 -0800</bug_when>
    <thetext>Created attachment 219717
[PATCH] Part 1 - Extract CommandLineAPIModule

Same comment from Part 1 still applies here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961691</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-19 19:22:16 -0800</bug_when>
    <thetext>Attachment 219717 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.cpp&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.h&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModuleSource.js&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptSource.js&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/PageRuntimeAgent.cpp:133:  Declaration has space between type name and * in *errorString  [whitespace/declaration] [3]
ERROR: Source/WebCore/inspector/PageRuntimeAgent.cpp:140:  Declaration has space between type name and * in *errorString  [whitespace/declaration] [3]
Total errors found: 2 in 17 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>961927</commentid>
    <comment_count>8</comment_count>
      <attachid>219771</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-20 11:23:38 -0800</bug_when>
    <thetext>Created attachment 219771
[PATCH] Part 2 - Inject CommandLineAPIModule once, instead checking over and over again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961930</commentid>
    <comment_count>9</comment_count>
      <attachid>219773</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-20 11:24:58 -0800</bug_when>
    <thetext>Created attachment 219773
[PATCH] For Bots 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961933</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-20 11:26:04 -0800</bug_when>
    <thetext>Attachment 219773 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.cpp&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.h&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModuleSource.js&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptSource.js&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/PageInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/PageInjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/PageInjectedScriptManager.h:35:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 21 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>961937</commentid>
    <comment_count>11</comment_count>
      <attachid>219773</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-20 11:28:56 -0800</bug_when>
    <thetext>Comment on attachment 219773
[PATCH] For Bots 1

Attachment 219773 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/47608249</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961938</commentid>
    <comment_count>12</comment_count>
      <attachid>219773</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-20 11:29:59 -0800</bug_when>
    <thetext>Comment on attachment 219773
[PATCH] For Bots 1

Attachment 219773 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/46678233</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961942</commentid>
    <comment_count>13</comment_count>
      <attachid>219775</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-20 11:32:24 -0800</bug_when>
    <thetext>Created attachment 219775
[PATCH] For Bots 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961944</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-20 11:34:38 -0800</bug_when>
    <thetext>Attachment 219775 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.cpp&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModule.h&apos;, u&apos;Source/WebCore/inspector/CommandLineAPIModuleSource.js&apos;, u&apos;Source/WebCore/inspector/InjectedScriptCanvasModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptModule.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptSource.js&apos;, u&apos;Source/WebCore/inspector/InspectorAllInOne.cpp&apos;, u&apos;Source/WebCore/inspector/PageDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/PageInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/inspector/PageInjectedScriptManager.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/inspector/PageInjectedScriptManager.h:35:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 22 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>962037</commentid>
    <comment_count>15</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-20 14:01:46 -0800</bug_when>
    <thetext>Committed r160924 &lt;http://trac.webkit.org/changeset/160924&gt;
Committed r160925 &lt;http://trac.webkit.org/changeset/160925&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219713</attachid>
            <date>2013-12-19 19:01:02 -0800</date>
            <delta_ts>2013-12-19 19:19:52 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>commandlineapi.patch</filename>
            <type>text/plain</type>
            <size>58242</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDZmNmJkOC4uZWQ2ZTk1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE1NjgsNiArMTU2OCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCiAKKyAgICBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUu
Y3BwCiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAogICAgIGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbHMuY3BwCiAgICAgaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTMwODQs
NiArMzA4NSwxNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luamVjdGVkU2NyaXB0U291cmNl
LmgpCiAKIAorIyBHZW5lcmF0ZSBDb21tYW5kTGluZUFQSVNjcmlwdFNvdXJjZS5oCithZGRfY3Vz
dG9tX2NvbW1hbmQoCisgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9D
b21tYW5kTGluZUFQSVNjcmlwdFNvdXJjZS5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9Db21tYW5kTGluZUFQSVNjcmlwdFNvdXJjZS5taW4uanMKKyAgICBNQUlOX0RFUEVOREVOQ1kg
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJU2NyaXB0U291cmNlLmpzCisgICAgREVQRU5EUyAke1dF
QkNPUkVfRElSfS9pbnNwZWN0b3IveHhkLnBsICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9TY3Jp
cHRzL2pzbWluLnB5CisgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1dFQkNPUkVf
RElSfS9pbnNwZWN0b3IvU2NyaXB0cy9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSVNjcmlwdFNvdXJjZS5qcyA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9Db21tYW5kTGluZUFQSVNjcmlwdFNvdXJjZS5taW4uanMKKyAgICBDT01NQU5EICR7
UEVSTF9FWEVDVVRBQkxFfSAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IveHhkLnBsIENvbW1hbmRM
aW5lQVBJU2NyaXB0U291cmNlX2pzICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Db21t
YW5kTGluZUFQSVNjcmlwdFNvdXJjZS5taW4uanMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0NvbW1hbmRMaW5lQVBJU2NyaXB0U291cmNlLmgKKyAgICBWRVJCQVRJTSkKK2xpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ29tbWFu
ZExpbmVBUElTY3JpcHRTb3VyY2UuaCkKKworCiAjIEdlbmVyYXRlIEluamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlU291cmNlLmgKIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQVVQgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
LmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlU291cmNlLm1pbi5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdkNjkzNzIuLjVmODU2MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsNSArMSw3NSBAQAogMjAxMy0xMi0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEV4dHJhY3QgQ29tbWFuZExp
bmVBUEkgaW50byBpdHMgb3duIEluamVjdGVkU2NyaXB0TW9kdWxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYwMzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0cywgbm8gb2JzZXJ2YWJsZSBj
aGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgTW92ZSB0aGUgQ29tbWFuZExpbmVBUEkgc291
cmNlIGludG8gaXRzIG93biBtb2R1bGUuIExvYWQgdGhlIG1vZHVsZQorICAgICAgICBpbiBJbmpl
Y3RlZFNjcmlwdHMgZm9yIFdlYkNvcmU6OlBhZ2VzLiBOb3QgZm9yIHdvcmtlcnMuCisgICAgICAg
IAorICAgICAgICBNb3ZpbmcgQ29tbWFuZExpbmVBUEkgaW50byBpdCdzIG93biBtb2R1bGUgbW92
ZXMgaXQgZnJvbSBiZWluZyBpbnNpZGUKKyAgICAgICAgdGhlIHNhbWUgYW5vbnltb3VzIGZ1bmN0
aW9uIHRvIGJlaW5nIGV2YWx1YXRlZCBvdXRzaWRlIHRoZSBhbm9ueW1vdXMKKyAgICAgICAgZnVu
Y3Rpb24uIFRvIGNvbm5lY3QgdGhlIHR3byBJbmplY3RlZFNjcmlwdCBwYXNzZXMgaXRzZWxmIHRv
IHRoZQorICAgICAgICBpbmplY3RlZCBtb2R1bGUsIGFuZCB0aGUgQ29tbWFuZExpbmVBUEkgbW9k
dWxlIHBsYWNlcyBpdHMgY2xhc3Mgb24gdGhlCisgICAgICAgIGluamVjdGVkU2NyaXB0IGFzIGlu
amVjdGVkU2NyaXB0LkNvbW1hbmRMaW5lQVBJLgorCisgICAgICAgIFRoaXMgZXNzZW50aWFsbHkg
bWFrZXMgdGhlIENvbW1hbmRMaW5lQVBJIG1vZHVsZSBhbiBJbmplY3RlZFNjcmlwdAorICAgICAg
ICBleHRlbnNpb24uIEluamVjdGVkU2NyaXB0U291cmNlIGNoZWNrcyBmb3IgdGhlIGV4aXN0ZW5j
ZSBvZgorICAgICAgICB0aGlzLkNvbW1hbmRMaW5lQVBJIHRvIHNlZSBpZiB0aGUgZnVsbGVyIHZl
cnNpb24gaXMgYXZhaWxhYmxlLiBPdGhlcndpc2UKKyAgICAgICAgaXQgZmFsbHMgYmFjayB0byBh
IEJhc2ljQ29tbWFuZExpbmVBUEkgd2hpY2ggb25seSBleHBvc2VzICIkXyIsCisgICAgICAgIHdo
aWNoIGlzIHRoZSAibGFzdCBldmFsdWF0ZWQgcmVzdWx0Ii4gVGhhdCB3aWxsIGJlIHVzZWZ1bCBm
b3IgSlMgQ29udGV4dHMKKyAgICAgICAgYW5kIFdvcmtlcnMuCisKKyAgICAgICAgQXQgdGhlIHNh
bWUgdGltZSwgdGhpcyBwYXRjaCBtYWtlcyBJbmplY3RlZFNjcmlwdE1vZHVsZSBtb3JlIGdlbmVy
aWMsCisgICAgICAgIHRvIHN1cHBvcnQgYmVpbmcgdXNlZCBpbiBhIHB1cmUgSmF2YVNjcmlwdCBl
bnZpcm9ubWVudCwgbWVhbmluZyBvbmUKKyAgICAgICAgd2l0aG91dCAid2luZG93IiBhcyB0aGUg
Z2xvYmFsIG9iamVjdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcDoKKyAgICAgICAgQWRkIGZpbGVzLiBN
aW5pZnkgdGhlIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlIGluIGdlbmVyYXRpb24uCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6Q29tbWFuZExpbmVBUElNb2R1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1bGU6OmluamVjdElmTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjpzb3VyY2UpOgorICAgICAgICBJ
bmplY3QgdGhlIG1vZHVsZSB0aGF0IGRvZXNuJ3QgcmV0dXJuIGFuIG9iamVjdCwgaXRzIGp1c3Qg
ZXZhbHVhdGVkIGNvZGUKKyAgICAgICAgZXh0ZW5kaW5nIHRoZSBvcmlnaW5hbCBJbmplY3RlZFNj
cmlwdC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICBPbmx5
IEFTU0VSVCB0aGUgcmVzdWx0IHdhcyBhbiBvYmplY3QgaWYgdGhlIE1vZHVsZSBjbGFpbXMgaXQg
cmV0dXJucyBhbiBvYmplY3QuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlOjpyZXR1cm5zT2JqZWN0KToKKyAgICAgICAgUmV0dXJuIGFuIG9iamVjdCB1c2VkIGxhdGVy
IHRvIGNhbGwgaW50byB0aGUgQ2FudmFzTW9kdWxlLgorCisgICAgICAgICogaW5zcGVjdG9yL1Bh
Z2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgRW5zdXJlIHRoZSBDb21tYW5kTGluZUFQ
SU1vZHVsZSBpcyBsb2FkZWQgaW4gdGhlIFBhZ2UncyBJbmplY3RlZFNjcmlwdC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qczogQWRkZWQuCisgICAg
ICAgIENyZWF0ZSB0aGUgQ29tbWFuZExpbmVBUEkgY2xhc3MgYW5kIHBsYWNlIGl0IG9uIGluamVj
dGVkU2NyaXB0LgorCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpz
OgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlLl9ldmFsdWF0ZU9uKToKKyAgICAg
ICAgSW5qZWN0IGVpdGhlciB0aGUgQmFzaWNDb21tYW5kTGluZUFQSSBvciBleHRlbmRlZCBDb21t
YW5kTGluZUFQSS4KKyAgICAgICAgRGVyaXZlIHRoZSBnbG9iYWxPYmplY3QgZHluYW1pY2FsbHkg
aW5zdGVhZCBvZiBhc3N1bWluZyB3aW5kb3cuCisgICAgICAgIEluamVjdCB0aGUgY29tbWFuZExp
bmVBUEkgb24gd2luZG93LmNvbnNvbGUgb3IgdGhlIGdsb2JhbE9iamVjdCBiYXNlZCBvbiBjb250
ZXh0LgorICAgICAgICBBdWRpdCBhbmQgcmVuYW1lIHVzZXMgb2YgIndpbmRvdyIgdG8gc29tZXRo
aW5nIGxpa2UgZ2xvYmFsT2JqZWN0LgorCisyMDEzLTEyLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5kZWJ1Z2dhYmxlVHlwZSB0byBsZXQgdGhlIGZyb250ZW5kIGtub3cgaXQn
cyBiYWNrZW5kIGlzIEphdmFTY3JpcHQgb3IgV2ViCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYwMTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKaW5kZXggNDc1ZjdhYi4uOWI3MWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0xMTE5LDYgKzExMTksMTMgQEAgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IEluamVjdGVk
U2NyaXB0U291cmNlLmpzCiAJcGVybCAiJChXZWJDb3JlKS9pbnNwZWN0b3IveHhkLnBsIiBJbmpl
Y3RlZFNjcmlwdFNvdXJjZV9qcyAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5oCiAJcm0gLWYgLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKIAor
YWxsIDogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAorCitDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5oIDogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKwlweXRob24gIiQoV2Vi
Q29yZSkvaW5zcGVjdG9yL1NjcmlwdHMvanNtaW4ucHkiIDwiJChXZWJDb3JlKS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMiID4gLi9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5taW4uanMKKwlwZXJsICIkKFdlYkNvcmUpL2luc3BlY3Rvci94eGQucGwiIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlX2pzIC4vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpz
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKwlybSAtZiAuL0NvbW1hbmRMaW5lQVBJTW9k
dWxlU291cmNlLm1pbi5qcworCiBhbGwgOiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJj
ZS5oCiAKIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmggOiBJbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZVNvdXJjZS5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhNjBjNWI1Li42
MGU2YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzcxLDE0ICszNzEsMTggQEAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JPdmVybGF5UGFnZS5oOiAkKFdlYkNvcmUpL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmUKIAkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkKFdlYkNvcmUpL2luc3Bl
Y3Rvci9TY3JpcHRzL2lubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5
ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmh0bWwgJChHRU5TT1VS
Q0VTX1dFQkNPUkUpL0luc3BlY3Rvck92ZXJsYXlQYWdlLmNvbWJpbmVkLmh0bWwKIAkkKEFNX1Zf
R0VOKSQoUEVSTCkgJChXZWJDb3JlKS9pbnNwZWN0b3IveHhkLnBsIEluc3BlY3Rvck92ZXJsYXlQ
YWdlX2h0bWwgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luc3BlY3Rvck92ZXJsYXlQYWdlLmNvbWJp
bmVkLmh0bWwgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luc3BlY3Rvck92ZXJsYXlQYWdlLmgKIAot
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5o
OiAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5q
cwotCSQoQU1fVl9HRU4pJChQWVRIT04pICQoV2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdHMvanNt
aW4ucHkgPCQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291
cmNlLmpzID4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
U291cmNlLm1pbi5qcwotCSQoQU1fVl9HRU4pJChQRVJMKSAkKFdlYkNvcmUpL2luc3BlY3Rvci94
eGQucGwgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2VfanMgJChHRU5TT1VSQ0VTX1dF
QkNPUkUpL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLm1pbi5qcyAkKEdFTlNPVVJD
RVNfV0VCQ09SRSkvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuaAotCiBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0luamVjdGVkU2NyaXB0U291cmNlLmg6ICQoV2ViQ29yZSkvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCiAJJChBTV9WX0dFTikkKFBZVEhPTikgJChXZWJD
b3JlKS9pbnNwZWN0b3IvU2NyaXB0cy9qc21pbi5weSA8JChXZWJDb3JlKS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMgPiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UubWluLmpzCiAJJChBTV9WX0dFTikkKFBFUkwpICQoV2ViQ29yZSkvaW5zcGVjdG9y
L3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzICQoR0VOU09VUkNFU19XRUJDT1JFKS9JbmplY3RlZFNj
cmlwdFNvdXJjZS5oCiAKK0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElTY3Jp
cHRTb3VyY2UuaDogJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElTY3JpcHRTb3Vy
Y2UuanMKKwkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRz
L2pzbWluLnB5IDwkKFdlYkNvcmUpL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSVNjcmlwdFNvdXJj
ZS5qcyA+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9Db21tYW5kTGluZUFQSVNjcmlwdFNvdXJjZS5t
aW4uanMKKwkkKEFNX1ZfR0VOKSQoUEVSTCkgJChXZWJDb3JlKS9pbnNwZWN0b3IveHhkLnBsIENv
bW1hbmRMaW5lQVBJU2NyaXB0U291cmNlX2pzICQoR0VOU09VUkNFU19XRUJDT1JFKS9Db21tYW5k
TGluZUFQSVNjcmlwdFNvdXJjZS5taW4uanMgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NvbW1hbmRM
aW5lQVBJU2NyaXB0U291cmNlLmgKKworRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZVNvdXJjZS5oOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcworCSQoQU1fVl9HRU4pJChQWVRIT04pICQoV2ViQ29y
ZSkvaW5zcGVjdG9yL1NjcmlwdHMvanNtaW4ucHkgPCQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzID4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0lu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLm1pbi5qcworCSQoQU1fVl9HRU4pJChQRVJM
KSAkKFdlYkNvcmUpL2luc3BlY3Rvci94eGQucGwgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVT
b3VyY2VfanMgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
U291cmNlLm1pbi5qcyAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGVTb3VyY2UuaAorCiBpZiBFTkFCTEVfV0VCX0FVRElPCiAjIEluc3RhbGxpbmcgSFJURiBk
YXRhYmFzZSB3YXYgZmlsZXMKIGF1ZGlvZGlyID0gJHtkYXRhZGlyfS93ZWJraXRndGstQFdFQktJ
VEdUS19BUElfVkVSU0lPTkAvcmVzb3VyY2VzL2F1ZGlvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggZGM4NGZlOS4uZjUzZDkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC01LDYgKzUsNyBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvQ1NTUHJvcGVydHlOYW1lcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Zh
bHVlS2V5d29yZHMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJ
U2NyaXB0U291cmNlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRGYWN0b3J5LmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEhlYWRlcnMuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9FdmVudEludGVyZmFjZXMuaCBcCkBAIC0zNzY2LDYgKzM3NjcsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2ljdS91bmljb2RlL3V0eXBlcy5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91dmVyc2lvbi5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQmluZGluZ1Zpc2l0b3JzLmggXAorICAgIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHAgXAorICAgIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29uc29sZUFQSVR5cGVzLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmlu
ZGV4IGY3ODc3YjcuLmY0MWM2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTc1NTgsNiArMTc1NTgsMTQgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGJyaWRnZVxydW50aW1lX21ldGhvZC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxicmlkZ2VccnVudGltZV9vYmplY3QuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYnJpZGdlXHJ1bnRpbWVfcm9vdC5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIj4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxDb25z
b2xlTWVzc2FnZS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KQEAgLTE4MDg3LDYgKzE4MDk1LDcgQEAKICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVt
R3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
Q1NTR3JhbW1hci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXENvbW1hbmRMaW5lQVBJU2NyaXB0U291cmNlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRIZWFkZXJzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRJbnRl
cmZhY2VzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcRXZlbnRUYXJnZXRIZWFkZXJzLmgiIC8+CkBAIC0yMDk0MSw2ICsyMDk1MCw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxicmlkZ2VccnVudGltZV9yb290LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQmluZGluZ1Zpc2l0b3JzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29uc29sZUFQSVR5cGVzLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29tbWFuZExpbmVBUElNb2R1
bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxDb25zb2xlTWVz
c2FnZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENvbnRlbnRT
ZWFyY2hVdGlscy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXERP
TUVkaXRvci5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGFkMGQ1MDEuLmFjNzcyNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKQEAgLTQ3OTEsNiArNDc5MSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
cmlkZ2VccnVudGltZV9yb290LmNwcCI+CiAgICAgICA8RmlsdGVyPmJyaWRnZTwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENv
bW1hbmRMaW5lQVBJTW9kdWxlLmNwcCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XENvbnNvbGVNZXNzYWdlLmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMTIzNjgsNiArMTIzNzEsOSBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEJpbmRpbmdWaXNpdG9ycy5oIj4KICAgICAgIDxGaWx0ZXI+
aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcQ29tbWFuZExpbmVBUElNb2R1bGUuaCI+CisgICAgICA8RmlsdGVy
Pmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXENvbnNvbGVBUElUeXBlcy5oIj4KICAgICAgIDxGaWx0ZXI+aW5z
cGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMzAzOSw2ICsxMzA0NSw5IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQ1NTR3Jh
bW1hci5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xDb21tYW5kTGluZUFQSVNjcmlwdFNvdXJjZS5oIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZFNv
dXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xFdmVudEhlYWRlcnMuaCI+CiAgICAgICA8RmlsdGVy
PkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzFjYjA2NC4u
MjRlZDFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzUyNyw2ICszNTI3LDkgQEAKIAkJQTU0QTgyRjExNTIyOERGNjAwQzcy
QkE2IC8qIERPTU5vZGVQcml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyog
RE9NTm9kZVByaXZhdGUuaCAqLzsgfTsKIAkJQTU3MzJCMEExMzZBMTYxRDAwNUM4RDdDIC8qIERh
dGVDb21wb25lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1NzMyQjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgKi87
IH07CiAJCUE1NzMyQjBCMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3MzJCMDkxMzZBMTYx
RDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggKi87IH07CisJCUE1ODRGRTI2MTg2MzdEQUIw
MDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8q
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi87IH07CisJCUE1ODRGRTJCMTg2Mzg3MEYw
MDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29t
bWFuZExpbmVBUElNb2R1bGUuY3BwICovOyB9OworCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQ
SU1vZHVsZS5oICovOyB9OwogCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTkzQ0Y4QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVBMkFG
MEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAv
KiBQYWdlRGVidWdnYWJsZS5jcHAgKi87IH07CiAJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAv
KiBQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87
IH07CkBAIC0xMDM2MCw2ICsxMDM2MywxMCBAQAogCQlBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYg
LyogRE9NTm9kZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
Tm9kZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDgxMzZB
MTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNTg0RkUyNzE4NjM3RENBMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU4NEZFMjkx
ODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1h
bmRMaW5lQVBJTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1h
bmRMaW5lQVBJTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjcy
MTg0MDJDRTkwMEJGQ0UyNyAvKiBwcm90b2NvbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IHByb3RvY29sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyogY29tYmluZS1q
YXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSAiY29tYmluZS1qYXZhc2Ny
aXB0LXJlc291cmNlcy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjhB
MTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDQ2MSw2ICsxNDQ2OCw3IEBACiAJCTFDNUZBRUNBMERDRkQ4
QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5oICovLAogCQkJCUFBOTEyNzUwMTU3RTM1QTUwMDQ1NEU1NCAvKiBJbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oICovLAogCQkJCTdBNTYzRTU0MTJERTMyQjAw
MEY0NTM2RCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLAogCQkJCTRGNzA3QTk3MTFFRjY3
OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwICovLApAQCAt
MTQ0OTAsNiArMTQ0OTgsOSBAQAogCQkJCUE1MTgyMjUzMTdFMjhDRjEwMEE5QkExRCAvKiBTY3Jp
cHRzICovLAogCQkJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21iaW5lLWphdmFzY3Jp
cHQtcmVzb3VyY2VzLnBsICovLAogCQkJCUYzNUFFNUFCMTQ5MjVGNUIwMDRENTc3NiAvKiBCaW5k
aW5nVmlzaXRvcnMuaCAqLywKKwkJCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGUuY3BwICovLAorCQkJCUE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZS5oICovLAorCQkJCUE1ODRGRTI3MTg2MzdEQ0EwMDg0M0IxMCAv
KiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyAqLywKIAkJCQkyREYyRTlENDE2NkUzOTc0
MDAzNUJFRjIgLyogQ29uc29sZUFQSVR5cGVzLmggKi8sCiAJCQkJNDFGMDYxOEQwRjVGMDY5ODAw
QTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLywKIAkJCQk0MUYwNjE4QzBGNUYwNjk4MDBB
MDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCAqLywKQEAgLTIyOTYwLDYgKzIyOTcxLDcgQEAKIAkJ
CQkzRjJCMzNFQjE2NUFGMTU2MDBFMzk4N0MgLyogRE9NV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzRjJCMzNFRDE2NUFGMTU2MDBFMzk4N0MgLyogRE9NV2ViS2l0
Q1NTVmlld3BvcnRSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE3MTgy
MDU0MDcwMEYyQjQyNCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4QTE5NTkzMjE0N0VBMTZFMDBEMUVBNjEgLyogRE9NV2ViS2l0
TmFtZWRGbG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTE5NTkzNDE0N0VBMTZFMDBEMUVBNjEg
LyogRE9NV2ViS2l0TmFtZWRGbG93SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBG
RjRDMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjMzNzAsNiArMjMzODIsNyBAQAogCQkJCTU5MTNBMjQyMTNENDlFQkEwMEY1
QjA1QyAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUM1
MEVGODZENDcwMDlEMENBRiAvKiBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTEyNUY4NTYxODJDMEY4MzAwRDg0Q0Q5IC8qIENyeXB0b0tleVNlcmlhbGl6
YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE1ODRGRTI2MTg2MzdEQUIwMDg0M0IxMCAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q2NDFFQzAx
ODE5QjM2MDAwRUU0QzQxIC8qIE1lZGlhVGltZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBD
MDU0Q0QxMTE4QzhFNDAwQ0UyNjM2IC8qIElETFBhcnNlci5wbSBpbiBIZWFkZXJzICovLAogCQkJ
CUMzQ0YxN0E1MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI4MDk5LDYgKzI4MTEyLDcgQEAKIAkJCQlCMjU1OTk4NDBEMDBEOEJBMDBCQjgy
NUMgLyogU1ZHRkVJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlFRTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFE
NzE5RUIxODExMDZFMDAwMTZEQzUxIC8qIElEQlJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTU4NEZFMkIxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyMjI3OUYxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUxpZ2h0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlGMzBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RjYwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MDJkMmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3Bw
CkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1
bGUuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbW1hbmRMaW5lQVBJ
TW9kdWxlOjpDb21tYW5kTGluZUFQSU1vZHVsZSgpCisgICAgOiBJbmplY3RlZFNjcmlwdE1vZHVs
ZShBU0NJSUxpdGVyYWwoIkNvbW1hbmRMaW5lQVBJIikpCit7Cit9CisKK3ZvaWQgQ29tbWFuZExp
bmVBUElNb2R1bGU6OmluamVjdElmTmVlZGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCkKK3sKKyAgICBD
b21tYW5kTGluZUFQSU1vZHVsZSBtb2R1bGU7CisgICAgbW9kdWxlLmVuc3VyZUluamVjdGVkKGlu
amVjdGVkU2NyaXB0TWFuYWdlciwgaW5qZWN0ZWRTY3JpcHQpOworfQorCitTdHJpbmcgQ29tbWFu
ZExpbmVBUElNb2R1bGU6OnNvdXJjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyks
IHNpemVvZihDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcykpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43NWUzMTYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29t
bWFuZExpbmVBUElNb2R1bGVfaAorI2RlZmluZSBDb21tYW5kTGluZUFQSU1vZHVsZV9oCisKKyNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdE1vZHVsZS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb21tYW5kTGluZUFQSU1vZHVsZSBGSU5B
TCA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdE1vZHVsZSB7CitwdWJsaWM6CisgICAgQ29tbWFuZExp
bmVBUElNb2R1bGUoKTsKKworICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCByZXR1cm5zT2JqZWN0KCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KKworICAgIHN0YXRpYyB2b2lkIGluamVjdElmTmVlZGVkKEluamVjdGVk
U2NyaXB0TWFuYWdlciosIEluamVjdGVkU2NyaXB0KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAvLyAhZGVmaW5l
ZChDb21tYW5kTGluZUFQSU1vZHVsZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjdhMmM1YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKQEAgLTAsMCArMSwzNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisvKioKKyAqIEBwYXJhbSB7SW5qZWN0ZWRTY3JpcHRIb3N0fSBJbmplY3RlZFNjcmlwdEhv
c3QKKyAqIEBwYXJhbSB7V2luZG93fSBpbnNwZWN0ZWRXaW5kb3cKKyAqIEBwYXJhbSB7bnVtYmVy
fSBpbmplY3RlZFNjcmlwdElkCisgKi8KKyhmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBp
bnNwZWN0ZWRXaW5kb3csIGluamVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0KSB7CisKKy8q
KgorICogQHBhcmFtIHtBcmd1bWVudHN9IGFycmF5CisgKiBAcGFyYW0ge251bWJlcj19IGluZGV4
CisgKiBAcmV0dXJuIHtBcnJheS48Kj59CisgKi8KK2Z1bmN0aW9uIHNsaWNlKGFycmF5LCBpbmRl
eCkKK3sKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgZm9yICh2YXIgaSA9IGluZGV4IHx8IDA7
IGkgPCBhcnJheS5sZW5ndGg7ICsraSkKKyAgICAgICAgcmVzdWx0LnB1c2goYXJyYXlbaV0pOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qKgorICogUGxlYXNlIHVzZSB0aGlzIGJpbmQsIG5v
dCB0aGUgb25lIGZyb20gRnVuY3Rpb24ucHJvdG90eXBlCisgKiBAcGFyYW0ge2Z1bmN0aW9uKC4u
Lil9IGZ1bmMKKyAqIEBwYXJhbSB7T2JqZWN0fSB0aGlzT2JqZWN0CisgKiBAcGFyYW0gey4uLm51
bWJlcn0gdmFyX2FyZ3MKKyAqLworZnVuY3Rpb24gYmluZChmdW5jLCB0aGlzT2JqZWN0LCB2YXJf
YXJncykKK3sKKyAgICB2YXIgYXJncyA9IHNsaWNlKGFyZ3VtZW50cywgMik7CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0gey4uLm51bWJlcn0gdmFyX2FyZ3MKKyAgICAgKi8KKyAgICBmdW5jdGlv
biBib3VuZCh2YXJfYXJncykKKyAgICB7CisgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXNP
YmplY3QsIGFyZ3MuY29uY2F0KHNsaWNlKGFyZ3VtZW50cykpKTsKKyAgICB9CisgICAgYm91bmQu
dG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICJib3VuZDogIiArIGZ1bmM7
CisgICAgfTsKKyAgICByZXR1cm4gYm91bmQ7Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisg
KiBAcGFyYW0ge0NvbW1hbmRMaW5lQVBJSW1wbH0gY29tbWFuZExpbmVBUElJbXBsCisgKiBAcGFy
YW0ge09iamVjdH0gY2FsbEZyYW1lCisgKi8KK2Z1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNvbW1h
bmRMaW5lQVBJSW1wbCwgY2FsbEZyYW1lKQoreworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBtZW1iZXIKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGZ1bmN0
aW9uIGluU2NvcGVWYXJpYWJsZXMobWVtYmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFjYWxsRnJh
bWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIHNjb3BlQ2hhaW4g
PSBjYWxsRnJhbWUuc2NvcGVDaGFpbjsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY29w
ZUNoYWluLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAobWVtYmVyIGluIHNjb3BlQ2hh
aW5baV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgZm9yIHdoaWNoIGEgdG9TdHJpbmcgbWV0aG9kIHNo
b3VsZCBiZSBnZW5lcmF0ZWQuCisgICAgICogQHJldHVybiB7ZnVuY3Rpb24oKTpzdHJpbmd9Cisg
ICAgICovCisgICAgZnVuY3Rpb24gY3VzdG9tVG9TdHJpbmdNZXRob2QobmFtZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAi
KCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07CisgICAgfQorCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBDb21tYW5kTGluZUFQSS5tZW1iZXJzXy5sZW5ndGg7ICsraSkgeworICAgICAgICB2
YXIgbWVtYmVyID0gQ29tbWFuZExpbmVBUEkubWVtYmVyc19baV07CisgICAgICAgIGlmIChtZW1i
ZXIgaW4gaW5zcGVjdGVkV2luZG93IHx8IGluU2NvcGVWYXJpYWJsZXMobWVtYmVyKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHRoaXNbbWVtYmVyXSA9IGJpbmQoY29tbWFuZExp
bmVBUElJbXBsW21lbWJlcl0sIGNvbW1hbmRMaW5lQVBJSW1wbCk7CisgICAgICAgIHRoaXNbbWVt
YmVyXS50b1N0cmluZyA9IGN1c3RvbVRvU3RyaW5nTWV0aG9kKG1lbWJlcik7CisgICAgfQorCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICAgICAgdmFyIG1lbWJlciA9ICIk
IiArIGk7CisgICAgICAgIGlmIChtZW1iZXIgaW4gaW5zcGVjdGVkV2luZG93IHx8IGluU2NvcGVW
YXJpYWJsZXMobWVtYmVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHRoaXMu
X19kZWZpbmVHZXR0ZXJfXygiJCIgKyBpLCBiaW5kKGNvbW1hbmRMaW5lQVBJSW1wbC5faW5zcGVj
dGVkT2JqZWN0LCBjb21tYW5kTGluZUFQSUltcGwsIGkpKTsKKyAgICB9CisKKyAgICB0aGlzLiRf
ID0gaW5qZWN0ZWRTY3JpcHQuX2xhc3RSZXN1bHQ7Cit9CisKKy8qKgorICogQHR5cGUge0FycmF5
LjxzdHJpbmc+fQorICogQGNvbnN0CisgKi8KK0NvbW1hbmRMaW5lQVBJLm1lbWJlcnNfID0gWwor
ICAgICIkIiwgIiQkIiwgIiR4IiwgImRpciIsICJkaXJ4bWwiLCAia2V5cyIsICJ2YWx1ZXMiLCAi
cHJvZmlsZSIsICJwcm9maWxlRW5kIiwKKyAgICAibW9uaXRvckV2ZW50cyIsICJ1bm1vbml0b3JF
dmVudHMiLCAiaW5zcGVjdCIsICJjb3B5IiwgImNsZWFyIiwgImdldEV2ZW50TGlzdGVuZXJzIgor
XTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gQ29tbWFuZExpbmVBUElJ
bXBsKCkKK3sKK30KKworQ29tbWFuZExpbmVBUElJbXBsLnByb3RvdHlwZSA9IHsKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IKKyAgICAgKiBAcGFyYW0ge05vZGU9fSBz
dGFydAorICAgICAqLworICAgICQ6IGZ1bmN0aW9uIChzZWxlY3Rvciwgc3RhcnQpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fY2FuUXVlcnlTZWxlY3Rvck9uTm9kZShzdGFydCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RhcnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CisKKyAgICAgICAgdmFy
IHJlc3VsdCA9IGluc3BlY3RlZFdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9y
KTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIGlmIChzZWxlY3RvciAmJiBzZWxlY3RvclswXSAhPT0gIiMiKSB7CisgICAgICAgICAgICBy
ZXN1bHQgPSBpbnNwZWN0ZWRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0b3Ip
OworICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGluc3BlY3RlZFdp
bmRvdy5jb25zb2xlLndhcm4oIlRoZSBjb25zb2xlIGZ1bmN0aW9uICQoKSBoYXMgY2hhbmdlZCBm
cm9tICQ9Z2V0RWxlbWVudEJ5SWQoaWQpIHRvICQ9cXVlcnlTZWxlY3RvcihzZWxlY3RvcikuIFlv
dSBtaWdodCB0cnkgJChcIiMlc1wiKSIsIHNlbGVjdG9yICk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yCisg
ICAgICogQHBhcmFtIHtOb2RlPX0gc3RhcnQKKyAgICAgKi8KKyAgICAkJDogZnVuY3Rpb24gKHNl
bGVjdG9yLCBzdGFydCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jYW5RdWVyeVNlbGVjdG9y
T25Ob2RlKHN0YXJ0KSkKKyAgICAgICAgICAgIHJldHVybiBzdGFydC5xdWVyeVNlbGVjdG9yQWxs
KHNlbGVjdG9yKTsKKyAgICAgICAgcmV0dXJuIGluc3BlY3RlZFdpbmRvdy5kb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtOb2RlPX0gbm9kZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgX2Nh
blF1ZXJ5U2VsZWN0b3JPbk5vZGU6IGZ1bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1
cm4gISFub2RlICYmIEluamVjdGVkU2NyaXB0SG9zdC50eXBlKG5vZGUpID09PSAibm9kZSIgJiYg
KG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8IG5vZGUubm9kZVR5cGUgPT09
IE5vZGUuRE9DVU1FTlRfTk9ERSB8fCBub2RlLm5vZGVUeXBlID09PSBOb2RlLkRPQ1VNRU5UX0ZS
QUdNRU5UX05PREUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
eHBhdGgKKyAgICAgKiBAcGFyYW0ge05vZGU9fSBjb250ZXh0CisgICAgICovCisgICAgJHg6IGZ1
bmN0aW9uKHhwYXRoLCBjb250ZXh0KQorICAgIHsKKyAgICAgICAgdmFyIGRvYyA9IChjb250ZXh0
ICYmIGNvbnRleHQub3duZXJEb2N1bWVudCkgfHwgaW5zcGVjdGVkV2luZG93LmRvY3VtZW50Owor
ICAgICAgICB2YXIgcmVzdWx0ID0gZG9jLmV2YWx1YXRlKHhwYXRoLCBjb250ZXh0IHx8IGRvYywg
bnVsbCwgWFBhdGhSZXN1bHQuQU5ZX1RZUEUsIG51bGwpOworICAgICAgICBzd2l0Y2ggKHJlc3Vs
dC5yZXN1bHRUeXBlKSB7CisgICAgICAgIGNhc2UgWFBhdGhSZXN1bHQuTlVNQkVSX1RZUEU6Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0Lm51bWJlclZhbHVlOworICAgICAgICBjYXNlIFhQYXRo
UmVzdWx0LlNUUklOR19UWVBFOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zdHJpbmdWYWx1
ZTsKKyAgICAgICAgY2FzZSBYUGF0aFJlc3VsdC5CT09MRUFOX1RZUEU6CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0LmJvb2xlYW5WYWx1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHZhciBub2RlcyA9IFtdOworICAgICAgICAgICAgdmFyIG5vZGU7CisgICAgICAgICAgICB3aGls
ZSAobm9kZSA9IHJlc3VsdC5pdGVyYXRlTmV4dCgpKQorICAgICAgICAgICAgICAgIG5vZGVzLnB1
c2gobm9kZSk7CisgICAgICAgICAgICByZXR1cm4gbm9kZXM7CisgICAgICAgIH0KKyAgICB9LAor
CisgICAgZGlyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gaW5zcGVjdGVkV2lu
ZG93LmNvbnNvbGUuZGlyLmFwcGx5KGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLCBhcmd1bWVudHMp
CisgICAgfSwKKworICAgIGRpcnhtbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLmRpcnhtbC5hcHBseShpbnNwZWN0ZWRXaW5kb3cuY29u
c29sZSwgYXJndW1lbnRzKQorICAgIH0sCisKKyAgICBrZXlzOiBmdW5jdGlvbihvYmplY3QpCisg
ICAgeworICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKKyAgICB9LAorCisgICAg
dmFsdWVzOiBmdW5jdGlvbihvYmplY3QpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gW107
CisgICAgICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpCisgICAgICAgICAgICByZXN1bHQucHVz
aChvYmplY3Rba2V5XSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIHBy
b2ZpbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNwZWN0ZWRXaW5kb3cu
Y29uc29sZS5wcm9maWxlLmFwcGx5KGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLCBhcmd1bWVudHMp
CisgICAgfSwKKworICAgIHByb2ZpbGVFbmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5wcm9maWxlRW5kLmFwcGx5KGluc3BlY3RlZFdp
bmRvdy5jb25zb2xlLCBhcmd1bWVudHMpCisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7T2JqZWN0fSBvYmplY3QKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fHN0cmluZz19
IHR5cGVzCisgICAgICovCisgICAgbW9uaXRvckV2ZW50czogZnVuY3Rpb24ob2JqZWN0LCB0eXBl
cykKKyAgICB7CisgICAgICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5l
ciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHR5cGVzID0gdGhpcy5fbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIG9i
amVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCB0aGlzLl9sb2dFdmVudCwgZmFsc2Up
OworICAgICAgICAgICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIHRoaXMuX2xv
Z0V2ZW50LCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtPYmplY3R9IG9iamVjdAorICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz58c3RyaW5n
PX0gdHlwZXMKKyAgICAgKi8KKyAgICB1bm1vbml0b3JFdmVudHM6IGZ1bmN0aW9uKG9iamVjdCwg
dHlwZXMpCisgICAgeworICAgICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlz
dGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB0eXBlcyA9IHRoaXMuX25vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
b2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIHRoaXMuX2xvZ0V2ZW50LCBmYWxz
ZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Kn0gb2JqZWN0CisgICAgICog
QHJldHVybiB7Kn0KKyAgICAgKi8KKyAgICBpbnNwZWN0OiBmdW5jdGlvbihvYmplY3QpCisgICAg
eworICAgICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQuX2luc3BlY3Qob2JqZWN0KTsKKyAgICB9
LAorCisgICAgY29weTogZnVuY3Rpb24ob2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKGluamVj
dGVkU2NyaXB0Ll9zdWJ0eXBlKG9iamVjdCkgPT09ICJub2RlIikKKyAgICAgICAgICAgIG9iamVj
dCA9IG9iamVjdC5vdXRlckhUTUw7CisgICAgICAgIEluamVjdGVkU2NyaXB0SG9zdC5jb3B5VGV4
dChvYmplY3QpOworICAgIH0sCisKKyAgICBjbGVhcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgSW5qZWN0ZWRTY3JpcHRIb3N0LmNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7Tm9kZX0gbm9kZQorICAgICAqLworICAgIGdldEV2ZW50
TGlzdGVuZXJzOiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluamVjdGVk
U2NyaXB0SG9zdC5nZXRFdmVudExpc3RlbmVycyhub2RlKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtudW1iZXJ9IG51bQorICAgICAqLworICAgIF9pbnNwZWN0ZWRPYmplY3Q6
IGZ1bmN0aW9uKG51bSkKKyAgICB7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Qu
aW5zcGVjdGVkT2JqZWN0KG51bSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
QXJyYXkuPHN0cmluZz58c3RyaW5nPX0gdHlwZXMKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48c3Ry
aW5nPn0KKyAgICAgKi8KKyAgICBfbm9ybWFsaXplRXZlbnRUeXBlczogZnVuY3Rpb24odHlwZXMp
CisgICAgeworICAgICAgICBpZiAodHlwZW9mIHR5cGVzID09PSAidW5kZWZpbmVkIikKKyAgICAg
ICAgICAgIHR5cGVzID0gWyAibW91c2UiLCAia2V5IiwgInRvdWNoIiwgImNvbnRyb2wiLCAibG9h
ZCIsICJ1bmxvYWQiLCAiYWJvcnQiLCAiZXJyb3IiLCAic2VsZWN0IiwgImNoYW5nZSIsICJzdWJt
aXQiLCAicmVzZXQiLCAiZm9jdXMiLCAiYmx1ciIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNlYXJj
aCIsICJkZXZpY2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iIF07CisgICAgICAgIGVsc2Ug
aWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCisgICAgICAgICAgICB0eXBlcyA9IFsgdHlw
ZXMgXTsKKworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmICh0eXBlc1tpXSA9PT0g
Im1vdXNlIikKKyAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAsICJtb3VzZWRvd24i
LCAibW91c2V1cCIsICJjbGljayIsICJkYmxjbGljayIsICJtb3VzZW1vdmUiLCAibW91c2VvdmVy
IiwgIm1vdXNlb3V0IiwgIm1vdXNld2hlZWwiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVz
W2ldID09PSAia2V5IikKKyAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAsICJrZXlk
b3duIiwgImtleXVwIiwgImtleXByZXNzIiwgInRleHRJbnB1dCIpOworICAgICAgICAgICAgZWxz
ZSBpZiAodHlwZXNbaV0gPT09ICJ0b3VjaCIpCisgICAgICAgICAgICAgICAgcmVzdWx0LnNwbGlj
ZSgwLCAwLCAidG91Y2hzdGFydCIsICJ0b3VjaG1vdmUiLCAidG91Y2hlbmQiLCAidG91Y2hjYW5j
ZWwiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAiY29udHJvbCIpCisgICAg
ICAgICAgICAgICAgcmVzdWx0LnNwbGljZSgwLCAwLCAicmVzaXplIiwgInNjcm9sbCIsICJ6b29t
IiwgImZvY3VzIiwgImJsdXIiLCAic2VsZWN0IiwgImNoYW5nZSIsICJzdWJtaXQiLCAicmVzZXQi
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0eXBlc1tp
XSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfbG9nRXZlbnQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUubG9n
KGV2ZW50LnR5cGUsIGV2ZW50KTsKKyAgICB9Cit9CisKK2luamVjdGVkU2NyaXB0LkNvbW1hbmRM
aW5lQVBJID0gQ29tbWFuZExpbmVBUEk7CitpbmplY3RlZFNjcmlwdC5fY29tbWFuZExpbmVBUElJ
bXBsID0gbmV3IENvbW1hbmRMaW5lQVBJSW1wbCgpOworCisvLyBUaGlzIE1vZHVsZSBkb2Vzbid0
IGV4cG9zZSBhbiBvYmplY3QsIGl0IGp1c3QgYWRkcyBhbiBleHRlbnNpb24gdGhhdCBJbmplY3Rl
ZFNjcmlwdCB1c2VzLgorLy8gSG93ZXZlciwgd2UgcmV0dXJuIGFuIGVtcHR5IG9iamVjdCwgc28g
dGhhdCBJbmplY3RlZFNjcmlwdCBrbm93cyB0aGlzIG1vZHVsZSBoYXMgYmVlbiBsb2FkZWQuCity
ZXR1cm4ge307CisKK30pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZS5oCmluZGV4IGFjZWNlNmUuLjUwMWQyZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZS5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBJbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZSgpOwogICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCByZXR1cm5zT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
c3RhdGljIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlIG1vZHVsZUZvclN0YXRlKEluamVjdGVk
U2NyaXB0TWFuYWdlciosIEpTQzo6RXhlY1N0YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCmluZGV4IDkyNjhlZGYuLjA3OTdi
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1v
ZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9k
dWxlLmNwcApAQCAtNTIsNiArNTIsMTEgQEAgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OkluamVjdGVk
U2NyaXB0TW9kdWxlKGNvbnN0IFN0cmluZyYgbmFtZSkKIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1
bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLCBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0
Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICBlbnN1cmVJbmplY3RlZChpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIGluamVjdGVkU2NyaXB0KTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5z
dXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIs
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0KQorewogICAgIEFTU0VSVCghaW5qZWN0ZWRT
Y3JpcHQuaGFzTm9WYWx1ZSgpKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgp
KQogICAgICAgICByZXR1cm47CkBAIC02NywxNCArNzIsMTYgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNj
cmlwdE0KICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsKICAgICAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkpOwogICAgICAgICByZXN1bHRWYWx1ZSA9
IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFk
RXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGhhZEV4Y2VwdGlvbiB8fCByZXN1bHRWYWx1ZS5oYXNO
b1ZhbHVlKCkgfHwgIXJlc3VsdFZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGhhZEV4
Y2VwdGlvbiB8fCAocmV0dXJuc09iamVjdCgpICYmIChyZXN1bHRWYWx1ZS5oYXNOb1ZhbHVlKCkg
fHwgIXJlc3VsdFZhbHVlLmlzT2JqZWN0KCkpKSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBE
ZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgbW9kdWxlT2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHRW
YWx1ZSk7Ci0gICAgaW5pdGlhbGl6ZShtb2R1bGVPYmplY3QsIGluamVjdGVkU2NyaXB0TWFuYWdl
ci0+aW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaygpKTsKKyAgICBpZiAocmV0dXJuc09iamVjdCgp
KSB7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBtb2R1bGVPYmplY3QoaW5qZWN0
ZWRTY3JpcHQuc2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFsdWUpOworICAgICAgICBpbml0aWFsaXpl
KG1vZHVsZU9iamVjdCwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0ZWRTdGF0ZUFjY2Vz
c0NoZWNrKCkpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAppbmRleCA5M2ZiMTdi
Li5mZWJhMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuaApAQCAtMzEsMTkgKzMxLDIxIEBACiAjaWZuZGVmIEluamVjdGVkU2NyaXB0TW9k
dWxlX2gKICNkZWZpbmUgSW5qZWN0ZWRTY3JpcHRNb2R1bGVfaAogCisjaW5jbHVkZSAiSW5qZWN0
ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEJhc2UuaCIKICNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3RlZFNj
cmlwdE1hbmFnZXI7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCiBjbGFzcyBJbmplY3RlZFNj
cmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmV0dXJu
c09iamVjdCgpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIC8vIERvIG5vdCBleHBvc2Ug
Y29uc3RydWN0b3IgaW4gdGhlIGNoaWxkIGNsYXNzZXMgYXMgd2VsbC4gSW5zdGVhZCBwcm92aWRl
CkBAIC01MSwxMCArNTMsMTEgQEAgcHJvdGVjdGVkOgogICAgIC8vIGFuZCBjYWxsIGl0cyBlbnN1
cmVJbmplY3RlZCgpIG1ldGhvZCBpbW1lZGlhdGVseS4KICAgICBJbmplY3RlZFNjcmlwdE1vZHVs
ZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZvaWQgZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgSlNDOjpFeGVjU3RhdGUqKTsKKyAgICB2b2lkIGVuc3VyZUluamVjdGVk
KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluamVjdGVkU2NyaXB0KTsKIH07CiAKLSNlbmRpZgot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQor
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNv
dXJjZS5qcwppbmRleCAxODdhZDE0Li4yMDY0NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC0zMCw1MSArMzAsMTUgQEAKIAog
LyoqCiAgKiBAcGFyYW0ge0luamVjdGVkU2NyaXB0SG9zdH0gSW5qZWN0ZWRTY3JpcHRIb3N0Ci0g
KiBAcGFyYW0ge1dpbmRvd30gaW5zcGVjdGVkV2luZG93CisgKiBAcGFyYW0ge0dsb2JhbE9iamVj
dH0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0CiAgKiBAcGFyYW0ge251bWJlcn0gaW5qZWN0ZWRTY3Jp
cHRJZAogICovCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkV2luZG93
LCBpbmplY3RlZFNjcmlwdElkKSB7CisoZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7CiAKIC8vIFByb3RlY3QgYWdh
aW5zdCBPYmplY3Qgb3ZlcndyaXR0ZW4gYnkgdGhlIHVzZXIgY29kZS4KIHZhciBPYmplY3QgPSB7
fS5jb25zdHJ1Y3RvcjsKIAogLyoqCi0gKiBAcGFyYW0ge0FyZ3VtZW50c30gYXJyYXkKLSAqIEBw
YXJhbSB7bnVtYmVyPX0gaW5kZXgKLSAqIEByZXR1cm4ge0FycmF5LjwqPn0KLSAqLwotZnVuY3Rp
b24gc2xpY2UoYXJyYXksIGluZGV4KQotewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICBmb3Ig
KHZhciBpID0gaW5kZXggfHwgMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQotICAgICAgICByZXN1
bHQucHVzaChhcnJheVtpXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoqCi0gKiBQbGVh
c2UgdXNlIHRoaXMgYmluZCwgbm90IHRoZSBvbmUgZnJvbSBGdW5jdGlvbi5wcm90b3R5cGUKLSAq
IEBwYXJhbSB7ZnVuY3Rpb24oLi4uKX0gZnVuYwotICogQHBhcmFtIHtPYmplY3R9IHRoaXNPYmpl
Y3QKLSAqIEBwYXJhbSB7Li4ubnVtYmVyfSB2YXJfYXJncwotICovCi1mdW5jdGlvbiBiaW5kKGZ1
bmMsIHRoaXNPYmplY3QsIHZhcl9hcmdzKQotewotICAgIHZhciBhcmdzID0gc2xpY2UoYXJndW1l
bnRzLCAyKTsKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7Li4ubnVtYmVyfSB2YXJfYXJncwot
ICAgICAqLwotICAgIGZ1bmN0aW9uIGJvdW5kKHZhcl9hcmdzKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZ1bmMuYXBwbHkodGhpc09iamVjdCwgYXJncy5jb25jYXQoc2xpY2UoYXJndW1lbnRzKSkp
OwotICAgIH0KLSAgICBib3VuZC50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1
cm4gImJvdW5kOiAiICsgZnVuYzsKLSAgICB9OwotICAgIHJldHVybiBib3VuZDsKLX0KLQotLyoq
CiAgKiBAY29uc3RydWN0b3IKICAqLwogdmFyIEluamVjdGVkU2NyaXB0ID0gZnVuY3Rpb24oKQpA
QCAtMTExLDEzICs3NSwxMyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgLyoq
CiAgICAgICogQHBhcmFtIHsqfSBvYmplY3QKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBO
YW1lCi0gICAgICogQHBhcmFtIHtib29sZWFufSBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cKKyAg
ICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhbkFjY2Vzc0luc3BlY3RlZEdsb2JhbE9iamVjdAogICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gZ2VuZXJhdGVQcmV2aWV3CiAgICAgICogQHJldHVybiB7IVJ1
bnRpbWVBZ2VudC5SZW1vdGVPYmplY3R9CiAgICAgICovCi0gICAgd3JhcE9iamVjdDogZnVuY3Rp
b24ob2JqZWN0LCBncm91cE5hbWUsIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdywgZ2VuZXJhdGVQ
cmV2aWV3KQorICAgIHdyYXBPYmplY3Q6IGZ1bmN0aW9uKG9iamVjdCwgZ3JvdXBOYW1lLCBjYW5B
Y2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGdlbmVyYXRlUHJldmlldykKICAgICB7Ci0gICAg
ICAgIGlmIChjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cpCisgICAgICAgIGlmIChjYW5BY2Nlc3NJ
bnNwZWN0ZWRHbG9iYWxPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd3JhcE9iamVj
dChvYmplY3QsIGdyb3VwTmFtZSwgZmFsc2UsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9mYWxsYmFja1dyYXBwZXIob2JqZWN0KTsKICAgICB9LApAQCAtMTM4LDE0ICsx
MDIsMTQgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioK
LSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdworICAgICAq
IEBwYXJhbSB7Ym9vbGVhbn0gY2FuQWNjZXNzSW5zcGVjdGVkR2xvYmFsT2JqZWN0CiAgICAgICog
QHBhcmFtIHtPYmplY3R9IHRhYmxlCiAgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPnxzdHJp
bmd8Ym9vbGVhbn0gY29sdW1ucwogICAgICAqIEByZXR1cm4geyFSdW50aW1lQWdlbnQuUmVtb3Rl
T2JqZWN0fQogICAgICAqLwotICAgIHdyYXBUYWJsZTogZnVuY3Rpb24oY2FuQWNjZXNzSW5zcGVj
dGVkV2luZG93LCB0YWJsZSwgY29sdW1ucykKKyAgICB3cmFwVGFibGU6IGZ1bmN0aW9uKGNhbkFj
Y2Vzc0luc3BlY3RlZEdsb2JhbE9iamVjdCwgdGFibGUsIGNvbHVtbnMpCiAgICAgewotICAgICAg
ICBpZiAoIWNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdykKKyAgICAgICAgaWYgKCFjYW5BY2Nlc3NJ
bnNwZWN0ZWRHbG9iYWxPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZmFsbGJhY2tX
cmFwcGVyKHRhYmxlKTsKICAgICAgICAgdmFyIGNvbHVtbk5hbWVzID0gbnVsbDsKICAgICAgICAg
aWYgKHR5cGVvZiBjb2x1bW5zID09PSAic3RyaW5nIikKQEAgLTI3Miw3ICsyMzYsOSBAQCBJbmpl
Y3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBhcmdzQXJyYXkgPSBJbmplY3Rl
ZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgYXJncyArICIpIik7CiAgICAgICAgIHZhciByZXN1
bHQgPSB0aGlzW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMsIGFyZ3NBcnJheSk7CiAgICAgICAgIGlm
ICh0eXBlb2YgcmVzdWx0ID09PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAgaW5zcGVjdGVk
V2luZG93LmNvbnNvbGUuZXJyb3IoIldlYiBJbnNwZWN0b3IgZXJyb3I6IEluamVjdGVkU2NyaXB0
LiVzIHJldHVybnMgdW5kZWZpbmVkIiwgbWV0aG9kTmFtZSk7CisgICAgICAgICAgICAvLyBGSVhN
RTogSlMgQ29udGV4dCBpbnNwZWN0aW9uIGN1cnJlbnRseSBkb2VzIG5vdCBoYXZlIGEgZ2xvYmFs
LmNvbnNvbGUgb2JqZWN0LgorICAgICAgICAgICAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVjdC5j
b25zb2xlKQorICAgICAgICAgICAgICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlLmVy
cm9yKCJXZWIgSW5zcGVjdG9yIGVycm9yOiBJbmplY3RlZFNjcmlwdC4lcyByZXR1cm5zIHVuZGVm
aW5lZCIsIG1ldGhvZE5hbWUpOwogICAgICAgICAgICAgcmVzdWx0ID0gbnVsbDsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTU0LDcgKzUyMCwxMyBAQCBJbmplY3RlZFNj
cmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2V2YWx1YXRlT246IGZ1bmN0aW9uKGV2
YWxGdW5jdGlvbiwgb2JqZWN0LCBvYmplY3RHcm91cCwgZXhwcmVzc2lvbiwgaXNFdmFsT25DYWxs
RnJhbWUsIGluamVjdENvbW1hbmRMaW5lQVBJKQogICAgIHsKLSAgICAgICAgdmFyIGNvbW1hbmRM
aW5lQVBJID0gaW5qZWN0Q29tbWFuZExpbmVBUEkgPyBuZXcgQ29tbWFuZExpbmVBUEkodGhpcy5f
Y29tbWFuZExpbmVBUElJbXBsLCBpc0V2YWxPbkNhbGxGcmFtZSA/IG9iamVjdCA6IG51bGwpIDog
bnVsbDsKKyAgICAgICAgdmFyIGNvbW1hbmRMaW5lQVBJID0gbnVsbDsKKyAgICAgICAgaWYgKGlu
amVjdENvbW1hbmRMaW5lQVBJKSB7CisgICAgICAgICAgICBpZiAodGhpcy5Db21tYW5kTGluZUFQ
SSkKKyAgICAgICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IG5ldyB0aGlzLkNvbW1hbmRMaW5l
QVBJKHRoaXMuX2NvbW1hbmRMaW5lQVBJSW1wbCwgaXNFdmFsT25DYWxsRnJhbWUgPyBvYmplY3Qg
OiBudWxsKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21tYW5kTGluZUFQ
SSA9IG5ldyBCYXNpY0NvbW1hbmRMaW5lQVBJOworICAgICAgICB9CiAKICAgICAgICAgaWYgKGlz
RXZhbE9uQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICAvLyBXZSBjYW4gb25seSB1c2UgdGhpcyBh
cHByb2FjaCBpZiB0aGUgZXZhbHVhdGUgZnVuY3Rpb24gaXMgdGhlIHRydWUgJ2V2YWwnLiBUaGF0
IGFsbG93cyB1cyB0byB1c2UgaXQgd2l0aApAQCAtNTYyLDcgKzUzNCwxMSBAQCBJbmplY3RlZFNj
cmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAvLyBjcmVhdGUgdGhhdCBwcm92aWRlcyB0
aGUgY29tbWFuZCBsaW5lIEFQSXMuCiAKICAgICAgICAgICAgIHZhciBwYXJhbWV0ZXJzID0gW0lu
amVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSwgZXhwcmVzc2lvbl07Ci0gICAgICAgICAgICB2YXIg
ZXhwcmVzc2lvbkZ1bmN0aW9uQm9keSA9ICJ2YXIgX19vcmlnaW5hbEV2YWwgPSB3aW5kb3cuZXZh
bDsgd2luZG93LmV2YWwgPSBfX2V2YWw7IHRyeSB7IHJldHVybiBldmFsKF9fY3VycmVudEV4cHJl
c3Npb24pOyB9IGZpbmFsbHkgeyB3aW5kb3cuZXZhbCA9IF9fb3JpZ2luYWxFdmFsOyB9IjsKKyAg
ICAgICAgICAgIHZhciBleHByZXNzaW9uRnVuY3Rpb25Cb2R5ID0gIiIgKworICAgICAgICAgICAg
ICAgICJ2YXIgZ2xvYmFsID0gRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKSB8fCAoMSwgZXZhbCko
J3RoaXMnKTsiICsKKyAgICAgICAgICAgICAgICAidmFyIF9fb3JpZ2luYWxFdmFsID0gZ2xvYmFs
LmV2YWw7IGdsb2JhbC5ldmFsID0gX19ldmFsOyIgKworICAgICAgICAgICAgICAgICJ0cnkgeyBy
ZXR1cm4gZXZhbChfX2N1cnJlbnRFeHByZXNzaW9uKTsgfSIgKworICAgICAgICAgICAgICAgICJm
aW5hbGx5IHsgZ2xvYmFsLmV2YWwgPSBfX29yaWdpbmFsRXZhbDsgfSI7CiAKICAgICAgICAgICAg
IGlmIChjb21tYW5kTGluZUFQSSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIHVzaW5n
IGEgJ3dpdGgnIHN0YXRlbWVudCAod2hpY2ggZmFpbHMgaW4gc3RyaWN0IG1vZGUgYW5kIHJlcXVp
cmVzIGluamVjdGluZyB0aGUgQVBJIG9iamVjdCkKQEAgLTU5NiwyMSArNTcyLDI5IEBAIEluamVj
dGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gV2hlbiBub3QgZXZhbHVhdGluZyBv
biBhIGNhbGwgZnJhbWUgd2UgdXNlIGEgJ3dpdGgnIHN0YXRlbWVudCB0byBhbGxvdyB2YXIgYW5k
IGZ1bmN0aW9uIHN0YXRlbWVudHMgdG8gbGVhawogICAgICAgICAvLyBpbnRvIHRoZSBnbG9iYWwg
c2NvcGUuIFRoaXMgYWxsb3cgdGhlbSB0byBzdGljayBhcm91bmQgYmV0d2VlbiBldmFsdWF0aW9u
cy4KIAorICAgICAgICAvLyBGSVhNRTogSlMgQ29udGV4dCBpbnNwZWN0aW9uIGN1cnJlbnRseSBk
b2VzIG5vdCBoYXZlIGEgZ2xvYmFsLmNvbnNvbGUgb2JqZWN0LgogICAgICAgICB0cnkgewotICAg
ICAgICAgICAgaWYgKGNvbW1hbmRMaW5lQVBJICYmIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlKSB7
Ci0gICAgICAgICAgICAgICAgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuX19jb21tYW5kTGluZUFQ
SSA9IGNvbW1hbmRMaW5lQVBJOwotICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSAid2l0aCAo
KHdpbmRvdyAmJiB3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS5fX2NvbW1hbmRMaW5l
QVBJKSB8fCB7fSkgeyAiICsgZXhwcmVzc2lvbiArICJcbn0iOworICAgICAgICAgICAgaWYgKGNv
bW1hbmRMaW5lQVBJKSB7CisgICAgICAgICAgICAgICAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlKQorICAgICAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS5fX2NvbW1hbmRMaW5lQVBJID0gY29tbWFuZExpbmVBUEk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuX19jb21tYW5k
TGluZUFQSSA9IGNvbW1hbmRMaW5lQVBJOworICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSAi
d2l0aCAoKHRoaXMgJiYgKHRoaXMuY29uc29sZSA/IHRoaXMuY29uc29sZS5fX2NvbW1hbmRMaW5l
QVBJIDogdGhpcy5fX2NvbW1hbmRMaW5lQVBJKSkgfHwge30pIHsgIiArIGV4cHJlc3Npb24gKyAi
XG59IjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGV2YWxGdW5j
dGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lvbik7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0g
ZXZhbEZ1bmN0aW9uLmNhbGwoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBleHByZXNzaW9uKTsKIAog
ICAgICAgICAgICAgaWYgKG9iamVjdEdyb3VwID09PSAiY29uc29sZSIpCiAgICAgICAgICAgICAg
ICAgdGhpcy5fbGFzdFJlc3VsdCA9IHJlc3VsdDsKIAogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGlmIChjb21tYW5kTGluZUFQSSAm
JiBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZSkKLSAgICAgICAgICAgICAgICBkZWxldGUgaW5zcGVj
dGVkV2luZG93LmNvbnNvbGUuX19jb21tYW5kTGluZUFQSTsKKyAgICAgICAgICAgIGlmIChjb21t
YW5kTGluZUFQSSkgeworICAgICAgICAgICAgICAgIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZSkKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlLl9fY29tbWFuZExpbmVBUEk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICBkZWxldGUgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Ll9fY29tbWFuZExpbmVB
UEk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCkBAIC03MTUsMTAgKzY5OSwx
MiBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9t
b2R1bGVzW25hbWVdOwogICAgICAgICB2YXIgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNjcmlw
dEhvc3QuZXZhbHVhdGUoIigiICsgc291cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5cGVvZiBt
b2R1bGVGdW5jdGlvbiAhPT0gImZ1bmN0aW9uIikgewotICAgICAgICAgICAgaW5zcGVjdGVkV2lu
ZG93LmNvbnNvbGUuZXJyb3IoIldlYiBJbnNwZWN0b3IgZXJyb3I6IEEgZnVuY3Rpb24gd2FzIGV4
cGVjdGVkIGZvciBtb2R1bGUgJXMgZXZhbHVhdGlvbiIsIG5hbWUpOworICAgICAgICAgICAgLy8g
RklYTUU6IEpTIENvbnRleHQgaW5zcGVjdGlvbiBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZSBhIGds
b2JhbC5jb25zb2xlIG9iamVjdC4KKyAgICAgICAgICAgIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZSkKKyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5lcnJvcigiV2ViIEluc3BlY3RvciBlcnJvcjogQSBmdW5jdGlvbiB3YXMgZXhwZWN0ZWQgZm9y
IG1vZHVsZSAlcyBldmFsdWF0aW9uIiwgbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsK
ICAgICAgICAgfQotICAgICAgICB2YXIgbW9kdWxlID0gbW9kdWxlRnVuY3Rpb24uY2FsbChpbnNw
ZWN0ZWRXaW5kb3csIEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkV2luZG93LCBpbmplY3Rl
ZFNjcmlwdElkKTsKKyAgICAgICAgdmFyIG1vZHVsZSA9IG1vZHVsZUZ1bmN0aW9uLmNhbGwoaW5z
cGVjdGVkR2xvYmFsT2JqZWN0LCBJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2JhbE9i
amVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFt
ZV0gPSBtb2R1bGU7CiAgICAgICAgIHJldHVybiBtb2R1bGU7CiAgICAgfSwKQEAgLTgzNiw3ICs4
MjIsNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3RvU3Ry
aW5nOiBmdW5jdGlvbihvYmopCiAgICAgewotICAgICAgICAvLyBXZSBkb24ndCB1c2UgU3RyaW5n
KG9iaikgYmVjYXVzZSBpbnNwZWN0ZWRXaW5kb3cuU3RyaW5nIGlzIHVuZGVmaW5lZCBpZiBvd25p
bmcgZnJhbWUgbmF2aWdhdGVkIHRvIGFub3RoZXIgcGFnZS4KKyAgICAgICAgLy8gV2UgZG9uJ3Qg
dXNlIFN0cmluZyhvYmopIGJlY2F1c2UgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlN0cmluZyBpcyB1
bmRlZmluZWQgaWYgb3duaW5nIGZyYW1lIG5hdmlnYXRlZCB0byBhbm90aGVyIHBhZ2UuCiAgICAg
ICAgIHJldHVybiAiIiArIG9iajsKICAgICB9CiB9CkBAIC0xMDc3LDI3NyArMTA2MywxMCBAQCBJ
bmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fY3JlYXRlU2NvcGVKc29uID0gZnVuY3Rpb24o
c2NvcGVUeXBlQ29kZSwgc2NvcGVPYgogICAgIH07CiB9CiAKLS8qKgotICogQGNvbnN0cnVjdG9y
Ci0gKiBAcGFyYW0ge0NvbW1hbmRMaW5lQVBJSW1wbH0gY29tbWFuZExpbmVBUElJbXBsCi0gKiBA
cGFyYW0ge09iamVjdH0gY2FsbEZyYW1lCi0gKi8KLWZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNv
bW1hbmRMaW5lQVBJSW1wbCwgY2FsbEZyYW1lKQorZnVuY3Rpb24gQmFzaWNDb21tYW5kTGluZUFQ
SSgpCiB7Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lbWJlcgotICAgICAqIEBy
ZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgZnVuY3Rpb24gaW5TY29wZVZhcmlhYmxlcyht
ZW1iZXIpCi0gICAgewotICAgICAgICBpZiAoIWNhbGxGcmFtZSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICB2YXIgc2NvcGVDaGFpbiA9IGNhbGxGcmFtZS5zY29wZUNoYWlu
OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjb3BlQ2hhaW4ubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIGlmIChtZW1iZXIgaW4gc2NvcGVDaGFpbltpXSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1l
dGhvZCBmb3Igd2hpY2ggYSB0b1N0cmluZyBtZXRob2Qgc2hvdWxkIGJlIGdlbmVyYXRlZC4KLSAg
ICAgKiBAcmV0dXJuIHtmdW5jdGlvbigpOnN0cmluZ30KLSAgICAgKi8KLSAgICBmdW5jdGlvbiBj
dXN0b21Ub1N0cmluZ01ldGhvZChuYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
ICgpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUgQVBJ
XSB9IjsgfTsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IENvbW1hbmRMaW5lQVBJ
Lm1lbWJlcnNfLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBtZW1iZXIgPSBDb21tYW5kTGlu
ZUFQSS5tZW1iZXJzX1tpXTsKLSAgICAgICAgaWYgKG1lbWJlciBpbiBpbnNwZWN0ZWRXaW5kb3cg
fHwgaW5TY29wZVZhcmlhYmxlcyhtZW1iZXIpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgdGhpc1ttZW1iZXJdID0gYmluZChjb21tYW5kTGluZUFQSUltcGxbbWVtYmVyXSwgY29t
bWFuZExpbmVBUElJbXBsKTsKLSAgICAgICAgdGhpc1ttZW1iZXJdLnRvU3RyaW5nID0gY3VzdG9t
VG9TdHJpbmdNZXRob2QobWVtYmVyKTsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDU7ICsraSkgewotICAgICAgICB2YXIgbWVtYmVyID0gIiQiICsgaTsKLSAgICAgICAgaWYgKG1l
bWJlciBpbiBpbnNwZWN0ZWRXaW5kb3cgfHwgaW5TY29wZVZhcmlhYmxlcyhtZW1iZXIpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKCIkIiAr
IGksIGJpbmQoY29tbWFuZExpbmVBUElJbXBsLl9pbnNwZWN0ZWRPYmplY3QsIGNvbW1hbmRMaW5l
QVBJSW1wbCwgaSkpOwotICAgIH0KLQogICAgIHRoaXMuJF8gPSBpbmplY3RlZFNjcmlwdC5fbGFz
dFJlc3VsdDsKIH0KIAotLy8gTk9URTogUGxlYXNlIGtlZXAgdGhlIGxpc3Qgb2YgQVBJIG1ldGhv
ZHMgYmVsb3cgc25jaHJvbml6ZWQgdG8gdGhhdCBpbiBXZWJJbnNwZWN0b3IuUnVudGltZU1vZGVs
IQotLyoqCi0gKiBAdHlwZSB7QXJyYXkuPHN0cmluZz59Ci0gKiBAY29uc3QKLSAqLwotQ29tbWFu
ZExpbmVBUEkubWVtYmVyc18gPSBbCi0gICAgIiQiLCAiJCQiLCAiJHgiLCAiZGlyIiwgImRpcnht
bCIsICJrZXlzIiwgInZhbHVlcyIsICJwcm9maWxlIiwgInByb2ZpbGVFbmQiLAotICAgICJtb25p
dG9yRXZlbnRzIiwgInVubW9uaXRvckV2ZW50cyIsICJpbnNwZWN0IiwgImNvcHkiLCAiY2xlYXIi
LCAiZ2V0RXZlbnRMaXN0ZW5lcnMiCi1dOwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICovCi1m
dW5jdGlvbiBDb21tYW5kTGluZUFQSUltcGwoKQotewotfQotCi1Db21tYW5kTGluZUFQSUltcGwu
cHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3Rvcgot
ICAgICAqIEBwYXJhbSB7Tm9kZT19IHN0YXJ0Ci0gICAgICovCi0gICAgJDogZnVuY3Rpb24gKHNl
bGVjdG9yLCBzdGFydCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9jYW5RdWVyeVNlbGVjdG9y
T25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBzdGFydC5xdWVyeVNlbGVjdG9yKHNl
bGVjdG9yKTsKLQotICAgICAgICB2YXIgcmVzdWx0ID0gaW5zcGVjdGVkV2luZG93LmRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgaWYgKHNlbGVjdG9yICYmIHNlbGVjdG9yWzBdICE9
PSAiIyIpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGluc3BlY3RlZFdpbmRvdy5kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChzZWxlY3Rvcik7Ci0gICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAg
ICAgICAgICAgICAgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUud2FybigiVGhlIGNvbnNvbGUgZnVu
Y3Rpb24gJCgpIGhhcyBjaGFuZ2VkIGZyb20gJD1nZXRFbGVtZW50QnlJZChpZCkgdG8gJD1xdWVy
eVNlbGVjdG9yKHNlbGVjdG9yKS4gWW91IG1pZ2h0IHRyeSAkKFwiIyVzXCIpIiwgc2VsZWN0b3Ig
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge3N0cmluZ30gc2VsZWN0b3IKLSAgICAgKiBAcGFyYW0ge05vZGU9fSBzdGFydAotICAgICAq
LwotICAgICQkOiBmdW5jdGlvbiAoc2VsZWN0b3IsIHN0YXJ0KQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX2NhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQotICAgICAgICAgICAgcmV0dXJu
IHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwotICAgICAgICByZXR1cm4gaW5zcGVj
dGVkV2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwotICAgIH0sCi0K
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge05vZGU9fSBub2RlCi0gICAgICogQHJldHVybiB7Ym9v
bGVhbn0KLSAgICAgKi8KLSAgICBfY2FuUXVlcnlTZWxlY3Rvck9uTm9kZTogZnVuY3Rpb24obm9k
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhIW5vZGUgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LnR5
cGUobm9kZSkgPT09ICJub2RlIiAmJiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05P
REUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9OT0RFIHx8IG5vZGUubm9kZVR5
cGUgPT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSk7Ci0gICAgfSwKLQotICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSB4cGF0aAotICAgICAqIEBwYXJhbSB7Tm9kZT19IGNvbnRl
eHQKLSAgICAgKi8KLSAgICAkeDogZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpCi0gICAgewotICAg
ICAgICB2YXIgZG9jID0gKGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50KSB8fCBpbnNw
ZWN0ZWRXaW5kb3cuZG9jdW1lbnQ7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2MuZXZhbHVhdGUo
eHBhdGgsIGNvbnRleHQgfHwgZG9jLCBudWxsLCBYUGF0aFJlc3VsdC5BTllfVFlQRSwgbnVsbCk7
Ci0gICAgICAgIHN3aXRjaCAocmVzdWx0LnJlc3VsdFR5cGUpIHsKLSAgICAgICAgY2FzZSBYUGF0
aFJlc3VsdC5OVU1CRVJfVFlQRToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQubnVtYmVyVmFs
dWU7Ci0gICAgICAgIGNhc2UgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEU6Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0LnN0cmluZ1ZhbHVlOwotICAgICAgICBjYXNlIFhQYXRoUmVzdWx0LkJPT0xF
QU5fVFlQRToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQuYm9vbGVhblZhbHVlOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgdmFyIG5vZGVzID0gW107Ci0gICAgICAgICAgICB2YXIg
bm9kZTsKLSAgICAgICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCi0g
ICAgICAgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsKLSAgICAgICAgICAgIHJldHVybiBub2Rl
czsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBkaXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5kaXIuYXBwbHkoaW5zcGVjdGVkV2lu
ZG93LmNvbnNvbGUsIGFyZ3VtZW50cykKLSAgICB9LAotCi0gICAgZGlyeG1sOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuZGlyeG1sLmFw
cGx5KGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLCBhcmd1bWVudHMpCi0gICAgfSwKLQotICAgIGtl
eXM6IGZ1bmN0aW9uKG9iamVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhv
YmplY3QpOwotICAgIH0sCi0KLSAgICB2YWx1ZXM6IGZ1bmN0aW9uKG9iamVjdCkKLSAgICB7Ci0g
ICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkK
LSAgICAgICAgICAgIHJlc3VsdC5wdXNoKG9iamVjdFtrZXldKTsKLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICB9LAotCi0gICAgcHJvZmlsZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLnByb2ZpbGUuYXBwbHkoaW5zcGVjdGVkV2lu
ZG93LmNvbnNvbGUsIGFyZ3VtZW50cykKLSAgICB9LAotCi0gICAgcHJvZmlsZUVuZDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLnByb2Zp
bGVFbmQuYXBwbHkoaW5zcGVjdGVkV2luZG93LmNvbnNvbGUsIGFyZ3VtZW50cykKLSAgICB9LAot
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdAotICAgICAqIEBwYXJhbSB7
QXJyYXkuPHN0cmluZz58c3RyaW5nPX0gdHlwZXMKLSAgICAgKi8KLSAgICBtb25pdG9yRXZlbnRz
OiBmdW5jdGlvbihvYmplY3QsIHR5cGVzKQotICAgIHsKLSAgICAgICAgaWYgKCFvYmplY3QgfHwg
IW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdHlwZXMgPSB0aGlzLl9ub3JtYWxpemVFdmVu
dFR5cGVzKHR5cGVzKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0s
IHRoaXMuX2xvZ0V2ZW50LCBmYWxzZSk7Ci0gICAgICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0
ZW5lcih0eXBlc1tpXSwgdGhpcy5fbG9nRXZlbnQsIGZhbHNlKTsKLSAgICAgICAgfQotICAgIH0s
Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0Ci0gICAgICogQHBhcmFt
IHtBcnJheS48c3RyaW5nPnxzdHJpbmc9fSB0eXBlcwotICAgICAqLwotICAgIHVubW9uaXRvckV2
ZW50czogZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykKLSAgICB7Ci0gICAgICAgIGlmICghb2JqZWN0
IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVu
ZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHR5cGVzID0gdGhpcy5fbm9ybWFsaXpl
RXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tp
XSwgdGhpcy5fbG9nRXZlbnQsIGZhbHNlKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBh
cmFtIHsqfSBvYmplY3QKLSAgICAgKiBAcmV0dXJuIHsqfQotICAgICAqLwotICAgIGluc3BlY3Q6
IGZ1bmN0aW9uKG9iamVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC5f
aW5zcGVjdChvYmplY3QpOwotICAgIH0sCi0KLSAgICBjb3B5OiBmdW5jdGlvbihvYmplY3QpCi0g
ICAgewotICAgICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuX3N1YnR5cGUob2JqZWN0KSA9PT0gIm5v
ZGUiKQotICAgICAgICAgICAgb2JqZWN0ID0gb2JqZWN0Lm91dGVySFRNTDsKLSAgICAgICAgSW5q
ZWN0ZWRTY3JpcHRIb3N0LmNvcHlUZXh0KG9iamVjdCk7Ci0gICAgfSwKLQotICAgIGNsZWFyOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBJbmplY3RlZFNjcmlwdEhvc3QuY2xlYXJDb25zb2xl
TWVzc2FnZXMoKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtOb2RlfSBub2Rl
Ci0gICAgICovCi0gICAgZ2V0RXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewot
ICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LmdldEV2ZW50TGlzdGVuZXJzKG5vZGUp
OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtCi0gICAgICov
Ci0gICAgX2luc3BlY3RlZE9iamVjdDogZnVuY3Rpb24obnVtKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIEluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0ZWRPYmplY3QobnVtKTsKLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPnxzdHJpbmc9fSB0eXBlcwotICAg
ICAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fQotICAgICAqLwotICAgIF9ub3JtYWxpemVFdmVu
dFR5cGVzOiBmdW5jdGlvbih0eXBlcykKLSAgICB7Ci0gICAgICAgIGlmICh0eXBlb2YgdHlwZXMg
PT09ICJ1bmRlZmluZWQiKQotICAgICAgICAgICAgdHlwZXMgPSBbICJtb3VzZSIsICJrZXkiLCAi
dG91Y2giLCAiY29udHJvbCIsICJsb2FkIiwgInVubG9hZCIsICJhYm9ydCIsICJlcnJvciIsICJz
ZWxlY3QiLCAiY2hhbmdlIiwgInN1Ym1pdCIsICJyZXNldCIsICJmb2N1cyIsICJibHVyIiwgInJl
c2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRh
dGlvbiIgXTsKLSAgICAgICAgZWxzZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5nIikKLSAg
ICAgICAgICAgIHR5cGVzID0gWyB0eXBlcyBdOwotCi0gICAgICAgIHZhciByZXN1bHQgPSBbXTsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykgewotICAgICAg
ICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2UiKQotICAgICAgICAgICAgICAgIHJlc3VsdC5z
cGxpY2UoMCwgMCwgIm1vdXNlZG93biIsICJtb3VzZXVwIiwgImNsaWNrIiwgImRibGNsaWNrIiwg
Im1vdXNlbW92ZSIsICJtb3VzZW92ZXIiLCAibW91c2VvdXQiLCAibW91c2V3aGVlbCIpOwotICAg
ICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJrZXkiKQotICAgICAgICAgICAgICAgIHJl
c3VsdC5zcGxpY2UoMCwgMCwgImtleWRvd24iLCAia2V5dXAiLCAia2V5cHJlc3MiLCAidGV4dElu
cHV0Iik7Ci0gICAgICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gInRvdWNoIikKLSAgICAg
ICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAsICJ0b3VjaHN0YXJ0IiwgInRvdWNobW92ZSIs
ICJ0b3VjaGVuZCIsICJ0b3VjaGNhbmNlbCIpOwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZXNb
aV0gPT09ICJjb250cm9sIikKLSAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAsICJy
ZXNpemUiLCAic2Nyb2xsIiwgInpvb20iLCAiZm9jdXMiLCAiYmx1ciIsICJzZWxlY3QiLCAiY2hh
bmdlIiwgInN1Ym1pdCIsICJyZXNldCIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHJlc3VsdC5wdXNoKHR5cGVzW2ldKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAotICAg
ICAqLwotICAgIF9sb2dFdmVudDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpbnNw
ZWN0ZWRXaW5kb3cuY29uc29sZS5sb2coZXZlbnQudHlwZSwgZXZlbnQpOwotICAgIH0KLX0KLQot
aW5qZWN0ZWRTY3JpcHQuX2NvbW1hbmRMaW5lQVBJSW1wbCA9IG5ldyBDb21tYW5kTGluZUFQSUlt
cGwoKTsKIHJldHVybiBpbmplY3RlZFNjcmlwdDsKIH0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAppbmRleCA1MzAwZDk1Li4yMjE1NjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKQEAgLTI1
LDYgKzI1LDcgQEAKIAogLy8gVGhpcyBhbGwtaW4tb25lIGNwcCBmaWxlIGN1dHMgZG93biBvbiB0
ZW1wbGF0ZSBibG9hdCB0byBhbGxvdyB1cyB0byBidWlsZCBvdXIgV2luZG93cyByZWxlYXNlIGJ1
aWxkLgogCisjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIgogI2luY2x1ZGUgIkNv
bnNvbGVNZXNzYWdlLmNwcCIKICNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbHMuY3BwIgogI2lu
Y2x1ZGUgIkRPTUVkaXRvci5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1
bnRpbWVBZ2VudC5jcHAKaW5kZXggYTFiNjc3OC4uNGVhNWYzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtMzQsNiArMzQsNyBAQAogCiAj
aW5jbHVkZSAiUGFnZVJ1bnRpbWVBZ2VudC5oIgogCisjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElN
b2R1bGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCkBAIC0xMjksMTIgKzEzMCwx
NSBAQCBJbmplY3RlZFNjcmlwdCBQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2
YWwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLAogICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogc2Ny
aXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJm1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1l
KCkpOwogICAgICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQgPSBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogICAgICAgICBpZiAocmVzdWx0
Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJv
cjogbWFpbiB3b3JsZCBleGVjdXRpb24gY29udGV4dCBub3QgZm91bmQuIjsKKyAgICAgICAgICAg
ICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3I6IG1haW4gd29ybGQg
ZXhlY3V0aW9uIGNvbnRleHQgbm90IGZvdW5kLiIpOworICAgICAgICBDb21tYW5kTGluZUFQSU1v
ZHVsZTo6aW5qZWN0SWZOZWVkZWQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCksIHJlc3VsdCk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0
ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3JJZCgq
ZXhlY3V0aW9uQ29udGV4dElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgp
KQotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRXhlY3V0aW9uIGNvbnRleHQgd2l0aCBnaXZlbiBp
ZCBub3QgZm91bmQuIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJFeGVj
dXRpb24gY29udGV4dCB3aXRoIGdpdmVuIGlkIG5vdCBmb3VuZC4iKTsKKyAgICBDb21tYW5kTGlu
ZUFQSU1vZHVsZTo6aW5qZWN0SWZOZWVkZWQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCksIGluamVj
dGVkU2NyaXB0KTsKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7CiB9CiAK
</data>
<flag name="commit-queue"
          id="243376"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219717</attachid>
            <date>2013-12-19 19:19:52 -0800</date>
            <delta_ts>2013-12-20 11:24:01 -0800</delta_ts>
            <desc>[PATCH] Part 1 - Extract CommandLineAPIModule</desc>
            <filename>asdfjklads.patch</filename>
            <type>text/plain</type>
            <size>58234</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDZmNmJkOC4uMGMzZDQwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE1NjgsNiArMTU2OCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCiAKKyAgICBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUu
Y3BwCiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAogICAgIGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbHMuY3BwCiAgICAgaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTMwODQs
NiArMzA4NSwxNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luamVjdGVkU2NyaXB0U291cmNl
LmgpCiAKIAorIyBHZW5lcmF0ZSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCithZGRfY3Vz
dG9tX2NvbW1hbmQoCisgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKKyAgICBNQUlOX0RFUEVOREVOQ1kg
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCisgICAgREVQRU5EUyAke1dF
QkNPUkVfRElSfS9pbnNwZWN0b3IveHhkLnBsICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9TY3Jp
cHRzL2pzbWluLnB5CisgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1dFQkNPUkVf
RElSfS9pbnNwZWN0b3IvU2NyaXB0cy9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKKyAgICBDT01NQU5EICR7
UEVSTF9FWEVDVVRBQkxFfSAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IveHhkLnBsIENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlX2pzICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyAgICBWRVJCQVRJTSkKK2xpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCkKKworCiAjIEdlbmVyYXRlIEluamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlU291cmNlLmgKIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQVVQgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
LmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlU291cmNlLm1pbi5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdkNjkzNzIuLjZkMGRmZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsNSArMSw3NSBAQAogMjAxMy0xMi0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEV4dHJhY3QgQ29tbWFuZExp
bmVBUEkgaW50byBpdHMgb3duIEluamVjdGVkU2NyaXB0TW9kdWxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYwMzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0cywgbm8gb2JzZXJ2YWJsZSBj
aGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgTW92ZSB0aGUgQ29tbWFuZExpbmVBUEkgc291
cmNlIGludG8gaXRzIG93biBtb2R1bGUuIExvYWQgdGhlIG1vZHVsZQorICAgICAgICBpbiBJbmpl
Y3RlZFNjcmlwdHMgZm9yIFdlYkNvcmU6OlBhZ2VzLiBOb3QgZm9yIHdvcmtlcnMuCisKKyAgICAg
ICAgTW92aW5nIENvbW1hbmRMaW5lQVBJIGludG8gaXQncyBvd24gbW9kdWxlIG1vdmVzIGl0IGZy
b20gYmVpbmcgaW5zaWRlCisgICAgICAgIHRoZSBzYW1lIGFub255bW91cyBmdW5jdGlvbiB0byBi
ZWluZyBldmFsdWF0ZWQgb3V0c2lkZSB0aGUgYW5vbnltb3VzCisgICAgICAgIGZ1bmN0aW9uLiBU
byBjb25uZWN0IHRoZSB0d28gSW5qZWN0ZWRTY3JpcHQgcGFzc2VzIGl0c2VsZiB0byB0aGUKKyAg
ICAgICAgaW5qZWN0ZWQgbW9kdWxlLCBhbmQgdGhlIENvbW1hbmRMaW5lQVBJIG1vZHVsZSBwbGFj
ZXMgaXRzIGNsYXNzIG9uIHRoZQorICAgICAgICBpbmplY3RlZFNjcmlwdCBhcyBpbmplY3RlZFNj
cmlwdC5Db21tYW5kTGluZUFQSS4KKworICAgICAgICBUaGlzIGVzc2VudGlhbGx5IG1ha2VzIHRo
ZSBDb21tYW5kTGluZUFQSSBtb2R1bGUgYW4gSW5qZWN0ZWRTY3JpcHQKKyAgICAgICAgZXh0ZW5z
aW9uLiBJbmplY3RlZFNjcmlwdFNvdXJjZSBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YKKyAg
ICAgICAgdGhpcy5Db21tYW5kTGluZUFQSSB0byBzZWUgaWYgdGhlIGZ1bGxlciB2ZXJzaW9uIGlz
IGF2YWlsYWJsZS4gT3RoZXJ3aXNlCisgICAgICAgIGl0IGZhbGxzIGJhY2sgdG8gYSBCYXNpY0Nv
bW1hbmRMaW5lQVBJIHdoaWNoIG9ubHkgZXhwb3NlcyAiJF8iLAorICAgICAgICB3aGljaCBpcyB0
aGUgImxhc3QgZXZhbHVhdGVkIHJlc3VsdCIuIFRoYXQgd2lsbCBiZSB1c2VmdWwgZm9yIEpTIENv
bnRleHRzCisgICAgICAgIGFuZCBXb3JrZXJzLgorCisgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUs
IHRoaXMgcGF0Y2ggbWFrZXMgSW5qZWN0ZWRTY3JpcHRNb2R1bGUgbW9yZSBnZW5lcmljLAorICAg
ICAgICB0byBzdXBwb3J0IGJlaW5nIHVzZWQgaW4gYSBwdXJlIEphdmFTY3JpcHQgZW52aXJvbm1l
bnQsIG1lYW5pbmcgb25lCisgICAgICAgIHdpdGhvdXQgIndpbmRvdyIgYXMgdGhlIGdsb2JhbCBv
YmplY3QuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHA6CisgICAgICAgIEFkZCBmaWxlcy4gTWluaWZ5IHRo
ZSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZSBpbiBnZW5lcmF0aW9uLgorCisgICAgICAgICog
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q29tbWFuZExpbmVBUElNb2R1bGU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21tYW5kTGluZUFQSU1vZHVsZTo6c291cmNlKToKKyAgICAgICAgSW5qZWN0IHRo
ZSBtb2R1bGUgdGhhdCBkb2Vzbid0IHJldHVybiBhbiBvYmplY3QsIGl0cyBqdXN0IGV2YWx1YXRl
ZCBjb2RlCisgICAgICAgIGV4dGVuZGluZyB0aGUgb3JpZ2luYWwgSW5qZWN0ZWRTY3JpcHQuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5q
ZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKToKKyAgICAgICAgT25seSBBU1NFUlQg
dGhlIHJlc3VsdCB3YXMgYW4gb2JqZWN0IGlmIHRoZSBNb2R1bGUgY2xhaW1zIGl0IHJldHVybnMg
YW4gb2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmV0
dXJuc09iamVjdCk6CisgICAgICAgIFJldHVybiBhbiBvYmplY3QgdXNlZCBsYXRlciB0byBjYWxs
IGludG8gdGhlIENhbnZhc01vZHVsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGlt
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmluamVjdGVk
U2NyaXB0Rm9yRXZhbCk6CisgICAgICAgIEVuc3VyZSB0aGUgQ29tbWFuZExpbmVBUElNb2R1bGUg
aXMgbG9hZGVkIGluIHRoZSBQYWdlJ3MgSW5qZWN0ZWRTY3JpcHQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanM6IEFkZGVkLgorICAgICAgICBDcmVh
dGUgdGhlIENvbW1hbmRMaW5lQVBJIGNsYXNzIGFuZCBwbGFjZSBpdCBvbiBpbmplY3RlZFNjcmlw
dC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAg
ICAgKEluamVjdGVkU2NyaXB0LnByb3RvdHlwZS5fZXZhbHVhdGVPbik6CisgICAgICAgIEluamVj
dCBlaXRoZXIgdGhlIEJhc2ljQ29tbWFuZExpbmVBUEkgb3IgZXh0ZW5kZWQgQ29tbWFuZExpbmVB
UEkuCisgICAgICAgIERlcml2ZSB0aGUgZ2xvYmFsT2JqZWN0IGR5bmFtaWNhbGx5IGluc3RlYWQg
b2YgYXNzdW1pbmcgd2luZG93LgorICAgICAgICBJbmplY3QgdGhlIGNvbW1hbmRMaW5lQVBJIG9u
IHdpbmRvdy5jb25zb2xlIG9yIHRoZSBnbG9iYWxPYmplY3QgYmFzZWQgb24gY29udGV4dC4KKyAg
ICAgICAgQXVkaXQgYW5kIHJlbmFtZSB1c2VzIG9mICJ3aW5kb3ciIHRvIHNvbWV0aGluZyBsaWtl
IGdsb2JhbE9iamVjdC4KKworMjAxMy0xMi0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuZGVidWdnYWJsZVR5cGUgdG8gbGV0IHRoZSBmcm9udGVuZCBrbm93IGl0J3MgYmFja2Vu
ZCBpcyBKYXZhU2NyaXB0IG9yIFdlYgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI2MDE2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDQ3NWY3YWIuLjliNzFjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTEx
OSw2ICsxMTE5LDEzIEBAIEluamVjdGVkU2NyaXB0U291cmNlLmggOiBJbmplY3RlZFNjcmlwdFNv
dXJjZS5qcwogCXBlcmwgIiQoV2ViQ29yZSkvaW5zcGVjdG9yL3h4ZC5wbCIgSW5qZWN0ZWRTY3Jp
cHRTb3VyY2VfanMgLi9JbmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMgSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuaAogCXJtIC1mIC4vSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCiAKK2FsbCA6IENv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKworQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
aCA6IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCisJcHl0aG9uICIkKFdlYkNvcmUpL2lu
c3BlY3Rvci9TY3JpcHRzL2pzbWluLnB5IiA8IiQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmpzIiA+IC4vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWlu
LmpzCisJcGVybCAiJChXZWJDb3JlKS9pbnNwZWN0b3IveHhkLnBsIiBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZV9qcyAuL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcyBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oCisJcm0gLWYgLi9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5taW4uanMKKwogYWxsIDogSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuaAogCiBJ
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oIDogSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGVTb3VyY2UuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYTYwYzViNS4uZjAyZjlkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTM3MSwxNCArMzcxLDE4IEBAIERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaDogJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlCiAJJChBTV9WX0dFTikkKFBZVEhPTikgJChXZWJDb3JlKS9pbnNwZWN0b3IvU2Ny
aXB0cy9pbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSAkKFdlYkNv
cmUpL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5UGFnZS5odG1sICQoR0VOU09VUkNFU19XRUJD
T1JFKS9JbnNwZWN0b3JPdmVybGF5UGFnZS5jb21iaW5lZC5odG1sCiAJJChBTV9WX0dFTikkKFBF
UkwpICQoV2ViQ29yZSkvaW5zcGVjdG9yL3h4ZC5wbCBJbnNwZWN0b3JPdmVybGF5UGFnZV9odG1s
ICQoR0VOU09VUkNFU19XRUJDT1JFKS9JbnNwZWN0b3JPdmVybGF5UGFnZS5jb21iaW5lZC5odG1s
ICQoR0VOU09VUkNFU19XRUJDT1JFKS9JbnNwZWN0b3JPdmVybGF5UGFnZS5oCiAKLURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuaDogJChXZWJD
b3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuanMKLQkkKEFN
X1ZfR0VOKSQoUFlUSE9OKSAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRzL2pzbWluLnB5IDwk
KFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcyA+
ICQoR0VOU09VUkNFU19XRUJDT1JFKS9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5t
aW4uanMKLQkkKEFNX1ZfR0VOKSQoUEVSTCkgJChXZWJDb3JlKS9pbnNwZWN0b3IveHhkLnBsIElu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlX2pzICQoR0VOU09VUkNFU19XRUJDT1JFKS9J
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5taW4uanMgJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmgKLQogRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcwogCSQoQU1fVl9HRU4pJChQWVRIT04pICQoV2ViQ29yZSkvaW5z
cGVjdG9yL1NjcmlwdHMvanNtaW4ucHkgPCQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0U291cmNlLmpzID4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luamVjdGVkU2NyaXB0U291cmNl
Lm1pbi5qcwogCSQoQU1fVl9HRU4pJChQRVJMKSAkKFdlYkNvcmUpL2luc3BlY3Rvci94eGQucGwg
SW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luamVjdGVkU2Ny
aXB0U291cmNlLm1pbi5qcyAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuaAogCitEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
Lmg6ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCisJ
JChBTV9WX0dFTikkKFBZVEhPTikgJChXZWJDb3JlKS9pbnNwZWN0b3IvU2NyaXB0cy9qc21pbi5w
eSA8JChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPiAk
KEdFTlNPVVJDRVNfV0VCQ09SRSkvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCisJ
JChBTV9WX0dFTikkKFBFUkwpICQoV2ViQ29yZSkvaW5zcGVjdG9yL3h4ZC5wbCBDb21tYW5kTGlu
ZUFQSU1vZHVsZVNvdXJjZV9qcyAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UubWluLmpzICQoR0VOU09VUkNFU19XRUJDT1JFKS9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5oCisKK0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGVTb3VyY2UuaDogJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGVTb3VyY2UuanMKKwkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkKFdlYkNvcmUpL2luc3Bl
Y3Rvci9TY3JpcHRzL2pzbWluLnB5IDwkKFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dENhbnZhc01vZHVsZVNvdXJjZS5qcyA+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9JbmplY3RlZFNj
cmlwdENhbnZhc01vZHVsZVNvdXJjZS5taW4uanMKKwkkKEFNX1ZfR0VOKSQoUEVSTCkgJChXZWJD
b3JlKS9pbnNwZWN0b3IveHhkLnBsIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlX2pz
ICQoR0VOU09VUkNFU19XRUJDT1JFKS9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5t
aW4uanMgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291
cmNlLmgKKwogaWYgRU5BQkxFX1dFQl9BVURJTwogIyBJbnN0YWxsaW5nIEhSVEYgZGF0YWJhc2Ug
d2F2IGZpbGVzCiBhdWRpb2RpciA9ICR7ZGF0YWRpcn0vd2Via2l0Z3RrLUBXRUJLSVRHVEtfQVBJ
X1ZFUlNJT05AL3Jlc291cmNlcy9hdWRpby8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IGRjODRmZTkuLjNiZmVlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
NSw2ICs1LDcgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NT
U1ZhbHVlS2V5d29yZHMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1ZUtleXdv
cmRzLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db21tYW5kTGluZUFQSU1vZHVsZVNv
dXJjZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50RmFjdG9yeS5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRIZWFkZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvRXZlbnRJbnRlcmZhY2VzLmggXApAQCAtMzc2Niw2ICszNzY3LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91dHlwZXMuaCBcCiAJU291
cmNlL1dlYkNvcmUvaWN1L3VuaWNvZGUvdXZlcnNpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0JpbmRpbmdWaXNpdG9ycy5oIFwKKyAgICBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElNb2R1bGUuY3BwIFwKKyAgICBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElNb2R1bGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNv
bGVBUElUeXBlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBmNzg3
N2I3Li42YmM0ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2oKQEAgLTE3NTU4LDYgKzE3NTU4LDE0IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxicmlkZ2VccnVudGltZV9tZXRob2QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYnJpZGdlXHJ1bnRpbWVfb2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJyaWRnZVxydW50aW1lX3Jvb3QuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCI+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENv
bXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29uc29sZU1lc3Nh
Z2UuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CkBAIC0xODA4Nyw2ICsxODA5NSw3IEBACiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXENTU0dyYW1t
YXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEV2ZW50SGVhZGVycy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEV2ZW50SW50ZXJmYWNlcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEV2
ZW50VGFyZ2V0SGVhZGVycy5oIiAvPgpAQCAtMjA5NDEsNiArMjA5NTAsNyBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYnJpZGdlXHJ1bnRpbWVfcm9vdC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEJpbmRpbmdWaXNpdG9ycy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENvbnNvbGVBUElUeXBlcy5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENvbW1hbmRMaW5lQVBJTW9kdWxlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29uc29sZU1lc3NhZ2UuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxDb250ZW50U2VhcmNoVXRp
bHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxET01FZGl0b3Iu
aCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycwppbmRleCBhZDBkNTAxLi42NjY5ZjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBA
IC00NzkxLDYgKzQ3OTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnJpZGdlXHJ1
bnRpbWVfcm9vdC5jcHAiPgogICAgICAgPEZpbHRlcj5icmlkZ2U8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxDb21tYW5kTGlu
ZUFQSU1vZHVsZS5jcHAiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxDb25zb2xl
TWVzc2FnZS5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTEyMzY4LDYgKzEyMzcxLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxCaW5kaW5nVmlzaXRvcnMuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rv
cjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXENvbW1hbmRMaW5lQVBJTW9kdWxlLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0
b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxDb25zb2xlQVBJVHlwZXMuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rvcjwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTMwMzksNiArMTMwNDUsOSBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXENTU0dyYW1tYXIuaCI+
CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRIZWFkZXJzLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVk
U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMxY2IwNjQuLjI0ZWQxZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM1MjcsNiArMzUyNyw5IEBACiAJCUE1NEE4MkYxMTUyMjhERjYwMEM3MkJBNiAvKiBE
T01Ob2RlUHJpdmF0ZS5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0QTgyRUExNTIyOENBMzAwQzcyQkE2IC8qIERPTU5vZGVQ
cml2YXRlLmggKi87IH07CiAJCUE1NzMyQjBBMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9u
ZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovOyB9OwogCQlB
NTczMkIwQjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3
QyAvKiBEYXRlQ29tcG9uZW50cy5oICovOyB9OworCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5k
TGluZUFQSU1vZHVsZVNvdXJjZS5oICovOyB9OworCQlBNTg0RkUyQjE4NjM4NzBGMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMjkxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlLmNwcCAqLzsgfTsKKwkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1h
bmRMaW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUu
aCAqLzsgfTsKIAkJQTU5M0NGOEIxODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5
M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1QTJBRjBCMTgyOTcz
NDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURl
YnVnZ2FibGUuY3BwICovOyB9OwogCQlBNUEyQUYwQzE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURl
YnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovOyB9OwpAQCAt
MTAzNjAsNiArMTAzNjMsMTAgQEAKIAkJQTU0QTgyRUExNTIyOENBMzAwQzcyQkE2IC8qIERPTU5v
ZGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5vZGVQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NzMyQjA4MTM2QTE2MUQwMDVD
OEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEYXRlQ29tcG9uZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlQ29tcG9uZW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU4NEZF
MjcxODYzN0RDQTAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1ODRGRTI5MTg2Mzg3MEYw
MDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQ
SU1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5kTGluZUFQ
SU1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3MjE4NDAyQ0U5
MDBCRkNFMjcgLyogcHJvdG9jb2wgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBwcm90b2NvbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTU5M0NGNzUxODQwMkQ0QjAwQkZDRTI3IC8qIGNvbWJpbmUtamF2YXNjcmlw
dC1yZXNvdXJjZXMucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gImNvbWJpbmUtamF2YXNjcmlwdC1yZXNv
dXJjZXMucGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y4QTE4NDA1MzUy
MDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvcldlYkFnZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQ0NjEsNiArMTQ0NjgsNyBAQAogCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThG
NzggLyogSW5zcGVjdG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaCAqLywKIAkJCQlBQTkxMjc1MDE1N0UzNUE1MDA0NTRFNTQgLyogSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGVTb3VyY2UuaCAqLywKIAkJCQk3QTU2M0U1NDEyREUzMkIwMDBGNDUzNkQg
LyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKIAkJCQk0RjcwN0E5NzExRUY2Nzk0MDBBQ0RB
NjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmNwcCAqLywKQEAgLTE0NDkwLDYg
KzE0NDk4LDkgQEAKIAkJCQlBNTE4MjI1MzE3RTI4Q0YxMDBBOUJBMUQgLyogU2NyaXB0cyAqLywK
IAkJCQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyogY29tYmluZS1qYXZhc2NyaXB0LXJlc291
cmNlcy5wbCAqLywKIAkJCQlGMzVBRTVBQjE0OTI1RjVCMDA0RDU3NzYgLyogQmluZGluZ1Zpc2l0
b3JzLmggKi8sCisJCQkJQTU4NEZFMjkxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJ
TW9kdWxlLmNwcCAqLywKKwkJCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGUuaCAqLywKKwkJCQlBNTg0RkUyNzE4NjM3RENBMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuanMgKi8sCiAJCQkJMkRGMkU5RDQxNjZFMzk3NDAwMzVCRUYy
IC8qIENvbnNvbGVBUElUeXBlcy5oICovLAogCQkJCTQxRjA2MThEMEY1RjA2OTgwMEEwN0VBQyAv
KiBDb25zb2xlTWVzc2FnZS5jcHAgKi8sCiAJCQkJNDFGMDYxOEMwRjVGMDY5ODAwQTA3RUFDIC8q
IENvbnNvbGVNZXNzYWdlLmggKi8sCkBAIC0yMjk2MCw2ICsyMjk3MSw3IEBACiAJCQkJM0YyQjMz
RUIxNjVBRjE1NjAwRTM5ODdDIC8qIERPTVdlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJM0YyQjMzRUQxNjVBRjE1NjAwRTM5ODdDIC8qIERPTVdlYktpdENTU1ZpZXdw
b3J0UnVsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxNzE4MjA1NDA3MDBG
MkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1
ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOEExOTU5MzIxNDdFQTE2RTAwRDFFQTYxIC8qIERPTVdlYktpdE5hbWVkRmxv
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEExOTU5MzQxNDdFQTE2RTAwRDFFQTYxIC8qIERPTVdl
YktpdE5hbWVkRmxvd0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkY0QzBFNENF
RkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTIzMzcwLDYgKzIzMzgyLDcgQEAKIAkJCQk1OTEzQTI0MjEzRDQ5RUJBMDBGNUIwNUMgLyog
SWRlbnRpZmllcnNGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNTBFRjg2RDQ3
MDA5RDBDQUYgLyogSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxMjVGODU2MTgyQzBGODMwMEQ4NENEOSAvKiBDcnlwdG9LZXlTZXJpYWxpemF0aW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjQxRUMwMTgxOUIzNjAw
MEVFNEM0MSAvKiBNZWRpYVRpbWVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQzA1NENEMTEx
OEM4RTQwMENFMjYzNiAvKiBJRExQYXJzZXIucG0gaW4gSGVhZGVycyAqLywKIAkJCQlDM0NGMTdB
NTE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yODA5OSw2ICsyODExMiw3IEBACiAJCQkJQjI1NTk5ODQwRDAwRDhCQTAwQkI4MjVDIC8qIFNW
R0ZFSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RUUwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0ZFSW1hZ2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRDcxOUVCMTgx
MTA2RTAwMDE2REM1MSAvKiBJREJSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1ODRG
RTJCMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMjIyNzlGMTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVMaWdodEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RjMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZF
TWVyZ2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUY2MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTAyZDJmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcApAQCAtMCww
ICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlLmgiCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb21tYW5kTGluZUFQSU1vZHVsZTo6
Q29tbWFuZExpbmVBUElNb2R1bGUoKQorICAgIDogSW5qZWN0ZWRTY3JpcHRNb2R1bGUoQVNDSUlM
aXRlcmFsKCJDb21tYW5kTGluZUFQSSIpKQoreworfQorCit2b2lkIENvbW1hbmRMaW5lQVBJTW9k
dWxlOjppbmplY3RJZk5lZWRlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0
TWFuYWdlciwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQpCit7CisgICAgQ29tbWFuZExp
bmVBUElNb2R1bGUgbW9kdWxlOworICAgIG1vZHVsZS5lbnN1cmVJbmplY3RlZChpbmplY3RlZFNj
cmlwdE1hbmFnZXIsIGluamVjdGVkU2NyaXB0KTsKK30KKworU3RyaW5nIENvbW1hbmRMaW5lQVBJ
TW9kdWxlOjpzb3VyY2UoKSBjb25zdAoreworICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMpLCBzaXplb2Yo
Q29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfanMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNzVlMzE2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbW1hbmRMaW5l
QVBJTW9kdWxlX2gKKyNkZWZpbmUgQ29tbWFuZExpbmVBUElNb2R1bGVfaAorCisjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29tbWFuZExpbmVBUElNb2R1bGUgRklOQUwgOiBwdWJs
aWMgSW5qZWN0ZWRTY3JpcHRNb2R1bGUgeworcHVibGljOgorICAgIENvbW1hbmRMaW5lQVBJTW9k
dWxlKCk7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2UoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmV0dXJuc09iamVjdCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgICBzdGF0aWMgdm9pZCBpbmplY3RJZk5lZWRlZChJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBJbmplY3RlZFNjcmlwdCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoQ29tbWFu
ZExpbmVBUElNb2R1bGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43YTJjNWFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpzCkBAIC0wLDAgKzEsMzQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoq
CisgKiBAcGFyYW0ge0luamVjdGVkU2NyaXB0SG9zdH0gSW5qZWN0ZWRTY3JpcHRIb3N0CisgKiBA
cGFyYW0ge1dpbmRvd30gaW5zcGVjdGVkV2luZG93CisgKiBAcGFyYW0ge251bWJlcn0gaW5qZWN0
ZWRTY3JpcHRJZAorICovCisoZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVk
V2luZG93LCBpbmplY3RlZFNjcmlwdElkLCBpbmplY3RlZFNjcmlwdCkgeworCisvKioKKyAqIEBw
YXJhbSB7QXJndW1lbnRzfSBhcnJheQorICogQHBhcmFtIHtudW1iZXI9fSBpbmRleAorICogQHJl
dHVybiB7QXJyYXkuPCo+fQorICovCitmdW5jdGlvbiBzbGljZShhcnJheSwgaW5kZXgpCit7Cisg
ICAgdmFyIHJlc3VsdCA9IFtdOworICAgIGZvciAodmFyIGkgPSBpbmRleCB8fCAwOyBpIDwgYXJy
YXkubGVuZ3RoOyArK2kpCisgICAgICAgIHJlc3VsdC5wdXNoKGFycmF5W2ldKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCisvKioKKyAqIFBsZWFzZSB1c2UgdGhpcyBiaW5kLCBub3QgdGhlIG9u
ZSBmcm9tIEZ1bmN0aW9uLnByb3RvdHlwZQorICogQHBhcmFtIHtmdW5jdGlvbiguLi4pfSBmdW5j
CisgKiBAcGFyYW0ge09iamVjdH0gdGhpc09iamVjdAorICogQHBhcmFtIHsuLi5udW1iZXJ9IHZh
cl9hcmdzCisgKi8KK2Z1bmN0aW9uIGJpbmQoZnVuYywgdGhpc09iamVjdCwgdmFyX2FyZ3MpCit7
CisgICAgdmFyIGFyZ3MgPSBzbGljZShhcmd1bWVudHMsIDIpOworCisgICAgLyoqCisgICAgICog
QHBhcmFtIHsuLi5udW1iZXJ9IHZhcl9hcmdzCisgICAgICovCisgICAgZnVuY3Rpb24gYm91bmQo
dmFyX2FyZ3MpCisgICAgeworICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzT2JqZWN0LCBh
cmdzLmNvbmNhdChzbGljZShhcmd1bWVudHMpKSk7CisgICAgfQorICAgIGJvdW5kLnRvU3RyaW5n
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAiYm91bmQ6ICIgKyBmdW5jOworICAgIH07
CisgICAgcmV0dXJuIGJvdW5kOworfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFt
IHtDb21tYW5kTGluZUFQSUltcGx9IGNvbW1hbmRMaW5lQVBJSW1wbAorICogQHBhcmFtIHtPYmpl
Y3R9IGNhbGxGcmFtZQorICovCitmdW5jdGlvbiBDb21tYW5kTGluZUFQSShjb21tYW5kTGluZUFQ
SUltcGwsIGNhbGxGcmFtZSkKK3sKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWVt
YmVyCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBpblNj
b3BlVmFyaWFibGVzKG1lbWJlcikKKyAgICB7CisgICAgICAgIGlmICghY2FsbEZyYW1lKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBzY29wZUNoYWluID0gY2FsbEZy
YW1lLnNjb3BlQ2hhaW47CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NvcGVDaGFpbi5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKG1lbWJlciBpbiBzY29wZUNoYWluW2ldKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUg
bmFtZSBvZiB0aGUgbWV0aG9kIGZvciB3aGljaCBhIHRvU3RyaW5nIG1ldGhvZCBzaG91bGQgYmUg
Z2VuZXJhdGVkLgorICAgICAqIEByZXR1cm4ge2Z1bmN0aW9uKCk6c3RyaW5nfQorICAgICAqLwor
ICAgIGZ1bmN0aW9uIGN1c3RvbVRvU3RyaW5nTWV0aG9kKG5hbWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gImZ1bmN0aW9uICIgKyBuYW1lICsgIigpIHsgW0Nv
bW1hbmQgTGluZSBBUEldIH0iOyB9OworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Q29tbWFuZExpbmVBUEkubWVtYmVyc18ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIG1lbWJl
ciA9IENvbW1hbmRMaW5lQVBJLm1lbWJlcnNfW2ldOworICAgICAgICBpZiAobWVtYmVyIGluIGlu
c3BlY3RlZFdpbmRvdyB8fCBpblNjb3BlVmFyaWFibGVzKG1lbWJlcikpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICB0aGlzW21lbWJlcl0gPSBiaW5kKGNvbW1hbmRMaW5lQVBJSW1w
bFttZW1iZXJdLCBjb21tYW5kTGluZUFQSUltcGwpOworICAgICAgICB0aGlzW21lbWJlcl0udG9T
dHJpbmcgPSBjdXN0b21Ub1N0cmluZ01ldGhvZChtZW1iZXIpOworICAgIH0KKworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgICAgIHZhciBtZW1iZXIgPSAiJCIgKyBpOwor
ICAgICAgICBpZiAobWVtYmVyIGluIGluc3BlY3RlZFdpbmRvdyB8fCBpblNjb3BlVmFyaWFibGVz
KG1lbWJlcikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB0aGlzLl9fZGVmaW5l
R2V0dGVyX18oIiQiICsgaSwgYmluZChjb21tYW5kTGluZUFQSUltcGwuX2luc3BlY3RlZE9iamVj
dCwgY29tbWFuZExpbmVBUElJbXBsLCBpKSk7CisgICAgfQorCisgICAgdGhpcy4kXyA9IGluamVj
dGVkU2NyaXB0Ll9sYXN0UmVzdWx0OworfQorCisvKioKKyAqIEB0eXBlIHtBcnJheS48c3RyaW5n
Pn0KKyAqIEBjb25zdAorICovCitDb21tYW5kTGluZUFQSS5tZW1iZXJzXyA9IFsKKyAgICAiJCIs
ICIkJCIsICIkeCIsICJkaXIiLCAiZGlyeG1sIiwgImtleXMiLCAidmFsdWVzIiwgInByb2ZpbGUi
LCAicHJvZmlsZUVuZCIsCisgICAgIm1vbml0b3JFdmVudHMiLCAidW5tb25pdG9yRXZlbnRzIiwg
Imluc3BlY3QiLCAiY29weSIsICJjbGVhciIsICJnZXRFdmVudExpc3RlbmVycyIKK107CisKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIENvbW1hbmRMaW5lQVBJSW1wbCgpCit7
Cit9CisKK0NvbW1hbmRMaW5lQVBJSW1wbC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yCisgICAgICogQHBhcmFtIHtOb2RlPX0gc3RhcnQKKyAg
ICAgKi8KKyAgICAkOiBmdW5jdGlvbiAoc2VsZWN0b3IsIHN0YXJ0KQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX2NhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQorICAgICAgICAgICAgcmV0
dXJuIHN0YXJ0LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOworCisgICAgICAgIHZhciByZXN1bHQg
PSBpbnNwZWN0ZWRXaW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CisgICAg
ICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAo
c2VsZWN0b3IgJiYgc2VsZWN0b3JbMF0gIT09ICIjIikgeworICAgICAgICAgICAgcmVzdWx0ID0g
aW5zcGVjdGVkV2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVjdG9yKTsKKyAgICAg
ICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRXaW5kb3cuY29u
c29sZS53YXJuKCJUaGUgY29uc29sZSBmdW5jdGlvbiAkKCkgaGFzIGNoYW5nZWQgZnJvbSAkPWdl
dEVsZW1lbnRCeUlkKGlkKSB0byAkPXF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpLiBZb3UgbWlnaHQg
dHJ5ICQoXCIjJXNcIikiLCBzZWxlY3RvciApOworICAgICAgICAgICAgICAgIHJldHVybiBudWxs
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvcgorICAgICAqIEBw
YXJhbSB7Tm9kZT19IHN0YXJ0CisgICAgICovCisgICAgJCQ6IGZ1bmN0aW9uIChzZWxlY3Rvciwg
c3RhcnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY2FuUXVlcnlTZWxlY3Rvck9uTm9kZShz
dGFydCkpCisgICAgICAgICAgICByZXR1cm4gc3RhcnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rv
cik7CisgICAgICAgIHJldHVybiBpbnNwZWN0ZWRXaW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbChzZWxlY3Rvcik7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Tm9kZT19
IG5vZGUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIF9jYW5RdWVyeVNl
bGVjdG9yT25Ob2RlOiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhbm9k
ZSAmJiBJbmplY3RlZFNjcmlwdEhvc3QudHlwZShub2RlKSA9PT0gIm5vZGUiICYmIChub2RlLm5v
ZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSB8fCBub2RlLm5vZGVUeXBlID09PSBOb2RlLkRP
Q1VNRU5UX05PREUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9O
T0RFKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHhwYXRoCisg
ICAgICogQHBhcmFtIHtOb2RlPX0gY29udGV4dAorICAgICAqLworICAgICR4OiBmdW5jdGlvbih4
cGF0aCwgY29udGV4dCkKKyAgICB7CisgICAgICAgIHZhciBkb2MgPSAoY29udGV4dCAmJiBjb250
ZXh0Lm93bmVyRG9jdW1lbnQpIHx8IGluc3BlY3RlZFdpbmRvdy5kb2N1bWVudDsKKyAgICAgICAg
dmFyIHJlc3VsdCA9IGRvYy5ldmFsdWF0ZSh4cGF0aCwgY29udGV4dCB8fCBkb2MsIG51bGwsIFhQ
YXRoUmVzdWx0LkFOWV9UWVBFLCBudWxsKTsKKyAgICAgICAgc3dpdGNoIChyZXN1bHQucmVzdWx0
VHlwZSkgeworICAgICAgICBjYXNlIFhQYXRoUmVzdWx0Lk5VTUJFUl9UWVBFOgorICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5udW1iZXJWYWx1ZTsKKyAgICAgICAgY2FzZSBYUGF0aFJlc3VsdC5T
VFJJTkdfVFlQRToKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQuc3RyaW5nVmFsdWU7CisgICAg
ICAgIGNhc2UgWFBhdGhSZXN1bHQuQk9PTEVBTl9UWVBFOgorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5ib29sZWFuVmFsdWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB2YXIgbm9k
ZXMgPSBbXTsKKyAgICAgICAgICAgIHZhciBub2RlOworICAgICAgICAgICAgd2hpbGUgKG5vZGUg
PSByZXN1bHQuaXRlcmF0ZU5leHQoKSkKKyAgICAgICAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUp
OworICAgICAgICAgICAgcmV0dXJuIG5vZGVzOworICAgICAgICB9CisgICAgfSwKKworICAgIGRp
cjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc3BlY3RlZFdpbmRvdy5jb25z
b2xlLmRpci5hcHBseShpbnNwZWN0ZWRXaW5kb3cuY29uc29sZSwgYXJndW1lbnRzKQorICAgIH0s
CisKKyAgICBkaXJ4bWw6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNwZWN0
ZWRXaW5kb3cuY29uc29sZS5kaXJ4bWwuYXBwbHkoaW5zcGVjdGVkV2luZG93LmNvbnNvbGUsIGFy
Z3VtZW50cykKKyAgICB9LAorCisgICAga2V5czogZnVuY3Rpb24ob2JqZWN0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7CisgICAgfSwKKworICAgIHZhbHVlczog
ZnVuY3Rpb24ob2JqZWN0KQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KQorICAgICAgICAgICAgcmVzdWx0LnB1c2gob2JqZWN0
W2tleV0pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICBwcm9maWxlOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gaW5zcGVjdGVkV2luZG93LmNvbnNvbGUu
cHJvZmlsZS5hcHBseShpbnNwZWN0ZWRXaW5kb3cuY29uc29sZSwgYXJndW1lbnRzKQorICAgIH0s
CisKKyAgICBwcm9maWxlRW5kOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gaW5z
cGVjdGVkV2luZG93LmNvbnNvbGUucHJvZmlsZUVuZC5hcHBseShpbnNwZWN0ZWRXaW5kb3cuY29u
c29sZSwgYXJndW1lbnRzKQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge09iamVj
dH0gb2JqZWN0CisgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPnxzdHJpbmc9fSB0eXBlcwor
ICAgICAqLworICAgIG1vbml0b3JFdmVudHM6IGZ1bmN0aW9uKG9iamVjdCwgdHlwZXMpCisgICAg
eworICAgICAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9i
amVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
eXBlcyA9IHRoaXMuX25vcm1hbGl6ZUV2ZW50VHlwZXModHlwZXMpOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBvYmplY3QucmVt
b3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgdGhpcy5fbG9nRXZlbnQsIGZhbHNlKTsKKyAgICAg
ICAgICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKHR5cGVzW2ldLCB0aGlzLl9sb2dFdmVudCwg
ZmFsc2UpOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7T2Jq
ZWN0fSBvYmplY3QKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fHN0cmluZz19IHR5cGVz
CisgICAgICovCisgICAgdW5tb25pdG9yRXZlbnRzOiBmdW5jdGlvbihvYmplY3QsIHR5cGVzKQor
ICAgIHsKKyAgICAgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8
ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgdHlwZXMgPSB0aGlzLl9ub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIG9iamVjdC5y
ZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCB0aGlzLl9sb2dFdmVudCwgZmFsc2UpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IG9iamVjdAorICAgICAqIEByZXR1cm4g
eyp9CisgICAgICovCisgICAgaW5zcGVjdDogZnVuY3Rpb24ob2JqZWN0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Ll9pbnNwZWN0KG9iamVjdCk7CisgICAgfSwKKworICAg
IGNvcHk6IGZ1bmN0aW9uKG9iamVjdCkKKyAgICB7CisgICAgICAgIGlmIChpbmplY3RlZFNjcmlw
dC5fc3VidHlwZShvYmplY3QpID09PSAibm9kZSIpCisgICAgICAgICAgICBvYmplY3QgPSBvYmpl
Y3Qub3V0ZXJIVE1MOworICAgICAgICBJbmplY3RlZFNjcmlwdEhvc3QuY29weVRleHQob2JqZWN0
KTsKKyAgICB9LAorCisgICAgY2xlYXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIEluamVj
dGVkU2NyaXB0SG9zdC5jbGVhckNvbnNvbGVNZXNzYWdlcygpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge05vZGV9IG5vZGUKKyAgICAgKi8KKyAgICBnZXRFdmVudExpc3RlbmVy
czogZnVuY3Rpb24obm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhv
c3QuZ2V0RXZlbnRMaXN0ZW5lcnMobm9kZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBudW0KKyAgICAgKi8KKyAgICBfaW5zcGVjdGVkT2JqZWN0OiBmdW5jdGlv
bihudW0pCisgICAgeworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Lmluc3BlY3Rl
ZE9iamVjdChudW0pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5Ljxz
dHJpbmc+fHN0cmluZz19IHR5cGVzCisgICAgICogQHJldHVybiB7QXJyYXkuPHN0cmluZz59Cisg
ICAgICovCisgICAgX25vcm1hbGl6ZUV2ZW50VHlwZXM6IGZ1bmN0aW9uKHR5cGVzKQorICAgIHsK
KyAgICAgICAgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICB0
eXBlcyA9IFsgIm1vdXNlIiwgImtleSIsICJ0b3VjaCIsICJjb250cm9sIiwgImxvYWQiLCAidW5s
b2FkIiwgImFib3J0IiwgImVycm9yIiwgInNlbGVjdCIsICJjaGFuZ2UiLCAic3VibWl0IiwgInJl
c2V0IiwgImZvY3VzIiwgImJsdXIiLCAicmVzaXplIiwgInNjcm9sbCIsICJzZWFyY2giLCAiZGV2
aWNlbW90aW9uIiwgImRldmljZW9yaWVudGF0aW9uIiBdOworICAgICAgICBlbHNlIGlmICh0eXBl
b2YgdHlwZXMgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgdHlwZXMgPSBbIHR5cGVzIF07CisK
KyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5
cGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAodHlwZXNbaV0gPT09ICJtb3VzZSIp
CisgICAgICAgICAgICAgICAgcmVzdWx0LnNwbGljZSgwLCAwLCAibW91c2Vkb3duIiwgIm1vdXNl
dXAiLCAiY2xpY2siLCAiZGJsY2xpY2siLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3ZlciIsICJtb3Vz
ZW91dCIsICJtb3VzZXdoZWVsIik7CisgICAgICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0g
ImtleSIpCisgICAgICAgICAgICAgICAgcmVzdWx0LnNwbGljZSgwLCAwLCAia2V5ZG93biIsICJr
ZXl1cCIsICJrZXlwcmVzcyIsICJ0ZXh0SW5wdXQiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5
cGVzW2ldID09PSAidG91Y2giKQorICAgICAgICAgICAgICAgIHJlc3VsdC5zcGxpY2UoMCwgMCwg
InRvdWNoc3RhcnQiLCAidG91Y2htb3ZlIiwgInRvdWNoZW5kIiwgInRvdWNoY2FuY2VsIik7Cisg
ICAgICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gImNvbnRyb2wiKQorICAgICAgICAgICAg
ICAgIHJlc3VsdC5zcGxpY2UoMCwgMCwgInJlc2l6ZSIsICJzY3JvbGwiLCAiem9vbSIsICJmb2N1
cyIsICJibHVyIiwgInNlbGVjdCIsICJjaGFuZ2UiLCAic3VibWl0IiwgInJlc2V0Iik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZXNbaV0pOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX2xvZ0V2ZW50OiBmdW5jdGlvbihl
dmVudCkKKyAgICB7CisgICAgICAgIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLmxvZyhldmVudC50
eXBlLCBldmVudCk7CisgICAgfQorfQorCitpbmplY3RlZFNjcmlwdC5Db21tYW5kTGluZUFQSSA9
IENvbW1hbmRMaW5lQVBJOworaW5qZWN0ZWRTY3JpcHQuX2NvbW1hbmRMaW5lQVBJSW1wbCA9IG5l
dyBDb21tYW5kTGluZUFQSUltcGwoKTsKKworLy8gVGhpcyBNb2R1bGUgZG9lc24ndCBleHBvc2Ug
YW4gb2JqZWN0LCBpdCBqdXN0IGFkZHMgYW4gZXh0ZW5zaW9uIHRoYXQgSW5qZWN0ZWRTY3JpcHQg
dXNlcy4KKy8vIEhvd2V2ZXIsIHdlIHJldHVybiBhbiBlbXB0eSBvYmplY3QsIHNvIHRoYXQgSW5q
ZWN0ZWRTY3JpcHQga25vd3MgdGhpcyBtb2R1bGUgaGFzIGJlZW4gbG9hZGVkLgorcmV0dXJuIHt9
OworCit9KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0Q2FudmFzTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGUuaAppbmRleCBhY2VjZTZlLi41MDFkMmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaApAQCAt
NTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoKTsK
ICAgICAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgcmV0dXJuc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHN0YXRpYyBJ
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZSBtb2R1bGVGb3JTdGF0ZShJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBKU0M6OkV4ZWNTdGF0ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCA5MjY4ZWRmLi4wNzk3Yjc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAK
QEAgLTUyLDYgKzUyLDExIEBAIEluamVjdGVkU2NyaXB0TW9kdWxlOjpJbmplY3RlZFNjcmlwdE1v
ZHVsZShjb25zdCBTdHJpbmcmIG5hbWUpCiB2b2lkIEluamVjdGVkU2NyaXB0TW9kdWxlOjplbnN1
cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwg
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihzY3Jp
cHRTdGF0ZSk7CisgICAgZW5zdXJlSW5qZWN0ZWQoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmpl
Y3RlZFNjcmlwdCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVj
dGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCkKK3sKICAgICBBU1NFUlQoIWluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjcsMTQgKzcyLDE2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6
OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNCiAg
ICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5hbWUoKSk7CiAgICAgICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KHNvdXJjZSgpKTsKICAgICAgICAgcmVzdWx0VmFsdWUgPSBpbmplY3Rl
ZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlv
bik7Ci0gICAgICAgIGlmIChoYWRFeGNlcHRpb24gfHwgcmVzdWx0VmFsdWUuaGFzTm9WYWx1ZSgp
IHx8ICFyZXN1bHRWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIGlmIChoYWRFeGNlcHRpb24g
fHwgKHJldHVybnNPYmplY3QoKSAmJiAocmVzdWx0VmFsdWUuaGFzTm9WYWx1ZSgpIHx8ICFyZXN1
bHRWYWx1ZS5pc09iamVjdCgpKSkpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0IG1vZHVsZU9iamVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0VmFsdWUpOwot
ICAgIGluaXRpYWxpemUobW9kdWxlT2JqZWN0LCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3Bl
Y3RlZFN0YXRlQWNjZXNzQ2hlY2soKSk7CisgICAgaWYgKHJldHVybnNPYmplY3QoKSkgeworICAg
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgbW9kdWxlT2JqZWN0KGluamVjdGVkU2NyaXB0
LnNjcmlwdFN0YXRlKCksIHJlc3VsdFZhbHVlKTsKKyAgICAgICAgaW5pdGlhbGl6ZShtb2R1bGVP
YmplY3QsIGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaygp
KTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmgKaW5kZXggOTNmYjE3Yi4uZmViYTM0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9k
dWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxl
LmgKQEAgLTMxLDE5ICszMSwyMSBAQAogI2lmbmRlZiBJbmplY3RlZFNjcmlwdE1vZHVsZV9oCiAj
ZGVmaW5lIEluamVjdGVkU2NyaXB0TW9kdWxlX2gKIAorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRCYXNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNb2R1
bGUgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRCYXNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyBzb3VyY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHJldHVybnNPYmplY3Qo
KSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICAvLyBEbyBub3QgZXhwb3NlIGNvbnN0cnVj
dG9yIGluIHRoZSBjaGlsZCBjbGFzc2VzIGFzIHdlbGwuIEluc3RlYWQgcHJvdmlkZQpAQCAtNTEs
MTAgKzUzLDExIEBAIHByb3RlY3RlZDoKICAgICAvLyBhbmQgY2FsbCBpdHMgZW5zdXJlSW5qZWN0
ZWQoKSBtZXRob2QgaW1tZWRpYXRlbHkuCiAgICAgSW5qZWN0ZWRTY3JpcHRNb2R1bGUoY29uc3Qg
U3RyaW5nJiBuYW1lKTsKICAgICB2b2lkIGVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFu
YWdlciosIEpTQzo6RXhlY1N0YXRlKik7CisgICAgdm9pZCBlbnN1cmVJbmplY3RlZChJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqLCBJbmplY3RlZFNjcmlwdCk7CiB9OwogCi0jZW5kaWYKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMK
aW5kZXggMTg3YWQxNC4uMjA2NDZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtMzAsNTEgKzMwLDE1IEBACiAKIC8qKgogICog
QHBhcmFtIHtJbmplY3RlZFNjcmlwdEhvc3R9IEluamVjdGVkU2NyaXB0SG9zdAotICogQHBhcmFt
IHtXaW5kb3d9IGluc3BlY3RlZFdpbmRvdworICogQHBhcmFtIHtHbG9iYWxPYmplY3R9IGluc3Bl
Y3RlZEdsb2JhbE9iamVjdAogICogQHBhcmFtIHtudW1iZXJ9IGluamVjdGVkU2NyaXB0SWQKICAq
LwotKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZFdpbmRvdywgaW5qZWN0
ZWRTY3JpcHRJZCkgeworKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEds
b2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCkgewogCiAvLyBQcm90ZWN0IGFnYWluc3QgT2Jq
ZWN0IG92ZXJ3cml0dGVuIGJ5IHRoZSB1c2VyIGNvZGUuCiB2YXIgT2JqZWN0ID0ge30uY29uc3Ry
dWN0b3I7CiAKIC8qKgotICogQHBhcmFtIHtBcmd1bWVudHN9IGFycmF5Ci0gKiBAcGFyYW0ge251
bWJlcj19IGluZGV4Ci0gKiBAcmV0dXJuIHtBcnJheS48Kj59Ci0gKi8KLWZ1bmN0aW9uIHNsaWNl
KGFycmF5LCBpbmRleCkKLXsKLSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgZm9yICh2YXIgaSA9
IGluZGV4IHx8IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkKLSAgICAgICAgcmVzdWx0LnB1c2go
YXJyYXlbaV0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qKgotICogUGxlYXNlIHVzZSB0
aGlzIGJpbmQsIG5vdCB0aGUgb25lIGZyb20gRnVuY3Rpb24ucHJvdG90eXBlCi0gKiBAcGFyYW0g
e2Z1bmN0aW9uKC4uLil9IGZ1bmMKLSAqIEBwYXJhbSB7T2JqZWN0fSB0aGlzT2JqZWN0Ci0gKiBA
cGFyYW0gey4uLm51bWJlcn0gdmFyX2FyZ3MKLSAqLwotZnVuY3Rpb24gYmluZChmdW5jLCB0aGlz
T2JqZWN0LCB2YXJfYXJncykKLXsKLSAgICB2YXIgYXJncyA9IHNsaWNlKGFyZ3VtZW50cywgMik7
Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0gey4uLm51bWJlcn0gdmFyX2FyZ3MKLSAgICAgKi8K
LSAgICBmdW5jdGlvbiBib3VuZCh2YXJfYXJncykKLSAgICB7Ci0gICAgICAgIHJldHVybiBmdW5j
LmFwcGx5KHRoaXNPYmplY3QsIGFyZ3MuY29uY2F0KHNsaWNlKGFyZ3VtZW50cykpKTsKLSAgICB9
Ci0gICAgYm91bmQudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuICJib3Vu
ZDogIiArIGZ1bmM7Ci0gICAgfTsKLSAgICByZXR1cm4gYm91bmQ7Ci19Ci0KLS8qKgogICogQGNv
bnN0cnVjdG9yCiAgKi8KIHZhciBJbmplY3RlZFNjcmlwdCA9IGZ1bmN0aW9uKCkKQEAgLTExMSwx
MyArNzUsMTMgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAq
IEBwYXJhbSB7Kn0gb2JqZWN0CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwTmFtZQotICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93CisgICAgICogQHBh
cmFtIHtib29sZWFufSBjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QKICAgICAgKiBAcGFy
YW0ge2Jvb2xlYW59IGdlbmVyYXRlUHJldmlldwogICAgICAqIEByZXR1cm4geyFSdW50aW1lQWdl
bnQuUmVtb3RlT2JqZWN0fQogICAgICAqLwotICAgIHdyYXBPYmplY3Q6IGZ1bmN0aW9uKG9iamVj
dCwgZ3JvdXBOYW1lLCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3csIGdlbmVyYXRlUHJldmlldykK
KyAgICB3cmFwT2JqZWN0OiBmdW5jdGlvbihvYmplY3QsIGdyb3VwTmFtZSwgY2FuQWNjZXNzSW5z
cGVjdGVkR2xvYmFsT2JqZWN0LCBnZW5lcmF0ZVByZXZpZXcpCiAgICAgewotICAgICAgICBpZiAo
Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KQorICAgICAgICBpZiAoY2FuQWNjZXNzSW5zcGVjdGVk
R2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBPYmplY3Qob2JqZWN0
LCBncm91cE5hbWUsIGZhbHNlLCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICByZXR1cm4gdGhp
cy5fZmFsbGJhY2tXcmFwcGVyKG9iamVjdCk7CiAgICAgfSwKQEAgLTEzOCwxNCArMTAyLDE0IEBA
IEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICog
QHBhcmFtIHtib29sZWFufSBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cKKyAgICAgKiBAcGFyYW0g
e2Jvb2xlYW59IGNhbkFjY2Vzc0luc3BlY3RlZEdsb2JhbE9iamVjdAogICAgICAqIEBwYXJhbSB7
T2JqZWN0fSB0YWJsZQogICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz58c3RyaW5nfGJvb2xl
YW59IGNvbHVtbnMKICAgICAgKiBAcmV0dXJuIHshUnVudGltZUFnZW50LlJlbW90ZU9iamVjdH0K
ICAgICAgKi8KLSAgICB3cmFwVGFibGU6IGZ1bmN0aW9uKGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRv
dywgdGFibGUsIGNvbHVtbnMpCisgICAgd3JhcFRhYmxlOiBmdW5jdGlvbihjYW5BY2Nlc3NJbnNw
ZWN0ZWRHbG9iYWxPYmplY3QsIHRhYmxlLCBjb2x1bW5zKQogICAgIHsKLSAgICAgICAgaWYgKCFj
YW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cpCisgICAgICAgIGlmICghY2FuQWNjZXNzSW5zcGVjdGVk
R2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrV3JhcHBlcih0
YWJsZSk7CiAgICAgICAgIHZhciBjb2x1bW5OYW1lcyA9IG51bGw7CiAgICAgICAgIGlmICh0eXBl
b2YgY29sdW1ucyA9PT0gInN0cmluZyIpCkBAIC0yNzIsNyArMjM2LDkgQEAgSW5qZWN0ZWRTY3Jp
cHQucHJvdG90eXBlID0gewogICAgICAgICB2YXIgYXJnc0FycmF5ID0gSW5qZWN0ZWRTY3JpcHRI
b3N0LmV2YWx1YXRlKCIoIiArIGFyZ3MgKyAiKSIpOwogICAgICAgICB2YXIgcmVzdWx0ID0gdGhp
c1ttZXRob2ROYW1lXS5hcHBseSh0aGlzLCBhcmdzQXJyYXkpOwogICAgICAgICBpZiAodHlwZW9m
IHJlc3VsdCA9PT0gInVuZGVmaW5lZCIpIHsKLSAgICAgICAgICAgIGluc3BlY3RlZFdpbmRvdy5j
b25zb2xlLmVycm9yKCJXZWIgSW5zcGVjdG9yIGVycm9yOiBJbmplY3RlZFNjcmlwdC4lcyByZXR1
cm5zIHVuZGVmaW5lZCIsIG1ldGhvZE5hbWUpOworICAgICAgICAgICAgLy8gRklYTUU6IEpTIENv
bnRleHQgaW5zcGVjdGlvbiBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZSBhIGdsb2JhbC5jb25zb2xl
IG9iamVjdC4KKyAgICAgICAgICAgIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZSkK
KyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29sZS5lcnJvcigiV2Vi
IEluc3BlY3RvciBlcnJvcjogSW5qZWN0ZWRTY3JpcHQuJXMgcmV0dXJucyB1bmRlZmluZWQiLCBt
ZXRob2ROYW1lKTsKICAgICAgICAgICAgIHJlc3VsdCA9IG51bGw7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTU1NCw3ICs1MjAsMTMgQEAgSW5qZWN0ZWRTY3JpcHQucHJv
dG90eXBlID0gewogICAgICAqLwogICAgIF9ldmFsdWF0ZU9uOiBmdW5jdGlvbihldmFsRnVuY3Rp
b24sIG9iamVjdCwgb2JqZWN0R3JvdXAsIGV4cHJlc3Npb24sIGlzRXZhbE9uQ2FsbEZyYW1lLCBp
bmplY3RDb21tYW5kTGluZUFQSSkKICAgICB7Ci0gICAgICAgIHZhciBjb21tYW5kTGluZUFQSSA9
IGluamVjdENvbW1hbmRMaW5lQVBJID8gbmV3IENvbW1hbmRMaW5lQVBJKHRoaXMuX2NvbW1hbmRM
aW5lQVBJSW1wbCwgaXNFdmFsT25DYWxsRnJhbWUgPyBvYmplY3QgOiBudWxsKSA6IG51bGw7Cisg
ICAgICAgIHZhciBjb21tYW5kTGluZUFQSSA9IG51bGw7CisgICAgICAgIGlmIChpbmplY3RDb21t
YW5kTGluZUFQSSkgeworICAgICAgICAgICAgaWYgKHRoaXMuQ29tbWFuZExpbmVBUEkpCisgICAg
ICAgICAgICAgICAgY29tbWFuZExpbmVBUEkgPSBuZXcgdGhpcy5Db21tYW5kTGluZUFQSSh0aGlz
Ll9jb21tYW5kTGluZUFQSUltcGwsIGlzRXZhbE9uQ2FsbEZyYW1lID8gb2JqZWN0IDogbnVsbCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY29tbWFuZExpbmVBUEkgPSBuZXcg
QmFzaWNDb21tYW5kTGluZUFQSTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChpc0V2YWxPbkNh
bGxGcmFtZSkgewogICAgICAgICAgICAgLy8gV2UgY2FuIG9ubHkgdXNlIHRoaXMgYXBwcm9hY2gg
aWYgdGhlIGV2YWx1YXRlIGZ1bmN0aW9uIGlzIHRoZSB0cnVlICdldmFsJy4gVGhhdCBhbGxvd3Mg
dXMgdG8gdXNlIGl0IHdpdGgKQEAgLTU2Miw3ICs1MzQsMTEgQEAgSW5qZWN0ZWRTY3JpcHQucHJv
dG90eXBlID0gewogICAgICAgICAgICAgLy8gY3JlYXRlIHRoYXQgcHJvdmlkZXMgdGhlIGNvbW1h
bmQgbGluZSBBUElzLgogCiAgICAgICAgICAgICB2YXIgcGFyYW1ldGVycyA9IFtJbmplY3RlZFNj
cmlwdEhvc3QuZXZhbHVhdGUsIGV4cHJlc3Npb25dOwotICAgICAgICAgICAgdmFyIGV4cHJlc3Np
b25GdW5jdGlvbkJvZHkgPSAidmFyIF9fb3JpZ2luYWxFdmFsID0gd2luZG93LmV2YWw7IHdpbmRv
dy5ldmFsID0gX19ldmFsOyB0cnkgeyByZXR1cm4gZXZhbChfX2N1cnJlbnRFeHByZXNzaW9uKTsg
fSBmaW5hbGx5IHsgd2luZG93LmV2YWwgPSBfX29yaWdpbmFsRXZhbDsgfSI7CisgICAgICAgICAg
ICB2YXIgZXhwcmVzc2lvbkZ1bmN0aW9uQm9keSA9ICIiICsKKyAgICAgICAgICAgICAgICAidmFy
IGdsb2JhbCA9IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCkgfHwgKDEsIGV2YWwpKCd0aGlzJyk7
IiArCisgICAgICAgICAgICAgICAgInZhciBfX29yaWdpbmFsRXZhbCA9IGdsb2JhbC5ldmFsOyBn
bG9iYWwuZXZhbCA9IF9fZXZhbDsiICsKKyAgICAgICAgICAgICAgICAidHJ5IHsgcmV0dXJuIGV2
YWwoX19jdXJyZW50RXhwcmVzc2lvbik7IH0iICsKKyAgICAgICAgICAgICAgICAiZmluYWxseSB7
IGdsb2JhbC5ldmFsID0gX19vcmlnaW5hbEV2YWw7IH0iOwogCiAgICAgICAgICAgICBpZiAoY29t
bWFuZExpbmVBUEkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBhdm9pZCB1c2luZyBhICd3aXRo
JyBzdGF0ZW1lbnQgKHdoaWNoIGZhaWxzIGluIHN0cmljdCBtb2RlIGFuZCByZXF1aXJlcyBpbmpl
Y3RpbmcgdGhlIEFQSSBvYmplY3QpCkBAIC01OTYsMjEgKzU3MiwyOSBAQCBJbmplY3RlZFNjcmlw
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFdoZW4gbm90IGV2YWx1YXRpbmcgb24gYSBjYWxs
IGZyYW1lIHdlIHVzZSBhICd3aXRoJyBzdGF0ZW1lbnQgdG8gYWxsb3cgdmFyIGFuZCBmdW5jdGlv
biBzdGF0ZW1lbnRzIHRvIGxlYWsKICAgICAgICAgLy8gaW50byB0aGUgZ2xvYmFsIHNjb3BlLiBU
aGlzIGFsbG93IHRoZW0gdG8gc3RpY2sgYXJvdW5kIGJldHdlZW4gZXZhbHVhdGlvbnMuCiAKKyAg
ICAgICAgLy8gRklYTUU6IEpTIENvbnRleHQgaW5zcGVjdGlvbiBjdXJyZW50bHkgZG9lcyBub3Qg
aGF2ZSBhIGdsb2JhbC5jb25zb2xlIG9iamVjdC4KICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IGlmIChjb21tYW5kTGluZUFQSSAmJiBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZSkgewotICAgICAg
ICAgICAgICAgIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLl9fY29tbWFuZExpbmVBUEkgPSBjb21t
YW5kTGluZUFQSTsKLSAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gIndpdGggKCh3aW5kb3cg
JiYgd2luZG93LmNvbnNvbGUgJiYgd2luZG93LmNvbnNvbGUuX19jb21tYW5kTGluZUFQSSkgfHwg
e30pIHsgIiArIGV4cHJlc3Npb24gKyAiXG59IjsKKyAgICAgICAgICAgIGlmIChjb21tYW5kTGlu
ZUFQSSkgeworICAgICAgICAgICAgICAgIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZSkKKyAgICAgICAgICAgICAgICAgICAgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuX19j
b21tYW5kTGluZUFQSSA9IGNvbW1hbmRMaW5lQVBJOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Ll9fY29tbWFuZExpbmVBUEkg
PSBjb21tYW5kTGluZUFQSTsKKyAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gIndpdGggKCh0
aGlzICYmICh0aGlzLmNvbnNvbGUgPyB0aGlzLmNvbnNvbGUuX19jb21tYW5kTGluZUFQSSA6IHRo
aXMuX19jb21tYW5kTGluZUFQSSkpIHx8IHt9KSB7ICIgKyBleHByZXNzaW9uICsgIlxufSI7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBldmFsRnVuY3Rpb24uY2Fs
bChvYmplY3QsIGV4cHJlc3Npb24pOworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGV2YWxGdW5j
dGlvbi5jYWxsKGluc3BlY3RlZEdsb2JhbE9iamVjdCwgZXhwcmVzc2lvbik7CiAKICAgICAgICAg
ICAgIGlmIChvYmplY3RHcm91cCA9PT0gImNvbnNvbGUiKQogICAgICAgICAgICAgICAgIHRoaXMu
X2xhc3RSZXN1bHQgPSByZXN1bHQ7CiAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBpZiAoY29tbWFuZExpbmVBUEkgJiYgaW5zcGVj
dGVkV2luZG93LmNvbnNvbGUpCi0gICAgICAgICAgICAgICAgZGVsZXRlIGluc3BlY3RlZFdpbmRv
dy5jb25zb2xlLl9fY29tbWFuZExpbmVBUEk7CisgICAgICAgICAgICBpZiAoY29tbWFuZExpbmVB
UEkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUp
CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29uc29s
ZS5fX2NvbW1hbmRMaW5lQVBJOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgZGVsZXRlIGluc3BlY3RlZEdsb2JhbE9iamVjdC5fX2NvbW1hbmRMaW5lQVBJOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSwKIApAQCAtNzE1LDEwICs2OTksMTIgQEAgSW5q
ZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5fbW9kdWxlc1tu
YW1lXTsKICAgICAgICAgdmFyIG1vZHVsZUZ1bmN0aW9uID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2
YWx1YXRlKCIoIiArIHNvdXJjZSArICIpIik7CiAgICAgICAgIGlmICh0eXBlb2YgbW9kdWxlRnVu
Y3Rpb24gIT09ICJmdW5jdGlvbiIpIHsKLSAgICAgICAgICAgIGluc3BlY3RlZFdpbmRvdy5jb25z
b2xlLmVycm9yKCJXZWIgSW5zcGVjdG9yIGVycm9yOiBBIGZ1bmN0aW9uIHdhcyBleHBlY3RlZCBm
b3IgbW9kdWxlICVzIGV2YWx1YXRpb24iLCBuYW1lKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBK
UyBDb250ZXh0IGluc3BlY3Rpb24gY3VycmVudGx5IGRvZXMgbm90IGhhdmUgYSBnbG9iYWwuY29u
c29sZSBvYmplY3QuCisgICAgICAgICAgICBpZiAoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNv
bGUpCisgICAgICAgICAgICAgICAgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LmNvbnNvbGUuZXJyb3Io
IldlYiBJbnNwZWN0b3IgZXJyb3I6IEEgZnVuY3Rpb24gd2FzIGV4cGVjdGVkIGZvciBtb2R1bGUg
JXMgZXZhbHVhdGlvbiIsIG5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAg
IH0KLSAgICAgICAgdmFyIG1vZHVsZSA9IG1vZHVsZUZ1bmN0aW9uLmNhbGwoaW5zcGVjdGVkV2lu
ZG93LCBJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZFdpbmRvdywgaW5qZWN0ZWRTY3JpcHRJ
ZCk7CisgICAgICAgIHZhciBtb2R1bGUgPSBtb2R1bGVGdW5jdGlvbi5jYWxsKGluc3BlY3RlZEds
b2JhbE9iamVjdCwgSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGlu
amVjdGVkU2NyaXB0SWQsIHRoaXMpOwogICAgICAgICB0aGlzLl9tb2R1bGVzW25hbWVdID0gbW9k
dWxlOwogICAgICAgICByZXR1cm4gbW9kdWxlOwogICAgIH0sCkBAIC04MzYsNyArODIyLDcgQEAg
SW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF90b1N0cmluZzogZnVu
Y3Rpb24ob2JqKQogICAgIHsKLSAgICAgICAgLy8gV2UgZG9uJ3QgdXNlIFN0cmluZyhvYmopIGJl
Y2F1c2UgaW5zcGVjdGVkV2luZG93LlN0cmluZyBpcyB1bmRlZmluZWQgaWYgb3duaW5nIGZyYW1l
IG5hdmlnYXRlZCB0byBhbm90aGVyIHBhZ2UuCisgICAgICAgIC8vIFdlIGRvbid0IHVzZSBTdHJp
bmcob2JqKSBiZWNhdXNlIGluc3BlY3RlZEdsb2JhbE9iamVjdC5TdHJpbmcgaXMgdW5kZWZpbmVk
IGlmIG93bmluZyBmcmFtZSBuYXZpZ2F0ZWQgdG8gYW5vdGhlciBwYWdlLgogICAgICAgICByZXR1
cm4gIiIgKyBvYmo7CiAgICAgfQogfQpAQCAtMTA3NywyNzcgKzEwNjMsMTAgQEAgSW5qZWN0ZWRT
Y3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNjb3BlSnNvbiA9IGZ1bmN0aW9uKHNjb3BlVHlw
ZUNvZGUsIHNjb3BlT2IKICAgICB9OwogfQogCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQHBh
cmFtIHtDb21tYW5kTGluZUFQSUltcGx9IGNvbW1hbmRMaW5lQVBJSW1wbAotICogQHBhcmFtIHtP
YmplY3R9IGNhbGxGcmFtZQotICovCi1mdW5jdGlvbiBDb21tYW5kTGluZUFQSShjb21tYW5kTGlu
ZUFQSUltcGwsIGNhbGxGcmFtZSkKK2Z1bmN0aW9uIEJhc2ljQ29tbWFuZExpbmVBUEkoKQogewot
ICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZW1iZXIKLSAgICAgKiBAcmV0dXJuIHti
b29sZWFufQotICAgICAqLwotICAgIGZ1bmN0aW9uIGluU2NvcGVWYXJpYWJsZXMobWVtYmVyKQot
ICAgIHsKLSAgICAgICAgaWYgKCFjYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgdmFyIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUuc2NvcGVDaGFpbjsKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAobWVtYmVyIGluIHNjb3BlQ2hhaW5baV0pCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8q
KgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgZm9y
IHdoaWNoIGEgdG9TdHJpbmcgbWV0aG9kIHNob3VsZCBiZSBnZW5lcmF0ZWQuCi0gICAgICogQHJl
dHVybiB7ZnVuY3Rpb24oKTpzdHJpbmd9Ci0gICAgICovCi0gICAgZnVuY3Rpb24gY3VzdG9tVG9T
dHJpbmdNZXRob2QobmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJl
dHVybiAiZnVuY3Rpb24gIiArIG5hbWUgKyAiKCkgeyBbQ29tbWFuZCBMaW5lIEFQSV0gfSI7IH07
Ci0gICAgfQotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBDb21tYW5kTGluZUFQSS5tZW1iZXJz
Xy5sZW5ndGg7ICsraSkgewotICAgICAgICB2YXIgbWVtYmVyID0gQ29tbWFuZExpbmVBUEkubWVt
YmVyc19baV07Ci0gICAgICAgIGlmIChtZW1iZXIgaW4gaW5zcGVjdGVkV2luZG93IHx8IGluU2Nv
cGVWYXJpYWJsZXMobWVtYmVyKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHRo
aXNbbWVtYmVyXSA9IGJpbmQoY29tbWFuZExpbmVBUElJbXBsW21lbWJlcl0sIGNvbW1hbmRMaW5l
QVBJSW1wbCk7Ci0gICAgICAgIHRoaXNbbWVtYmVyXS50b1N0cmluZyA9IGN1c3RvbVRvU3RyaW5n
TWV0aG9kKG1lbWJlcik7Ci0gICAgfQotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyArK2kp
IHsKLSAgICAgICAgdmFyIG1lbWJlciA9ICIkIiArIGk7Ci0gICAgICAgIGlmIChtZW1iZXIgaW4g
aW5zcGVjdGVkV2luZG93IHx8IGluU2NvcGVWYXJpYWJsZXMobWVtYmVyKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXygiJCIgKyBpLCBiaW5k
KGNvbW1hbmRMaW5lQVBJSW1wbC5faW5zcGVjdGVkT2JqZWN0LCBjb21tYW5kTGluZUFQSUltcGws
IGkpKTsKLSAgICB9Ci0KICAgICB0aGlzLiRfID0gaW5qZWN0ZWRTY3JpcHQuX2xhc3RSZXN1bHQ7
CiB9CiAKLS8vIE5PVEU6IFBsZWFzZSBrZWVwIHRoZSBsaXN0IG9mIEFQSSBtZXRob2RzIGJlbG93
IHNuY2hyb25pemVkIHRvIHRoYXQgaW4gV2ViSW5zcGVjdG9yLlJ1bnRpbWVNb2RlbCEKLS8qKgot
ICogQHR5cGUge0FycmF5LjxzdHJpbmc+fQotICogQGNvbnN0Ci0gKi8KLUNvbW1hbmRMaW5lQVBJ
Lm1lbWJlcnNfID0gWwotICAgICIkIiwgIiQkIiwgIiR4IiwgImRpciIsICJkaXJ4bWwiLCAia2V5
cyIsICJ2YWx1ZXMiLCAicHJvZmlsZSIsICJwcm9maWxlRW5kIiwKLSAgICAibW9uaXRvckV2ZW50
cyIsICJ1bm1vbml0b3JFdmVudHMiLCAiaW5zcGVjdCIsICJjb3B5IiwgImNsZWFyIiwgImdldEV2
ZW50TGlzdGVuZXJzIgotXTsKLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqLwotZnVuY3Rpb24g
Q29tbWFuZExpbmVBUElJbXBsKCkKLXsKLX0KLQotQ29tbWFuZExpbmVBUElJbXBsLnByb3RvdHlw
ZSA9IHsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IKLSAgICAgKiBA
cGFyYW0ge05vZGU9fSBzdGFydAotICAgICAqLwotICAgICQ6IGZ1bmN0aW9uIChzZWxlY3Rvciwg
c3RhcnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fY2FuUXVlcnlTZWxlY3Rvck9uTm9kZShz
dGFydCkpCi0gICAgICAgICAgICByZXR1cm4gc3RhcnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7
Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IGluc3BlY3RlZFdpbmRvdy5kb2N1bWVudC5xdWVyeVNl
bGVjdG9yKHNlbGVjdG9yKTsKLSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgICAgIGlmIChzZWxlY3RvciAmJiBzZWxlY3RvclswXSAhPT0gIiMiKSB7
Ci0gICAgICAgICAgICByZXN1bHQgPSBpbnNwZWN0ZWRXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoc2VsZWN0b3IpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAg
ICAgIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLndhcm4oIlRoZSBjb25zb2xlIGZ1bmN0aW9uICQo
KSBoYXMgY2hhbmdlZCBmcm9tICQ9Z2V0RWxlbWVudEJ5SWQoaWQpIHRvICQ9cXVlcnlTZWxlY3Rv
cihzZWxlY3RvcikuIFlvdSBtaWdodCB0cnkgJChcIiMlc1wiKSIsIHNlbGVjdG9yICk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJp
bmd9IHNlbGVjdG9yCi0gICAgICogQHBhcmFtIHtOb2RlPX0gc3RhcnQKLSAgICAgKi8KLSAgICAk
JDogZnVuY3Rpb24gKHNlbGVjdG9yLCBzdGFydCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9j
YW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBzdGFydC5x
dWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RlZFdpbmRv
dy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKLSAgICB9LAotCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtOb2RlPX0gbm9kZQotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0g
ICAgICovCi0gICAgX2NhblF1ZXJ5U2VsZWN0b3JPbk5vZGU6IGZ1bmN0aW9uKG5vZGUpCi0gICAg
ewotICAgICAgICByZXR1cm4gISFub2RlICYmIEluamVjdGVkU2NyaXB0SG9zdC50eXBlKG5vZGUp
ID09PSAibm9kZSIgJiYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8IG5v
ZGUubm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfTk9ERSB8fCBub2RlLm5vZGVUeXBlID09PSBO
b2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBA
cGFyYW0ge3N0cmluZ30geHBhdGgKLSAgICAgKiBAcGFyYW0ge05vZGU9fSBjb250ZXh0Ci0gICAg
ICovCi0gICAgJHg6IGZ1bmN0aW9uKHhwYXRoLCBjb250ZXh0KQotICAgIHsKLSAgICAgICAgdmFy
IGRvYyA9IChjb250ZXh0ICYmIGNvbnRleHQub3duZXJEb2N1bWVudCkgfHwgaW5zcGVjdGVkV2lu
ZG93LmRvY3VtZW50OwotICAgICAgICB2YXIgcmVzdWx0ID0gZG9jLmV2YWx1YXRlKHhwYXRoLCBj
b250ZXh0IHx8IGRvYywgbnVsbCwgWFBhdGhSZXN1bHQuQU5ZX1RZUEUsIG51bGwpOwotICAgICAg
ICBzd2l0Y2ggKHJlc3VsdC5yZXN1bHRUeXBlKSB7Ci0gICAgICAgIGNhc2UgWFBhdGhSZXN1bHQu
TlVNQkVSX1RZUEU6Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Lm51bWJlclZhbHVlOwotICAg
ICAgICBjYXNlIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFOgotICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5zdHJpbmdWYWx1ZTsKLSAgICAgICAgY2FzZSBYUGF0aFJlc3VsdC5CT09MRUFOX1RZUEU6
Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJvb2xlYW5WYWx1ZTsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHZhciBub2RlcyA9IFtdOwotICAgICAgICAgICAgdmFyIG5vZGU7Ci0g
ICAgICAgICAgICB3aGlsZSAobm9kZSA9IHJlc3VsdC5pdGVyYXRlTmV4dCgpKQotICAgICAgICAg
ICAgICAgIG5vZGVzLnB1c2gobm9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZXM7Ci0gICAg
ICAgIH0KLSAgICB9LAotCi0gICAgZGlyOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuZGlyLmFwcGx5KGluc3BlY3RlZFdpbmRvdy5jb25z
b2xlLCBhcmd1bWVudHMpCi0gICAgfSwKLQotICAgIGRpcnhtbDogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLmRpcnhtbC5hcHBseShpbnNw
ZWN0ZWRXaW5kb3cuY29uc29sZSwgYXJndW1lbnRzKQotICAgIH0sCi0KLSAgICBrZXlzOiBmdW5j
dGlvbihvYmplY3QpCi0gICAgewotICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsK
LSAgICB9LAotCi0gICAgdmFsdWVzOiBmdW5jdGlvbihvYmplY3QpCi0gICAgewotICAgICAgICB2
YXIgcmVzdWx0ID0gW107Ci0gICAgICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpCi0gICAgICAg
ICAgICByZXN1bHQucHVzaChvYmplY3Rba2V5XSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfSwKLQotICAgIHByb2ZpbGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBp
bnNwZWN0ZWRXaW5kb3cuY29uc29sZS5wcm9maWxlLmFwcGx5KGluc3BlY3RlZFdpbmRvdy5jb25z
b2xlLCBhcmd1bWVudHMpCi0gICAgfSwKLQotICAgIHByb2ZpbGVFbmQ6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5wcm9maWxlRW5kLmFw
cGx5KGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLCBhcmd1bWVudHMpCi0gICAgfSwKLQotICAgIC8q
KgotICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QKLSAgICAgKiBAcGFyYW0ge0FycmF5Ljxz
dHJpbmc+fHN0cmluZz19IHR5cGVzCi0gICAgICovCi0gICAgbW9uaXRvckV2ZW50czogZnVuY3Rp
b24ob2JqZWN0LCB0eXBlcykKLSAgICB7Ci0gICAgICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3Qu
YWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHR5cGVzID0gdGhpcy5fbm9ybWFsaXplRXZlbnRUeXBlcyh0
eXBlcyk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIG9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGVzW2ldLCB0aGlzLl9s
b2dFdmVudCwgZmFsc2UpOwotICAgICAgICAgICAgb2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIodHlw
ZXNbaV0sIHRoaXMuX2xvZ0V2ZW50LCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdAotICAgICAqIEBwYXJhbSB7QXJyYXku
PHN0cmluZz58c3RyaW5nPX0gdHlwZXMKLSAgICAgKi8KLSAgICB1bm1vbml0b3JFdmVudHM6IGZ1
bmN0aW9uKG9iamVjdCwgdHlwZXMpCi0gICAgewotICAgICAgICBpZiAoIW9iamVjdCB8fCAhb2Jq
ZWN0LmFkZEV2ZW50TGlzdGVuZXIgfHwgIW9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB0eXBlcyA9IHRoaXMuX25vcm1hbGl6ZUV2ZW50VHlw
ZXModHlwZXMpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytp
KQotICAgICAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIHRoaXMu
X2xvZ0V2ZW50LCBmYWxzZSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7Kn0g
b2JqZWN0Ci0gICAgICogQHJldHVybiB7Kn0KLSAgICAgKi8KLSAgICBpbnNwZWN0OiBmdW5jdGlv
bihvYmplY3QpCi0gICAgewotICAgICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQuX2luc3BlY3Qo
b2JqZWN0KTsKLSAgICB9LAotCi0gICAgY29weTogZnVuY3Rpb24ob2JqZWN0KQotICAgIHsKLSAg
ICAgICAgaWYgKGluamVjdGVkU2NyaXB0Ll9zdWJ0eXBlKG9iamVjdCkgPT09ICJub2RlIikKLSAg
ICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5vdXRlckhUTUw7Ci0gICAgICAgIEluamVjdGVkU2Ny
aXB0SG9zdC5jb3B5VGV4dChvYmplY3QpOwotICAgIH0sCi0KLSAgICBjbGVhcjogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0LmNsZWFyQ29uc29sZU1lc3NhZ2Vz
KCk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7Tm9kZX0gbm9kZQotICAgICAq
LwotICAgIGdldEV2ZW50TGlzdGVuZXJzOiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5nZXRFdmVudExpc3RlbmVycyhub2RlKTsKLSAgICB9
LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bQotICAgICAqLwotICAgIF9p
bnNwZWN0ZWRPYmplY3Q6IGZ1bmN0aW9uKG51bSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBJbmpl
Y3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkT2JqZWN0KG51bSk7Ci0gICAgfSwKLQotICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz58c3RyaW5nPX0gdHlwZXMKLSAgICAgKiBAcmV0
dXJuIHtBcnJheS48c3RyaW5nPn0KLSAgICAgKi8KLSAgICBfbm9ybWFsaXplRXZlbnRUeXBlczog
ZnVuY3Rpb24odHlwZXMpCi0gICAgewotICAgICAgICBpZiAodHlwZW9mIHR5cGVzID09PSAidW5k
ZWZpbmVkIikKLSAgICAgICAgICAgIHR5cGVzID0gWyAibW91c2UiLCAia2V5IiwgInRvdWNoIiwg
ImNvbnRyb2wiLCAibG9hZCIsICJ1bmxvYWQiLCAiYWJvcnQiLCAiZXJyb3IiLCAic2VsZWN0Iiwg
ImNoYW5nZSIsICJzdWJtaXQiLCAicmVzZXQiLCAiZm9jdXMiLCAiYmx1ciIsICJyZXNpemUiLCAi
c2Nyb2xsIiwgInNlYXJjaCIsICJkZXZpY2Vtb3Rpb24iLCAiZGV2aWNlb3JpZW50YXRpb24iIF07
Ci0gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0eXBlcyA9PT0gInN0cmluZyIpCi0gICAgICAgICAg
ICB0eXBlcyA9IFsgdHlwZXMgXTsKLQotICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlm
ICh0eXBlc1tpXSA9PT0gIm1vdXNlIikKLSAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAs
IDAsICJtb3VzZWRvd24iLCAibW91c2V1cCIsICJjbGljayIsICJkYmxjbGljayIsICJtb3VzZW1v
dmUiLCAibW91c2VvdmVyIiwgIm1vdXNlb3V0IiwgIm1vdXNld2hlZWwiKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKHR5cGVzW2ldID09PSAia2V5IikKLSAgICAgICAgICAgICAgICByZXN1bHQuc3Bs
aWNlKDAsIDAsICJrZXlkb3duIiwgImtleXVwIiwgImtleXByZXNzIiwgInRleHRJbnB1dCIpOwot
ICAgICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJ0b3VjaCIpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LnNwbGljZSgwLCAwLCAidG91Y2hzdGFydCIsICJ0b3VjaG1vdmUiLCAidG91Y2hl
bmQiLCAidG91Y2hjYW5jZWwiKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVzW2ldID09PSAi
Y29udHJvbCIpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnNwbGljZSgwLCAwLCAicmVzaXplIiwg
InNjcm9sbCIsICJ6b29tIiwgImZvY3VzIiwgImJsdXIiLCAic2VsZWN0IiwgImNoYW5nZSIsICJz
dWJtaXQiLCAicmVzZXQiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1
bHQucHVzaCh0eXBlc1tpXSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKLSAgICAgKi8KLSAg
ICBfbG9nRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgaW5zcGVjdGVkV2lu
ZG93LmNvbnNvbGUubG9nKGV2ZW50LnR5cGUsIGV2ZW50KTsKLSAgICB9Ci19Ci0KLWluamVjdGVk
U2NyaXB0Ll9jb21tYW5kTGluZUFQSUltcGwgPSBuZXcgQ29tbWFuZExpbmVBUElJbXBsKCk7CiBy
ZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7CiB9KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggNTMwMGQ5NS4uMjIxNTYyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCkBAIC0yNSw2ICsyNSw3
IEBACiAKIC8vIFRoaXMgYWxsLWluLW9uZSBjcHAgZmlsZSBjdXRzIGRvd24gb24gdGVtcGxhdGUg
YmxvYXQgdG8gYWxsb3cgdXMgdG8gYnVpbGQgb3VyIFdpbmRvd3MgcmVsZWFzZSBidWlsZC4KIAor
I2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCIKICNpbmNsdWRlICJDb25zb2xlTWVz
c2FnZS5jcHAiCiAjaW5jbHVkZSAiQ29udGVudFNlYXJjaFV0aWxzLmNwcCIKICNpbmNsdWRlICJE
T01FZGl0b3IuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuY3BwCmluZGV4IGExYjY3NzguLjRlYTVmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUg
IlBhZ2VSdW50aW1lQWdlbnQuaCIKIAorI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJTW9kdWxlLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgpAQCAtMTI5LDEyICsxMzAsMTUgQEAgSW5q
ZWN0ZWRTY3JpcHQgUGFnZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
ID0gbWFpbldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpKTsKICAg
ICAgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmlu
amVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNOb1Zh
bHVlKCkpCi0gICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IG1haW4g
d29ybGQgZXhlY3V0aW9uIGNvbnRleHQgbm90IGZvdW5kLiI7CisgICAgICAgICAgICAqZXJyb3JT
dHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yOiBtYWluIHdvcmxkIGV4ZWN1dGlv
biBjb250ZXh0IG5vdCBmb3VuZC4iKTsKKyAgICAgICAgQ29tbWFuZExpbmVBUElNb2R1bGU6Omlu
amVjdElmTmVlZGVkKGluamVjdGVkU2NyaXB0TWFuYWdlcigpLCByZXN1bHQpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KKwogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlv
bkNvbnRleHRJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAg
ICAgKmVycm9yU3RyaW5nID0gIkV4ZWN1dGlvbiBjb250ZXh0IHdpdGggZ2l2ZW4gaWQgbm90IGZv
dW5kLiI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRXhlY3V0aW9uIGNv
bnRleHQgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQuIik7CisgICAgQ29tbWFuZExpbmVBUElNb2R1
bGU6OmluamVjdElmTmVlZGVkKGluamVjdGVkU2NyaXB0TWFuYWdlcigpLCBpbmplY3RlZFNjcmlw
dCk7CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0OwogfQogCg==
</data>
<flag name="review"
          id="243382"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="243383"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219771</attachid>
            <date>2013-12-20 11:23:38 -0800</date>
            <delta_ts>2013-12-20 13:15:03 -0800</delta_ts>
            <desc>[PATCH] Part 2 - Inject CommandLineAPIModule once, instead checking over and over again</desc>
            <filename>part2.patch</filename>
            <type>text/plain</type>
            <size>19771</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMGMzZDQwYy4uZDQyODlmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE2MTcsNiArMTYxNyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCiAgICAgaW5zcGVjdG9yL1BhZ2VDb25zb2xl
QWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorICAgIGluc3Bl
Y3Rvci9QYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAogICAgIGluc3BlY3Rvci9QYWdlUnVu
dGltZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCiAgICAgaW5z
cGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDBkZmRiLi5lZDg1ZjQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTMtMTItMjAgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFeHRyYWN0
IENvbW1hbmRMaW5lQVBJIGludG8gaXRzIG93biBJbmplY3RlZFNjcmlwdE1vZHVsZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MDM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT25seSBpbmplY3QgdGhl
IENvbW1hbmRMaW5lQVBJTW9kdWxlIG9uY2UsIHdoZW4gdGhlIEluamVjdGVkU2NyaXB0CisgICAg
ICAgIGlzIGZpcnN0IGNyZWF0ZWQuIFRoaXMgYXZvaWRzIHJ1bm5pbmcgYSBzbWFsbCBzbmlwcGV0
IG9mIEphdmFTY3JpcHQKKyAgICAgICAgdG8gY2hlY2sgaWYgdGhlIG1vZHVsZSBpcyBsb2FkZWQg
ZXZlcnkgdGltZSB3ZSBmZXRjaCB0aGUgSW5qZWN0ZWRTY3JpcHQuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3Bw
OgorICAgICAgICBBZGQgbmV3IGZpbGVzIHRvIHRoZSBidWlsZC4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFu
YWdlcjo6Y3JlYXRlRm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6ZGlkQ3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICBBZGQgZGlkQ3Jl
YXRlSW5qZWN0ZWRTY3JpcHQgaG9vayBmb3IgYSBzdWJjbGFzcyB0byBpbmplY3QgbW9yZSBzY3Jp
cHRzLgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuaDog
QWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRp
ZENyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgRm9yIHBhZ2VzLCBpbmplY3QgdGhlIENv
bW1hbmRMaW5lQVBJTW9kdWxlLgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKToKKyAgICAgICAgVGhpcyBpcyByZXBsYWNlZCBieSBQYWdlSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLCB3ZSBubyBsb25nZXIgbmVlZAorICAgICAgICB0byBkbyBleHRyYSB3b3JrIGV2
ZXJ5IHRpbWUgd2UgZmV0Y2ggdGhlIGluamVjdGVkU2NyaXB0Rm9yRXZhbC4KKwogMjAxMy0xMi0x
OSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEV4dHJhY3QgQ29tbWFuZExpbmVBUEkgaW50byBpdHMgb3duIEluamVjdGVkU2Ny
aXB0TW9kdWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzYmZlZWQzLi45ZDUw
MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM4NzMsNiArMzg3Myw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25z
b2xlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmggXAor
CVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA2YmM0ZjkwLi4zZWZmYTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTE3
OTU4LDYgKzE3OTU4LDE0IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIj4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxQYWdlUnVudGlt
ZUFnZW50LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgpAQCAtMjEwMDYsNiArMjEwMTQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXE5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcUGFnZUNvbnNvbGVBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXFBhZ2VEZWJ1Z2dlckFnZW50LmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFBhZ2VSdW50aW1lQWdlbnQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxTY3JpcHRBcmd1bWVu
dHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxTY3JpcHRCcmVh
a3BvaW50LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggNjY2OWY2OS4uY2FlMDVhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVycwpAQCAtNDkzOCw2ICs0OTM4LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxQYWdlRGVidWdnZXJBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCI+CisgICAgICA8RmlsdGVyPmlu
c3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXFBhZ2VSdW50aW1lQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5z
cGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMjU0Miw2ICsxMjU0NSw5IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcUGFnZURlYnVnZ2VyQWdlbnQu
aCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFBhZ2VJbmplY3RlZFNjcmlwdE1h
bmFnZXIuaCI+CisgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFBhZ2VSdW50aW1lQWdl
bnQuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDI0ZWQxZjEuLmFmMzA0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MzAsNiArMzUzMCw4IEBACiAJCUE1ODRG
RTI2MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMjUxODYzN0RB
QjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggKi87IH07CiAJCUE1ODRG
RTJCMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyOTE4NjM4NzBGMDA4
NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovOyB9OwogCQlBNTg0RkUyQzE4NjM4
NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZS5oICovOyB9OworCQlBNTg0RkUyRjE4NjRDQjg0MDA4NDNCMTAg
LyogUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyRDE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUlu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi87IH07CisJCUE1ODRGRTMwMTg2NENCODQwMDg0M0Ix
MCAvKiBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyRTE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUlu
amVjdGVkU2NyaXB0TWFuYWdlci5oICovOyB9OwogCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcg
LyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTcz
NDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi87IH07CiAJCUE1QTJBRjBDMTgyOTcz
NDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1
Z2dhYmxlLmggKi87IH07CkBAIC0xMDM2Nyw2ICsxMDM2OSw4IEBACiAJCUE1ODRGRTI3MTg2MzdE
Q0EwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmpz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU4NEZFMkQxODY0Q0I4NDAwODQzQjEw
IC8qIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1ODRGRTJFMTg2NENCODQwMDg0M0IxMCAvKiBQYWdlSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5
M0NGNzIxODQwMkNFOTAwQkZDRTI3IC8qIHByb3RvY29sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gcHJvdG9jb2w7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21i
aW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9ICJjb21iaW5lLWph
dmFzY3JpcHQtcmVzb3VyY2VzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5
M0NGOEExODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NjEzLDYgKzE0NjE3LDggQEAKIAkJCQlGMzgyMDg4
QjE0N0QzNUY5MDAxMEJDMDYgLyogUGFnZUNvbnNvbGVBZ2VudC5oICovLAogCQkJCUYzNDc0MkRB
MTM0MzYyRjAwMDUzMUJDMiAvKiBQYWdlRGVidWdnZXJBZ2VudC5jcHAgKi8sCiAJCQkJRjM0NzQy
REIxMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmggKi8sCisJCQkJQTU4NEZF
MkQxODY0Q0I4NDAwODQzQjEwIC8qIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovLAor
CQkJCUE1ODRGRTJFMTg2NENCODQwMDg0M0IxMCAvKiBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmggKi8sCiAJCQkJRjM4MjA4OEMxNDdEMzVGOTAwMTBCQzA2IC8qIFBhZ2VSdW50aW1lQWdlbnQu
Y3BwICovLAogCQkJCUYzODIwODhEMTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlUnVudGltZUFnZW50
LmggKi8sCiAJCQkJRjM5QkU5NTkxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5j
cHAgKi8sCkBAIC0yNTAwMiw2ICsyNTAwOCw3IEBACiAJCQkJMDg4QTBFMEIxMjZFRjFEQjAwOTc4
RjdBIC8qIFNWR1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMEMx
MjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyN0E5QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUluamVj
dGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzQTAyM0IxN0VCMzcwQTAw
NENERDI1IC8qIFJlbmRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4RURFMTlGMTJB
NTBCOEUwMEI5NTc5NyAvKiBTVkdSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5RTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUmVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY2
MzksNiArMjY2NDYsNyBAQAogCQkJCUJDQ0Q3NEU1MEE0QzhEREYwMDVGREE2RCAvKiBIVE1MVmll
d1NvdXJjZURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzODc5MTIyODgzRTkw
MEI4MUZGOCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MUMyNjZEODE4MzE3QUI0MDAzRjhCMzMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzVNYWMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU4NEZFMkYxODY0Q0I4NDAwODQzQjEwIC8q
IFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEI4QzU2
RDQwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE0Qzc2NzIwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTM3MUE2N0NCMTFDNkM3REIwMDA0N0I4QiAvKiBIeXBoZW5hdGlvbkNGLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcAppbmRleCAxMjc2YzQ1Li5jYjg2NDgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMjksMTQg
KzI5LDE1IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKLQogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogCisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKwogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKKyNp
bmNsdWRlICJQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAg
LTQ3LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzT3duUHRyPEluamVjdGVk
U2NyaXB0TWFuYWdlcj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVGb3JQYWdlKCkKIHsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluamVjdGVkU2NyaXB0TWFuYWdlcigmSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cpKTsKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIoJkluamVjdGVkU2NyaXB0TWFuYWdl
cjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KSk7CiB9CiAKIFBhc3NPd25QdHI8SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyPiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUZvcldvcmtlcigpCkBA
IC0xNzgsOSArMTc5LDE1IEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
aW5qZWN0ZWRTY3JpcHRGb3IoSlNDOjpFeGVjU3RhdGUqIGluc3BlY3RlCiAgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0ID0gY3JlYXRlSW5qZWN0ZWRTY3Jp
cHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgaW5zcGVjdGVkRXhlY1N0YXRlLCBpZCk7CiAgICAg
SW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVjdGVkU2NyaXB0T2JqZWN0LCBtX2luc3BlY3RlZFN0
YXRlQWNjZXNzQ2hlY2spOwogICAgIG1faWRUb0luamVjdGVkU2NyaXB0LnNldChpZCwgcmVzdWx0
KTsKKyAgICBkaWRDcmVhdGVJbmplY3RlZFNjcmlwdChyZXN1bHQpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaWRDcmVhdGVJbmplY3RlZFNj
cmlwdChJbmplY3RlZFNjcmlwdCkKK3sKKyAgICAvLyBJbnRlbnRpb25hbGx5IGVtcHR5LiBUaGlz
IGFsbG93cyBmb3Igc3ViY2xhc3NlcyB0byBpbmplY3QgYWRkaXRpb25hbCBzY3JpcHRzLgorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmlu
ZGV4IDdiNDhkMzYuLmQ2MWZkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpZm5kZWYgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyX2gKICNkZWZpbmUgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyX2gKIAotI2lu
Y2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzks
NiArMzgsMTAgQEAgbmFtZXNwYWNlIERlcHJlY2F0ZWQgewogY2xhc3MgU2NyaXB0T2JqZWN0Owog
fQogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK30KKwogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiB9CkBAIC01NCw3ICs1Nyw3IEBAIGNs
YXNzIEluamVjdGVkU2NyaXB0TWFuYWdlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBjcmVhdGVGb3JQYWdlKCk7CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBjcmVhdGVGb3JXb3JrZXIoKTsKLSAgICB+
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCk7CisgICAgdmlydHVhbCB+SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCk7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKIApAQCAtNzEsOSArNzQsMTEgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgYm9vbCAoKkluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spKEpTQzo6
RXhlY1N0YXRlKik7CiAgICAgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBpbnNwZWN0ZWRTdGF0
ZUFjY2Vzc0NoZWNrKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNr
OyB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVJbmplY3RlZFNjcmlwdChJbmplY3RlZFNjcmlwdCk7CiAKK3ByaXZhdGU6CiAgICAgU3Ry
aW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0
IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6OkV4ZWNTdGF0
ZSosIGludCBpZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxs
SW5PbmUuY3BwCmluZGV4IDIyMTU2MjMuLmZlMGIzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcApAQCAtNzQsNiArNzQsNyBAQAogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUFnZW50
LmNwcCIKICNpbmNsdWRlICJQYWdlRGVidWdnZXJBZ2VudC5jcHAiCisjaW5jbHVkZSAiUGFnZUlu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAiCiAjaW5jbHVkZSAiUGFnZVJ1bnRpbWVBZ2VudC5jcHAi
CiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmNwcCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJh
bWUuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJl
NTUxNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUlu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorCisjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2b2lkIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpZENyZWF0ZUluamVjdGVk
U2NyaXB0KEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0KQoreworICAgIENvbW1hbmRMaW5l
QVBJTW9kdWxlOjppbmplY3RJZk5lZWRlZCh0aGlzLCBpbmplY3RlZFNjcmlwdCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdl
ci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGZiZTg3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyX2gKKyNkZWZpbmUg
UGFnZUluamVjdGVkU2NyaXB0TWFuYWdlcl9oCisKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1h
bmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyIEZJTkFMIDogcHVibGljIEluamVjdGVkU2NyaXB0TWFuYWdlciB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlcihJbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrIGFjY2Vzc0NoZWNrKSA6IEluamVjdGVkU2NyaXB0TWFuYWdlcihhY2Nlc3NDaGVj
aykgeyB9CisgICAgdmlydHVhbCB+UGFnZUluamVjdGVkU2NyaXB0TWFuYWdlcigpIHsgfQorCitw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUluamVjdGVkU2NyaXB0KEluamVj
dGVkU2NyaXB0KSBPVkVSUklERTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vICFkZWZpbmVkKFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXJfaCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAppbmRleCA0ZWE1ZjM2Li5kZDA1
OWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3Bw
CkBAIC0zNCw3ICszNCw2IEBACiAKICNpbmNsdWRlICJQYWdlUnVudGltZUFnZW50LmgiCiAKLSNp
bmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCIKQEAgLTEzMSwxNCArMTMwLDEyIEBAIEluamVjdGVkU2NyaXB0IFBhZ2VSdW50aW1lQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsCiAgICAg
ICAgIEluamVjdGVkU2NyaXB0IHJlc3VsdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLT5pbmpl
Y3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzTm9WYWx1
ZSgpKQogICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBl
cnJvcjogbWFpbiB3b3JsZCBleGVjdXRpb24gY29udGV4dCBub3QgZm91bmQuIik7Ci0gICAgICAg
IENvbW1hbmRMaW5lQVBJTW9kdWxlOjppbmplY3RJZk5lZWRlZChpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLT5pbmpl
Y3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQpOwogICAgIGlmIChpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgi
RXhlY3V0aW9uIGNvbnRleHQgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQuIik7Ci0gICAgQ29tbWFu
ZExpbmVBUElNb2R1bGU6OmluamVjdElmTmVlZGVkKGluamVjdGVkU2NyaXB0TWFuYWdlcigpLCBp
bmplY3RlZFNjcmlwdCk7CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0OwogfQogCg==
</data>
<flag name="review"
          id="243440"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219773</attachid>
            <date>2013-12-20 11:24:58 -0800</date>
            <delta_ts>2013-12-20 11:32:24 -0800</delta_ts>
            <desc>[PATCH] For Bots 1</desc>
            <filename>forbots1.patch</filename>
            <type>text/plain</type>
            <size>72510</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDZmNmJkOC4uZDQyODlmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE1NjgsNiArMTU2OCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCiAKKyAgICBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUu
Y3BwCiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAogICAgIGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbHMuY3BwCiAgICAgaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTE2MTYs
NiArMTYxNyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCiAgICAgaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCiAgICAg
aW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorICAgIGluc3BlY3Rvci9QYWdlSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcAogICAgIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAog
ICAgIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCiAgICAgaW5zcGVjdG9yL1NjcmlwdENh
bGxGcmFtZS5jcHAKQEAgLTMwODQsNiArMzA4NiwxNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
L0luamVjdGVkU2NyaXB0U291cmNlLmgpCiAKIAorIyBHZW5lcmF0ZSBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5oCithZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgT1VUUFVUICR7REVSSVZFRF9T
T1VSQ0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICR7REVSSVZF
RF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMK
KyAgICBNQUlOX0RFUEVOREVOQ1kgaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzCisgICAgREVQRU5EUyAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IveHhkLnBsICR7V0VCQ09S
RV9ESVJ9L2luc3BlY3Rvci9TY3JpcHRzL2pzbWluLnB5CisgICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvU2NyaXB0cy9qc21pbi5weSA8ICR7
V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+ICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5t
aW4uanMKKyAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQkNPUkVfRElSfS9pbnNw
ZWN0b3IveHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyAg
ICBWRVJCQVRJTSkKK2xpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCkKKworCiAjIEdlbmVy
YXRlIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmgKIGFkZF9jdXN0b21fY29tbWFu
ZCgKICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luamVjdGVkU2Ny
aXB0Q2FudmFzTW9kdWxlU291cmNlLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0lu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLm1pbi5qcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdkNjkz
NzIuLmVkODVmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDkgQEAKKzIwMTMtMTItMjAgIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBFeHRyYWN0IENvbW1hbmRMaW5lQVBJIGludG8gaXRzIG93biBJbmplY3RlZFNjcmlwdE1v
ZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2
MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT25s
eSBpbmplY3QgdGhlIENvbW1hbmRMaW5lQVBJTW9kdWxlIG9uY2UsIHdoZW4gdGhlIEluamVjdGVk
U2NyaXB0CisgICAgICAgIGlzIGZpcnN0IGNyZWF0ZWQuIFRoaXMgYXZvaWRzIHJ1bm5pbmcgYSBz
bWFsbCBzbmlwcGV0IG9mIEphdmFTY3JpcHQKKyAgICAgICAgdG8gY2hlY2sgaWYgdGhlIG1vZHVs
ZSBpcyBsb2FkZWQgZXZlcnkgdGltZSB3ZSBmZXRjaCB0aGUgSW5qZWN0ZWRTY3JpcHQuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
QWxsSW5PbmUuY3BwOgorICAgICAgICBBZGQgbmV3IGZpbGVzIHRvIHRoZSBidWlsZC4KKworICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlRm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlkQ3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAg
ICBBZGQgZGlkQ3JlYXRlSW5qZWN0ZWRTY3JpcHQgaG9vayBmb3IgYSBzdWJjbGFzcyB0byBpbmpl
Y3QgbW9yZSBzY3JpcHRzLgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmRpZENyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgRm9yIHBhZ2VzLCBp
bmplY3QgdGhlIENvbW1hbmRMaW5lQVBJTW9kdWxlLgorCisgICAgICAgICogaW5zcGVjdG9yL1Bh
Z2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgVGhpcyBpcyByZXBsYWNlZCBieSBQYWdl
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCB3ZSBubyBsb25nZXIgbmVlZAorICAgICAgICB0byBkbyBl
eHRyYSB3b3JrIGV2ZXJ5IHRpbWUgd2UgZmV0Y2ggdGhlIGluamVjdGVkU2NyaXB0Rm9yRXZhbC4K
KworMjAxMy0xMi0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEV4dHJhY3QgQ29tbWFuZExpbmVBUEkgaW50byBpdHMgb3du
IEluamVjdGVkU2NyaXB0TW9kdWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjYwMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyB0ZXN0cywgbm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisKKyAgICAgICAgTW92ZSB0aGUgQ29tbWFuZExpbmVBUEkgc291cmNlIGludG8gaXRzIG93biBt
b2R1bGUuIExvYWQgdGhlIG1vZHVsZQorICAgICAgICBpbiBJbmplY3RlZFNjcmlwdHMgZm9yIFdl
YkNvcmU6OlBhZ2VzLiBOb3QgZm9yIHdvcmtlcnMuCisKKyAgICAgICAgTW92aW5nIENvbW1hbmRM
aW5lQVBJIGludG8gaXQncyBvd24gbW9kdWxlIG1vdmVzIGl0IGZyb20gYmVpbmcgaW5zaWRlCisg
ICAgICAgIHRoZSBzYW1lIGFub255bW91cyBmdW5jdGlvbiB0byBiZWluZyBldmFsdWF0ZWQgb3V0
c2lkZSB0aGUgYW5vbnltb3VzCisgICAgICAgIGZ1bmN0aW9uLiBUbyBjb25uZWN0IHRoZSB0d28g
SW5qZWN0ZWRTY3JpcHQgcGFzc2VzIGl0c2VsZiB0byB0aGUKKyAgICAgICAgaW5qZWN0ZWQgbW9k
dWxlLCBhbmQgdGhlIENvbW1hbmRMaW5lQVBJIG1vZHVsZSBwbGFjZXMgaXRzIGNsYXNzIG9uIHRo
ZQorICAgICAgICBpbmplY3RlZFNjcmlwdCBhcyBpbmplY3RlZFNjcmlwdC5Db21tYW5kTGluZUFQ
SS4KKworICAgICAgICBUaGlzIGVzc2VudGlhbGx5IG1ha2VzIHRoZSBDb21tYW5kTGluZUFQSSBt
b2R1bGUgYW4gSW5qZWN0ZWRTY3JpcHQKKyAgICAgICAgZXh0ZW5zaW9uLiBJbmplY3RlZFNjcmlw
dFNvdXJjZSBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YKKyAgICAgICAgdGhpcy5Db21tYW5k
TGluZUFQSSB0byBzZWUgaWYgdGhlIGZ1bGxlciB2ZXJzaW9uIGlzIGF2YWlsYWJsZS4gT3RoZXJ3
aXNlCisgICAgICAgIGl0IGZhbGxzIGJhY2sgdG8gYSBCYXNpY0NvbW1hbmRMaW5lQVBJIHdoaWNo
IG9ubHkgZXhwb3NlcyAiJF8iLAorICAgICAgICB3aGljaCBpcyB0aGUgImxhc3QgZXZhbHVhdGVk
IHJlc3VsdCIuIFRoYXQgd2lsbCBiZSB1c2VmdWwgZm9yIEpTIENvbnRleHRzCisgICAgICAgIGFu
ZCBXb3JrZXJzLgorCisgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUsIHRoaXMgcGF0Y2ggbWFrZXMg
SW5qZWN0ZWRTY3JpcHRNb2R1bGUgbW9yZSBnZW5lcmljLAorICAgICAgICB0byBzdXBwb3J0IGJl
aW5nIHVzZWQgaW4gYSBwdXJlIEphdmFTY3JpcHQgZW52aXJvbm1lbnQsIG1lYW5pbmcgb25lCisg
ICAgICAgIHdpdGhvdXQgIndpbmRvdyIgYXMgdGhlIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBbGxJ
bk9uZS5jcHA6CisgICAgICAgIEFkZCBmaWxlcy4gTWluaWZ5IHRoZSBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZSBpbiBnZW5lcmF0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQ
SU1vZHVsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1
bGU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5l
QVBJTW9kdWxlOjppbmplY3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGlu
ZUFQSU1vZHVsZTo6c291cmNlKToKKyAgICAgICAgSW5qZWN0IHRoZSBtb2R1bGUgdGhhdCBkb2Vz
bid0IHJldHVybiBhbiBvYmplY3QsIGl0cyBqdXN0IGV2YWx1YXRlZCBjb2RlCisgICAgICAgIGV4
dGVuZGluZyB0aGUgb3JpZ2luYWwgSW5qZWN0ZWRTY3JpcHQuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6
OmVuc3VyZUluamVjdGVkKToKKyAgICAgICAgT25seSBBU1NFUlQgdGhlIHJlc3VsdCB3YXMgYW4g
b2JqZWN0IGlmIHRoZSBNb2R1bGUgY2xhaW1zIGl0IHJldHVybnMgYW4gb2JqZWN0LgorCisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmV0dXJuc09iamVjdCk6CisgICAg
ICAgIFJldHVybiBhbiBvYmplY3QgdXNlZCBsYXRlciB0byBjYWxsIGludG8gdGhlIENhbnZhc01v
ZHVsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6Cisg
ICAgICAgIEVuc3VyZSB0aGUgQ29tbWFuZExpbmVBUElNb2R1bGUgaXMgbG9hZGVkIGluIHRoZSBQ
YWdlJ3MgSW5qZWN0ZWRTY3JpcHQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuanM6IEFkZGVkLgorICAgICAgICBDcmVhdGUgdGhlIENvbW1hbmRMaW5l
QVBJIGNsYXNzIGFuZCBwbGFjZSBpdCBvbiBpbmplY3RlZFNjcmlwdC4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0
LnByb3RvdHlwZS5fZXZhbHVhdGVPbik6CisgICAgICAgIEluamVjdCBlaXRoZXIgdGhlIEJhc2lj
Q29tbWFuZExpbmVBUEkgb3IgZXh0ZW5kZWQgQ29tbWFuZExpbmVBUEkuCisgICAgICAgIERlcml2
ZSB0aGUgZ2xvYmFsT2JqZWN0IGR5bmFtaWNhbGx5IGluc3RlYWQgb2YgYXNzdW1pbmcgd2luZG93
LgorICAgICAgICBJbmplY3QgdGhlIGNvbW1hbmRMaW5lQVBJIG9uIHdpbmRvdy5jb25zb2xlIG9y
IHRoZSBnbG9iYWxPYmplY3QgYmFzZWQgb24gY29udGV4dC4KKyAgICAgICAgQXVkaXQgYW5kIHJl
bmFtZSB1c2VzIG9mICJ3aW5kb3ciIHRvIHNvbWV0aGluZyBsaWtlIGdsb2JhbE9iamVjdC4KKwog
MjAxMy0xMi0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBJbnNwZWN0b3JGcm9udGVuZEhvc3QuZGVidWdnYWJsZVR5
cGUgdG8gbGV0IHRoZSBmcm9udGVuZCBrbm93IGl0J3MgYmFja2VuZCBpcyBKYXZhU2NyaXB0IG9y
IFdlYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNDc1ZjdhYi4uOWI3MWM5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMTE5LDYgKzExMTksMTMgQEAgSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IEluamVjdGVkU2NyaXB0U291cmNlLmpzCiAJcGVybCAiJChX
ZWJDb3JlKS9pbnNwZWN0b3IveHhkLnBsIiBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAuL0luamVj
dGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNvdXJjZS5oCiAJcm0gLWYgLi9J
bmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKIAorYWxsIDogQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaAorCitDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIDogQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuanMKKwlweXRob24gIiQoV2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdHMvanNt
aW4ucHkiIDwiJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMiID4gLi9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKKwlwZXJsICIkKFdlYkNv
cmUpL2luc3BlY3Rvci94eGQucGwiIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzIC4vQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmgKKwlybSAtZiAuL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcworCiBhbGwgOiBJ
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oCiAKIEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlU291cmNlLmggOiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQppbmRleCBhNjBjNWI1Li5mMDJmOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQpAQCAtMzcxLDE0ICszNzEsMTggQEAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JP
dmVybGF5UGFnZS5oOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0b3JPdmUKIAkkKEFNX1Zf
R0VOKSQoUFlUSE9OKSAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRzL2lubGluZS1hbmQtbWlu
aWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXlQYWdlLmh0bWwgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luc3BlY3Rvck92ZXJs
YXlQYWdlLmNvbWJpbmVkLmh0bWwKIAkkKEFNX1ZfR0VOKSQoUEVSTCkgJChXZWJDb3JlKS9pbnNw
ZWN0b3IveHhkLnBsIEluc3BlY3Rvck92ZXJsYXlQYWdlX2h0bWwgJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0luc3BlY3Rvck92ZXJsYXlQYWdlLmNvbWJpbmVkLmh0bWwgJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0luc3BlY3Rvck92ZXJsYXlQYWdlLmgKIAotRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Jbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcwotCSQoQU1fVl9HRU4pJChQWVRIT04pICQo
V2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdHMvanNtaW4ucHkgPCQoV2ViQ29yZSkvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzID4gJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLm1pbi5qcwotCSQoQU1fVl9HRU4p
JChQRVJMKSAkKFdlYkNvcmUpL2luc3BlY3Rvci94eGQucGwgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGVTb3VyY2VfanMgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlU291cmNlLm1pbi5qcyAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvSW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGVTb3VyY2UuaAotCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luamVjdGVkU2Ny
aXB0U291cmNlLmg6ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpz
CiAJJChBTV9WX0dFTikkKFBZVEhPTikgJChXZWJDb3JlKS9pbnNwZWN0b3IvU2NyaXB0cy9qc21p
bi5weSA8JChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgPiAkKEdF
TlNPVVJDRVNfV0VCQ09SRSkvSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCiAJJChBTV9WX0dF
TikkKFBFUkwpICQoV2ViQ29yZSkvaW5zcGVjdG9yL3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJj
ZV9qcyAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzICQo
R0VOU09VUkNFU19XRUJDT1JFKS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oCiAKK0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaDogJChXZWJDb3JlKS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKwkkKEFNX1ZfR0VOKSQoUFlUSE9O
KSAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRzL2pzbWluLnB5IDwkKFdlYkNvcmUpL2luc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+ICQoR0VOU09VUkNFU19XRUJDT1JF
KS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKKwkkKEFNX1ZfR0VOKSQoUEVSTCkg
JChXZWJDb3JlKS9pbnNwZWN0b3IveHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pz
ICQoR0VOU09VUkNFU19XRUJDT1JFKS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMg
JChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKworRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oOiAk
KFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcwor
CSQoQU1fVl9HRU4pJChQWVRIT04pICQoV2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdHMvanNtaW4u
cHkgPCQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
LmpzID4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291
cmNlLm1pbi5qcworCSQoQU1fVl9HRU4pJChQRVJMKSAkKFdlYkNvcmUpL2luc3BlY3Rvci94eGQu
cGwgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2VfanMgJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLm1pbi5qcyAkKEdFTlNPVVJDRVNf
V0VCQ09SRSkvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuaAorCiBpZiBFTkFCTEVf
V0VCX0FVRElPCiAjIEluc3RhbGxpbmcgSFJURiBkYXRhYmFzZSB3YXYgZmlsZXMKIGF1ZGlvZGly
ID0gJHtkYXRhZGlyfS93ZWJraXRndGstQFdFQktJVEdUS19BUElfVkVSU0lPTkAvcmVzb3VyY2Vz
L2F1ZGlvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZGM4NGZlOS4uOWQ1MDFl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01LDYgKzUsNyBAQCB3ZWJjb3Jl
X2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTUHJvcGVydHlO
YW1lcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvRXZlbnRGYWN0b3J5LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9FdmVudEhlYWRlcnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEludGVyZmFj
ZXMuaCBcCkBAIC0zNzY2LDYgKzM3NjcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2ljdS91bmljb2RlL3V0eXBlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pY3UvdW5p
Y29kZS91dmVyc2lvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQmluZGluZ1Zpc2l0
b3JzLmggXAorICAgIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5jcHAgXAorICAgIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZUFQSVR5cGVzLmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIFwKQEAgLTM4NzAsNiArMzg3Myw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xl
QWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmggXAorCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBmNzg3N2I3Li4zZWZmYTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTE3NTU4
LDYgKzE3NTU4LDE0IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxicmlkZ2VccnVudGlt
ZV9tZXRob2QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnJpZGdlXHJ1bnRp
bWVfb2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJyaWRnZVxydW50
aW1lX3Jvb3QuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENv
bW1hbmRMaW5lQVBJTW9kdWxlLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29uc29sZU1lc3NhZ2UuY3BwIj4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xNzk1MCw2ICsxNzk1OCwx
NCBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcUGFnZVJ1bnRpbWVBZ2VudC5jcHAiPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE4MDg3
LDYgKzE4MTAzLDcgQEAKICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQ1NTR3JhbW1hci5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRIZWFkZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRJbnRlcmZhY2VzLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRUYXJnZXRI
ZWFkZXJzLmgiIC8+CkBAIC0yMDk0MSw2ICsyMDk1OCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxicmlkZ2VccnVudGltZV9yb290LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcQmluZGluZ1Zpc2l0b3JzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcQ29uc29sZUFQSVR5cGVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29tbWFuZExpbmVBUElNb2R1bGUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxDb25zb2xlTWVzc2FnZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENvbnRlbnRTZWFyY2hVdGlscy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXERPTUVkaXRvci5oIiAvPgpAQCAt
MjA5OTYsNiArMjEwMTQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XE5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcUGFnZUNvbnNvbGVBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXFBhZ2VEZWJ1Z2dlckFnZW50LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFBhZ2VSdW50aW1lQWdlbnQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxTY3JpcHRBcmd1bWVudHMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxTY3JpcHRCcmVha3BvaW50Lmgi
IC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMKaW5kZXggYWQwZDUwMS4uY2FlMDVhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
NDc5MSw2ICs0NzkxLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJyaWRnZVxydW50
aW1lX3Jvb3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+YnJpZGdlPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29tbWFuZExpbmVB
UElNb2R1bGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29uc29sZU1l
c3NhZ2UuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC00OTM1LDYgKzQ5MzgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rv
cjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcUGFnZVJ1bnRpbWVBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5p
bnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEyMzY4LDYgKzEyMzc0LDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxCaW5kaW5nVmlzaXRvcnMu
aCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENvbW1hbmRMaW5lQVBJTW9kdWxl
LmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxDb25zb2xlQVBJVHlwZXMuaCI+
CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAt
MTI1MzYsNiArMTI1NDUsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XFBhZ2VEZWJ1Z2dlckFnZW50LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxQ
YWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxQYWdlUnVudGltZUFnZW50LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEzMDM5LDYgKzEzMDUxLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xDU1NHcmFtbWFyLmgiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEV2ZW50SGVhZGVycy5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJj
ZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMWNiMDY0Li5hZjMwNDI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0zNTI3LDYgKzM1MjcsMTEgQEAKIAkJQTU0QTgyRjExNTIyOERGNjAwQzcyQkE2IC8qIERPTU5v
ZGVQcml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVByaXZh
dGUuaCAqLzsgfTsKIAkJQTU3MzJCMEExMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMy
QjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgKi87IH07CiAJCUE1NzMy
QjBCMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8q
IERhdGVDb21wb25lbnRzLmggKi87IH07CisJCUE1ODRGRTI2MTg2MzdEQUIwMDg0M0IxMCAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmggKi87IH07CisJCUE1ODRGRTJCMTg2Mzg3MEYwMDg0M0IxMCAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElN
b2R1bGUuY3BwICovOyB9OworCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICov
OyB9OworCQlBNTg0RkUyRjE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUluamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTg0RkUyRDE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAg
Ki87IH07CisJCUE1ODRGRTMwMTg2NENCODQwMDg0M0IxMCAvKiBQYWdlSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTg0RkUyRTE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5oICov
OyB9OwogCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4
QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVBMkFGMEIxODI5NzM0MzAw
REUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdn
YWJsZS5jcHAgKi87IH07CiAJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdn
YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVB
MkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87IH07CkBAIC0xMDM2
MCw2ICsxMDM2NSwxMiBAQAogCQlBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZVByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdD
IC8qIERhdGVDb21wb25lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERhdGVDb21wb25lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3
MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTg0RkUyNzE4
NjM3RENBMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU4NEZFMjkxODYzODcwRjAwODQz
QjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9k
dWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9k
dWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1ODRGRTJEMTg2NENCODQwMDg0
M0IxMCAvKiBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNTg0RkUyRTE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUlu
amVjdGVkU2NyaXB0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
YWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1OTNDRjcyMTg0MDJDRTkwMEJGQ0UyNyAvKiBwcm90b2NvbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IHByb3RvY29sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyog
Y29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSAiY29tYmlu
ZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1OTNDRjhBMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDQ2MSw2ICsxNDQ3Miw3IEBACiAJCTFDNUZB
RUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICovLAogCQkJCUFBOTEyNzUwMTU3RTM1QTUwMDQ1NEU1
NCAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oICovLAogCQkJCTdBNTYzRTU0
MTJERTMyQjAwMEY0NTM2RCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLAogCQkJCTRGNzA3
QTk3MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuY3Bw
ICovLApAQCAtMTQ0OTAsNiArMTQ1MDIsOSBAQAogCQkJCUE1MTgyMjUzMTdFMjhDRjEwMEE5QkEx
RCAvKiBTY3JpcHRzICovLAogCQkJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21iaW5l
LWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsICovLAogCQkJCUYzNUFFNUFCMTQ5MjVGNUIwMDRENTc3
NiAvKiBCaW5kaW5nVmlzaXRvcnMuaCAqLywKKwkJCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovLAorCQkJCUE1ODRGRTJBMTg2Mzg3MEYwMDg0
M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICovLAorCQkJCUE1ODRGRTI3MTg2MzdEQ0Ew
MDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyAqLywKIAkJCQkyREYyRTlE
NDE2NkUzOTc0MDAzNUJFRjIgLyogQ29uc29sZUFQSVR5cGVzLmggKi8sCiAJCQkJNDFGMDYxOEQw
RjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLywKIAkJCQk0MUYwNjE4QzBG
NUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCAqLywKQEAgLTE0NjAyLDYgKzE0NjE3
LDggQEAKIAkJCQlGMzgyMDg4QjE0N0QzNUY5MDAxMEJDMDYgLyogUGFnZUNvbnNvbGVBZ2VudC5o
ICovLAogCQkJCUYzNDc0MkRBMTM0MzYyRjAwMDUzMUJDMiAvKiBQYWdlRGVidWdnZXJBZ2VudC5j
cHAgKi8sCiAJCQkJRjM0NzQyREIxMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50
LmggKi8sCisJCQkJQTU4NEZFMkQxODY0Q0I4NDAwODQzQjEwIC8qIFBhZ2VJbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwICovLAorCQkJCUE1ODRGRTJFMTg2NENCODQwMDg0M0IxMCAvKiBQYWdlSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8sCiAJCQkJRjM4MjA4OEMxNDdEMzVGOTAwMTBCQzA2IC8q
IFBhZ2VSdW50aW1lQWdlbnQuY3BwICovLAogCQkJCUYzODIwODhEMTQ3RDM1RjkwMDEwQkMwNiAv
KiBQYWdlUnVudGltZUFnZW50LmggKi8sCiAJCQkJRjM5QkU5NTkxMjY3M0JGNDAwRTBBNjc0IC8q
IFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8sCkBAIC0yMjk2MCw2ICsyMjk3Nyw3IEBACiAJCQkJM0Yy
QjMzRUIxNjVBRjE1NjAwRTM5ODdDIC8qIERPTVdlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJM0YyQjMzRUQxNjVBRjE1NjAwRTM5ODdDIC8qIERPTVdlYktpdENTU1Zp
ZXdwb3J0UnVsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxNzE4MjA1NDA3
MDBGMkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOEExOTU5MzIxNDdFQTE2RTAwRDFFQTYxIC8qIERPTVdlYktpdE5hbWVk
Rmxvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEExOTU5MzQxNDdFQTE2RTAwRDFFQTYxIC8qIERP
TVdlYktpdE5hbWVkRmxvd0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkY0QzBF
NENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTIzMzcwLDYgKzIzMzg4LDcgQEAKIAkJCQk1OTEzQTI0MjEzRDQ5RUJBMDBGNUIwNUMg
LyogSWRlbnRpZmllcnNGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNTBFRjg2
RDQ3MDA5RDBDQUYgLyogSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxMjVGODU2MTgyQzBGODMwMEQ4NENEOSAvKiBDcnlwdG9LZXlTZXJpYWxpemF0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjQxRUMwMTgxOUIz
NjAwMEVFNEM0MSAvKiBNZWRpYVRpbWVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQzA1NENE
MTExOEM4RTQwMENFMjYzNiAvKiBJRExQYXJzZXIucG0gaW4gSGVhZGVycyAqLywKIAkJCQlDM0NG
MTdBNTE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNDk4OSw2ICsyNTAwOCw3IEBACiAJCQkJMDg4QTBFMEIxMjZFRjFEQjAwOTc4RjdBIC8q
IFNWR1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMEMxMjZFRjFE
QjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0E5QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUluamVjdGVkU2Ny
aXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzQTAyM0IxN0VCMzcwQTAwNENERDI1
IC8qIFJlbmRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4RURFMTlGMTJBNTBCOEUw
MEI5NTc5NyAvKiBTVkdSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5RTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUmVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY2MjYsNiAr
MjY2NDYsNyBAQAogCQkJCUJDQ0Q3NEU1MEE0QzhEREYwMDVGREE2RCAvKiBIVE1MVmlld1NvdXJj
ZURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzODc5MTIyODgzRTkwMEI4MUZG
OCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUMyNjZE
ODE4MzE3QUI0MDAzRjhCMzMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU4NEZFMkYxODY0Q0I4NDAwODQzQjEwIC8qIFBhZ2VJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEI4QzU2RDQwRjI4
NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0
Qzc2NzIwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3MUE2N0NCMTFDNkM3REIwMDA0N0I4QiAvKiBIeXBoZW5hdGlvbkNGLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjgwOTksNiArMjgxMjAsNyBAQAogCQkJCUIyNTU5OTg0MEQwMEQ4QkEwMEJC
ODI1QyAvKiBTVkdGRUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUVFMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRUltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUQ3MTlFQjE4MTEwNkUwMDAxNkRDNTEgLyogSURCUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBNTg0RkUyQjE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTGln
aHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUYzMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlGNjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUwMmQyZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5j
cHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1v
ZHVsZS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkNvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29tbWFuZExpbmVB
UElNb2R1bGU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlKCkKKyAgICA6IEluamVjdGVkU2NyaXB0TW9k
dWxlKEFTQ0lJTGl0ZXJhbCgiQ29tbWFuZExpbmVBUEkiKSkKK3sKK30KKwordm9pZCBDb21tYW5k
TGluZUFQSU1vZHVsZTo6aW5qZWN0SWZOZWVkZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0KQoreworICAg
IENvbW1hbmRMaW5lQVBJTW9kdWxlIG1vZHVsZTsKKyAgICBtb2R1bGUuZW5zdXJlSW5qZWN0ZWQo
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdCk7Cit9CisKK1N0cmluZyBDb21t
YW5kTGluZUFQSU1vZHVsZTo6c291cmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pz
KSwgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZTMxNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaApAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBD
b21tYW5kTGluZUFQSU1vZHVsZV9oCisjZGVmaW5lIENvbW1hbmRMaW5lQVBJTW9kdWxlX2gKKwor
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TW9kdWxlLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbW1hbmRMaW5lQVBJTW9kdWxlIEZJ
TkFMIDogcHVibGljIEluamVjdGVkU2NyaXB0TW9kdWxlIHsKK3B1YmxpYzoKKyAgICBDb21tYW5k
TGluZUFQSU1vZHVsZSgpOworCisgICAgdmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIHJldHVybnNPYmplY3QoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQorCisgICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiwgSW5qZWN0ZWRTY3JpcHQpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKworI2VuZGlmIC8vICFkZWZp
bmVkKENvbW1hbmRMaW5lQVBJTW9kdWxlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uN2EyYzVhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwpAQCAtMCwwICsxLDM0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8qKgorICogQHBhcmFtIHtJbmplY3RlZFNjcmlwdEhvc3R9IEluamVjdGVkU2NyaXB0
SG9zdAorICogQHBhcmFtIHtXaW5kb3d9IGluc3BlY3RlZFdpbmRvdworICogQHBhcmFtIHtudW1i
ZXJ9IGluamVjdGVkU2NyaXB0SWQKKyAqLworKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3Qs
IGluc3BlY3RlZFdpbmRvdywgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRTY3JpcHQpIHsKKwor
LyoqCisgKiBAcGFyYW0ge0FyZ3VtZW50c30gYXJyYXkKKyAqIEBwYXJhbSB7bnVtYmVyPX0gaW5k
ZXgKKyAqIEByZXR1cm4ge0FycmF5LjwqPn0KKyAqLworZnVuY3Rpb24gc2xpY2UoYXJyYXksIGlu
ZGV4KQoreworICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gaW5kZXggfHwg
MDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQorICAgICAgICByZXN1bHQucHVzaChhcnJheVtpXSk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoqCisgKiBQbGVhc2UgdXNlIHRoaXMgYmluZCwg
bm90IHRoZSBvbmUgZnJvbSBGdW5jdGlvbi5wcm90b3R5cGUKKyAqIEBwYXJhbSB7ZnVuY3Rpb24o
Li4uKX0gZnVuYworICogQHBhcmFtIHtPYmplY3R9IHRoaXNPYmplY3QKKyAqIEBwYXJhbSB7Li4u
bnVtYmVyfSB2YXJfYXJncworICovCitmdW5jdGlvbiBiaW5kKGZ1bmMsIHRoaXNPYmplY3QsIHZh
cl9hcmdzKQoreworICAgIHZhciBhcmdzID0gc2xpY2UoYXJndW1lbnRzLCAyKTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7Li4ubnVtYmVyfSB2YXJfYXJncworICAgICAqLworICAgIGZ1bmN0
aW9uIGJvdW5kKHZhcl9hcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhp
c09iamVjdCwgYXJncy5jb25jYXQoc2xpY2UoYXJndW1lbnRzKSkpOworICAgIH0KKyAgICBib3Vu
ZC50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gImJvdW5kOiAiICsgZnVu
YzsKKyAgICB9OworICAgIHJldHVybiBib3VuZDsKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqIEBwYXJhbSB7Q29tbWFuZExpbmVBUElJbXBsfSBjb21tYW5kTGluZUFQSUltcGwKKyAqIEBw
YXJhbSB7T2JqZWN0fSBjYWxsRnJhbWUKKyAqLworZnVuY3Rpb24gQ29tbWFuZExpbmVBUEkoY29t
bWFuZExpbmVBUElJbXBsLCBjYWxsRnJhbWUpCit7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IG1lbWJlcgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZnVu
Y3Rpb24gaW5TY29wZVZhcmlhYmxlcyhtZW1iZXIpCisgICAgeworICAgICAgICBpZiAoIWNhbGxG
cmFtZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgc2NvcGVDaGFp
biA9IGNhbGxGcmFtZS5zY29wZUNoYWluOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNj
b3BlQ2hhaW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtZW1iZXIgaW4gc2NvcGVD
aGFpbltpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCBmb3Igd2hpY2ggYSB0b1N0cmluZyBtZXRob2Qg
c2hvdWxkIGJlIGdlbmVyYXRlZC4KKyAgICAgKiBAcmV0dXJuIHtmdW5jdGlvbigpOnN0cmluZ30K
KyAgICAgKi8KKyAgICBmdW5jdGlvbiBjdXN0b21Ub1N0cmluZ01ldGhvZChuYW1lKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSAr
ICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IENvbW1hbmRMaW5lQVBJLm1lbWJlcnNfLmxlbmd0aDsgKytpKSB7CisgICAgICAg
IHZhciBtZW1iZXIgPSBDb21tYW5kTGluZUFQSS5tZW1iZXJzX1tpXTsKKyAgICAgICAgaWYgKG1l
bWJlciBpbiBpbnNwZWN0ZWRXaW5kb3cgfHwgaW5TY29wZVZhcmlhYmxlcyhtZW1iZXIpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdGhpc1ttZW1iZXJdID0gYmluZChjb21tYW5k
TGluZUFQSUltcGxbbWVtYmVyXSwgY29tbWFuZExpbmVBUElJbXBsKTsKKyAgICAgICAgdGhpc1tt
ZW1iZXJdLnRvU3RyaW5nID0gY3VzdG9tVG9TdHJpbmdNZXRob2QobWVtYmVyKTsKKyAgICB9CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7ICsraSkgeworICAgICAgICB2YXIgbWVtYmVyID0g
IiQiICsgaTsKKyAgICAgICAgaWYgKG1lbWJlciBpbiBpbnNwZWN0ZWRXaW5kb3cgfHwgaW5TY29w
ZVZhcmlhYmxlcyhtZW1iZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdGhp
cy5fX2RlZmluZUdldHRlcl9fKCIkIiArIGksIGJpbmQoY29tbWFuZExpbmVBUElJbXBsLl9pbnNw
ZWN0ZWRPYmplY3QsIGNvbW1hbmRMaW5lQVBJSW1wbCwgaSkpOworICAgIH0KKworICAgIHRoaXMu
JF8gPSBpbmplY3RlZFNjcmlwdC5fbGFzdFJlc3VsdDsKK30KKworLyoqCisgKiBAdHlwZSB7QXJy
YXkuPHN0cmluZz59CisgKiBAY29uc3QKKyAqLworQ29tbWFuZExpbmVBUEkubWVtYmVyc18gPSBb
CisgICAgIiQiLCAiJCQiLCAiJHgiLCAiZGlyIiwgImRpcnhtbCIsICJrZXlzIiwgInZhbHVlcyIs
ICJwcm9maWxlIiwgInByb2ZpbGVFbmQiLAorICAgICJtb25pdG9yRXZlbnRzIiwgInVubW9uaXRv
ckV2ZW50cyIsICJpbnNwZWN0IiwgImNvcHkiLCAiY2xlYXIiLCAiZ2V0RXZlbnRMaXN0ZW5lcnMi
CitdOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBDb21tYW5kTGluZUFQ
SUltcGwoKQoreworfQorCitDb21tYW5kTGluZUFQSUltcGwucHJvdG90eXBlID0geworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvcgorICAgICAqIEBwYXJhbSB7Tm9kZT19
IHN0YXJ0CisgICAgICovCisgICAgJDogZnVuY3Rpb24gKHNlbGVjdG9yLCBzdGFydCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9jYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGFydC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKworICAgICAgICB2
YXIgcmVzdWx0ID0gaW5zcGVjdGVkV2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0
b3IpOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgaWYgKHNlbGVjdG9yICYmIHNlbGVjdG9yWzBdICE9PSAiIyIpIHsKKyAgICAgICAgICAg
IHJlc3VsdCA9IGluc3BlY3RlZFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3Rv
cik7CisgICAgICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgaW5zcGVjdGVk
V2luZG93LmNvbnNvbGUud2FybigiVGhlIGNvbnNvbGUgZnVuY3Rpb24gJCgpIGhhcyBjaGFuZ2Vk
IGZyb20gJD1nZXRFbGVtZW50QnlJZChpZCkgdG8gJD1xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKS4g
WW91IG1pZ2h0IHRyeSAkKFwiIyVzXCIpIiwgc2VsZWN0b3IgKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IK
KyAgICAgKiBAcGFyYW0ge05vZGU9fSBzdGFydAorICAgICAqLworICAgICQkOiBmdW5jdGlvbiAo
c2VsZWN0b3IsIHN0YXJ0KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2NhblF1ZXJ5U2VsZWN0
b3JPbk5vZGUoc3RhcnQpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0LnF1ZXJ5U2VsZWN0b3JB
bGwoc2VsZWN0b3IpOworICAgICAgICByZXR1cm4gaW5zcGVjdGVkV2luZG93LmRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge05vZGU9fSBub2RlCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBf
Y2FuUXVlcnlTZWxlY3Rvck9uTm9kZTogZnVuY3Rpb24obm9kZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiAhIW5vZGUgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LnR5cGUobm9kZSkgPT09ICJub2RlIiAm
JiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgfHwgbm9kZS5ub2RlVHlwZSA9
PT0gTm9kZS5ET0NVTUVOVF9OT0RFIHx8IG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRf
RlJBR01FTlRfTk9ERSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSB4cGF0aAorICAgICAqIEBwYXJhbSB7Tm9kZT19IGNvbnRleHQKKyAgICAgKi8KKyAgICAkeDog
ZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpCisgICAgeworICAgICAgICB2YXIgZG9jID0gKGNvbnRl
eHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50KSB8fCBpbnNwZWN0ZWRXaW5kb3cuZG9jdW1lbnQ7
CisgICAgICAgIHZhciByZXN1bHQgPSBkb2MuZXZhbHVhdGUoeHBhdGgsIGNvbnRleHQgfHwgZG9j
LCBudWxsLCBYUGF0aFJlc3VsdC5BTllfVFlQRSwgbnVsbCk7CisgICAgICAgIHN3aXRjaCAocmVz
dWx0LnJlc3VsdFR5cGUpIHsKKyAgICAgICAgY2FzZSBYUGF0aFJlc3VsdC5OVU1CRVJfVFlQRToK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQubnVtYmVyVmFsdWU7CisgICAgICAgIGNhc2UgWFBh
dGhSZXN1bHQuU1RSSU5HX1RZUEU6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnN0cmluZ1Zh
bHVlOworICAgICAgICBjYXNlIFhQYXRoUmVzdWx0LkJPT0xFQU5fVFlQRToKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQuYm9vbGVhblZhbHVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgdmFyIG5vZGVzID0gW107CisgICAgICAgICAgICB2YXIgbm9kZTsKKyAgICAgICAgICAgIHdo
aWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCisgICAgICAgICAgICAgICAgbm9kZXMu
cHVzaChub2RlKTsKKyAgICAgICAgICAgIHJldHVybiBub2RlczsKKyAgICAgICAgfQorICAgIH0s
CisKKyAgICBkaXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNwZWN0ZWRX
aW5kb3cuY29uc29sZS5kaXIuYXBwbHkoaW5zcGVjdGVkV2luZG93LmNvbnNvbGUsIGFyZ3VtZW50
cykKKyAgICB9LAorCisgICAgZGlyeG1sOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuZGlyeG1sLmFwcGx5KGluc3BlY3RlZFdpbmRvdy5j
b25zb2xlLCBhcmd1bWVudHMpCisgICAgfSwKKworICAgIGtleXM6IGZ1bmN0aW9uKG9iamVjdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOworICAgIH0sCisKKyAg
ICB2YWx1ZXM6IGZ1bmN0aW9uKG9iamVjdCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBb
XTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkKKyAgICAgICAgICAgIHJlc3VsdC5w
dXNoKG9iamVjdFtrZXldKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAg
cHJvZmlsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc3BlY3RlZFdpbmRv
dy5jb25zb2xlLnByb2ZpbGUuYXBwbHkoaW5zcGVjdGVkV2luZG93LmNvbnNvbGUsIGFyZ3VtZW50
cykKKyAgICB9LAorCisgICAgcHJvZmlsZUVuZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLnByb2ZpbGVFbmQuYXBwbHkoaW5zcGVjdGVk
V2luZG93LmNvbnNvbGUsIGFyZ3VtZW50cykKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtPYmplY3R9IG9iamVjdAorICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz58c3RyaW5n
PX0gdHlwZXMKKyAgICAgKi8KKyAgICBtb25pdG9yRXZlbnRzOiBmdW5jdGlvbihvYmplY3QsIHR5
cGVzKQorICAgIHsKKyAgICAgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3Rl
bmVyIHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgdHlwZXMgPSB0aGlzLl9ub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
b2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIHRoaXMuX2xvZ0V2ZW50LCBmYWxz
ZSk7CisgICAgICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgdGhpcy5f
bG9nRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge09iamVjdH0gb2JqZWN0CisgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPnxzdHJp
bmc9fSB0eXBlcworICAgICAqLworICAgIHVubW9uaXRvckV2ZW50czogZnVuY3Rpb24ob2JqZWN0
LCB0eXBlcykKKyAgICB7CisgICAgICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRM
aXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHR5cGVzID0gdGhpcy5fbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgdGhpcy5fbG9nRXZlbnQsIGZh
bHNlKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSBvYmplY3QKKyAgICAg
KiBAcmV0dXJuIHsqfQorICAgICAqLworICAgIGluc3BlY3Q6IGZ1bmN0aW9uKG9iamVjdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC5faW5zcGVjdChvYmplY3QpOworICAg
IH0sCisKKyAgICBjb3B5OiBmdW5jdGlvbihvYmplY3QpCisgICAgeworICAgICAgICBpZiAoaW5q
ZWN0ZWRTY3JpcHQuX3N1YnR5cGUob2JqZWN0KSA9PT0gIm5vZGUiKQorICAgICAgICAgICAgb2Jq
ZWN0ID0gb2JqZWN0Lm91dGVySFRNTDsKKyAgICAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0LmNvcHlU
ZXh0KG9iamVjdCk7CisgICAgfSwKKworICAgIGNsZWFyOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBJbmplY3RlZFNjcmlwdEhvc3QuY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtOb2RlfSBub2RlCisgICAgICovCisgICAgZ2V0RXZl
bnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHRIb3N0LmdldEV2ZW50TGlzdGVuZXJzKG5vZGUpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtCisgICAgICovCisgICAgX2luc3BlY3RlZE9iamVj
dDogZnVuY3Rpb24obnVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9z
dC5pbnNwZWN0ZWRPYmplY3QobnVtKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtBcnJheS48c3RyaW5nPnxzdHJpbmc9fSB0eXBlcworICAgICAqIEByZXR1cm4ge0FycmF5Ljxz
dHJpbmc+fQorICAgICAqLworICAgIF9ub3JtYWxpemVFdmVudFR5cGVzOiBmdW5jdGlvbih0eXBl
cykKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YgdHlwZXMgPT09ICJ1bmRlZmluZWQiKQorICAg
ICAgICAgICAgdHlwZXMgPSBbICJtb3VzZSIsICJrZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJs
b2FkIiwgInVubG9hZCIsICJhYm9ydCIsICJlcnJvciIsICJzZWxlY3QiLCAiY2hhbmdlIiwgInN1
Ym1pdCIsICJyZXNldCIsICJmb2N1cyIsICJibHVyIiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2Vh
cmNoIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIgXTsKKyAgICAgICAgZWxz
ZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5nIikKKyAgICAgICAgICAgIHR5cGVzID0gWyB0
eXBlcyBdOworCisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKHR5cGVzW2ldID09
PSAibW91c2UiKQorICAgICAgICAgICAgICAgIHJlc3VsdC5zcGxpY2UoMCwgMCwgIm1vdXNlZG93
biIsICJtb3VzZXVwIiwgImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlbW92ZSIsICJtb3VzZW92
ZXIiLCAibW91c2VvdXQiLCAibW91c2V3aGVlbCIpOworICAgICAgICAgICAgZWxzZSBpZiAodHlw
ZXNbaV0gPT09ICJrZXkiKQorICAgICAgICAgICAgICAgIHJlc3VsdC5zcGxpY2UoMCwgMCwgImtl
eWRvd24iLCAia2V5dXAiLCAia2V5cHJlc3MiLCAidGV4dElucHV0Iik7CisgICAgICAgICAgICBl
bHNlIGlmICh0eXBlc1tpXSA9PT0gInRvdWNoIikKKyAgICAgICAgICAgICAgICByZXN1bHQuc3Bs
aWNlKDAsIDAsICJ0b3VjaHN0YXJ0IiwgInRvdWNobW92ZSIsICJ0b3VjaGVuZCIsICJ0b3VjaGNh
bmNlbCIpOworICAgICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJjb250cm9sIikKKyAg
ICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAsICJyZXNpemUiLCAic2Nyb2xsIiwgInpv
b20iLCAiZm9jdXMiLCAiYmx1ciIsICJzZWxlY3QiLCAiY2hhbmdlIiwgInN1Ym1pdCIsICJyZXNl
dCIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVz
W2ldKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAorICAgICAqLworICAgIF9sb2dFdmVudDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5s
b2coZXZlbnQudHlwZSwgZXZlbnQpOworICAgIH0KK30KKworaW5qZWN0ZWRTY3JpcHQuQ29tbWFu
ZExpbmVBUEkgPSBDb21tYW5kTGluZUFQSTsKK2luamVjdGVkU2NyaXB0Ll9jb21tYW5kTGluZUFQ
SUltcGwgPSBuZXcgQ29tbWFuZExpbmVBUElJbXBsKCk7CisKKy8vIFRoaXMgTW9kdWxlIGRvZXNu
J3QgZXhwb3NlIGFuIG9iamVjdCwgaXQganVzdCBhZGRzIGFuIGV4dGVuc2lvbiB0aGF0IEluamVj
dGVkU2NyaXB0IHVzZXMuCisvLyBIb3dldmVyLCB3ZSByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LCBz
byB0aGF0IEluamVjdGVkU2NyaXB0IGtub3dzIHRoaXMgbW9kdWxlIGhhcyBiZWVuIGxvYWRlZC4K
K3JldHVybiB7fTsKKworfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmgKaW5kZXggYWNlY2U2ZS4uNTAxZDJlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlKCk7CiAgICAgCiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIHJldHVybnNPYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICBzdGF0aWMgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgbW9kdWxlRm9yU3RhdGUoSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpFeGVjU3RhdGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCAxMjc2YzQ1Li5j
Yjg2NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcApAQCAtMjksMTQgKzI5LDE1IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
TWFuYWdlci5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKwogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCIKKyNpbmNsdWRlICJQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRP
YmplY3QuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTQ3LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpjcmVhdGVGb3JQYWdlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluamVjdGVk
U2NyaXB0TWFuYWdlcigmSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3cpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFn
ZXIoJkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KSk7CiB9
CiAKIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmNyZWF0ZUZvcldvcmtlcigpCkBAIC0xNzgsOSArMTc5LDE1IEBAIEluamVjdGVkU2NyaXB0
IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNDOjpFeGVjU3RhdGUq
IGluc3BlY3RlCiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2Jq
ZWN0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgaW5zcGVj
dGVkRXhlY1N0YXRlLCBpZCk7CiAgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVjdGVkU2Ny
aXB0T2JqZWN0LCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogICAgIG1faWRUb0luamVj
dGVkU2NyaXB0LnNldChpZCwgcmVzdWx0KTsKKyAgICBkaWRDcmVhdGVJbmplY3RlZFNjcmlwdChy
ZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpkaWRDcmVhdGVJbmplY3RlZFNjcmlwdChJbmplY3RlZFNjcmlwdCkKK3sKKyAgICAvLyBJ
bnRlbnRpb25hbGx5IGVtcHR5LiBUaGlzIGFsbG93cyBmb3Igc3ViY2xhc3NlcyB0byBpbmplY3Qg
YWRkaXRpb25hbCBzY3JpcHRzLgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDdiNDhkMzYuLmQ2MWZkMjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTMwLDcg
KzMwLDYgQEAKICNpZm5kZWYgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyX2gKICNkZWZpbmUgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyX2gKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtMzksNiArMzgsMTAgQEAgbmFtZXNwYWNlIERlcHJlY2F0ZWQg
ewogY2xhc3MgU2NyaXB0T2JqZWN0OwogfQogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNT
dGF0ZTsKK30KKwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7
CiB9CkBAIC01NCw3ICs1Nyw3IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBjcmVhdGVG
b3JQYWdlKCk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBj
cmVhdGVGb3JXb3JrZXIoKTsKLSAgICB+SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCk7CisgICAgdmly
dHVhbCB+SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCk7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsK
IApAQCAtNzEsOSArNzQsMTEgQEAgcHVibGljOgogICAgIHR5cGVkZWYgYm9vbCAoKkluc3BlY3Rl
ZFN0YXRlQWNjZXNzQ2hlY2spKEpTQzo6RXhlY1N0YXRlKik7CiAgICAgSW5zcGVjdGVkU3RhdGVB
Y2Nlc3NDaGVjayBpbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKCkgY29uc3QgeyByZXR1cm4gbV9p
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrOyB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAg
ZXhwbGljaXQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVJbmplY3RlZFNjcmlwdChJbmplY3RlZFNjcmlw
dCk7CiAKK3ByaXZhdGU6CiAgICAgU3RyaW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7CiAgICAg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIGludCBpZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCmluZGV4IDkyNjhlZGYuLjA3
OTdiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TW9kdWxlLmNwcApAQCAtNTIsNiArNTIsMTEgQEAgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OkluamVj
dGVkU2NyaXB0TW9kdWxlKGNvbnN0IFN0cmluZyYgbmFtZSkKIHZvaWQgSW5qZWN0ZWRTY3JpcHRN
b2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLCBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCiB7CiAgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2Ny
aXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICBlbnN1cmVJbmplY3RlZChpbmplY3RlZFNjcmlwdE1h
bmFnZXIsIGluamVjdGVkU2NyaXB0KTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6
ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0KQorewogICAgIEFTU0VSVCghaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1
ZSgpKQogICAgICAgICByZXR1cm47CkBAIC02NywxNCArNzIsMTYgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE0KICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsKICAgICAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkpOwogICAgICAgICByZXN1bHRWYWx1
ZSA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwg
aGFkRXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGhhZEV4Y2VwdGlvbiB8fCByZXN1bHRWYWx1ZS5o
YXNOb1ZhbHVlKCkgfHwgIXJlc3VsdFZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGhh
ZEV4Y2VwdGlvbiB8fCAocmV0dXJuc09iamVjdCgpICYmIChyZXN1bHRWYWx1ZS5oYXNOb1ZhbHVl
KCkgfHwgIXJlc3VsdFZhbHVlLmlzT2JqZWN0KCkpKSkgewogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgbW9kdWxlT2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1
bHRWYWx1ZSk7Ci0gICAgaW5pdGlhbGl6ZShtb2R1bGVPYmplY3QsIGluamVjdGVkU2NyaXB0TWFu
YWdlci0+aW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaygpKTsKKyAgICBpZiAocmV0dXJuc09iamVj
dCgpKSB7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBtb2R1bGVPYmplY3QoaW5q
ZWN0ZWRTY3JpcHQuc2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFsdWUpOworICAgICAgICBpbml0aWFs
aXplKG1vZHVsZU9iamVjdCwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrKCkpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAppbmRleCA5M2Zi
MTdiLi5mZWJhMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUuaApAQCAtMzEsMTkgKzMxLDIxIEBACiAjaWZuZGVmIEluamVjdGVkU2NyaXB0
TW9kdWxlX2gKICNkZWZpbmUgSW5qZWN0ZWRTY3JpcHRNb2R1bGVfaAogCisjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEJhc2UuaCIKICNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYg
RU5BQkxFKElOU1BFQ1RPUikKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCiBjbGFzcyBJbmplY3Rl
ZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmV0
dXJuc09iamVjdCgpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIC8vIERvIG5vdCBleHBv
c2UgY29uc3RydWN0b3IgaW4gdGhlIGNoaWxkIGNsYXNzZXMgYXMgd2VsbC4gSW5zdGVhZCBwcm92
aWRlCkBAIC01MSwxMCArNTMsMTEgQEAgcHJvdGVjdGVkOgogICAgIC8vIGFuZCBjYWxsIGl0cyBl
bnN1cmVJbmplY3RlZCgpIG1ldGhvZCBpbW1lZGlhdGVseS4KICAgICBJbmplY3RlZFNjcmlwdE1v
ZHVsZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZvaWQgZW5zdXJlSW5qZWN0ZWQoSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpFeGVjU3RhdGUqKTsKKyAgICB2b2lkIGVuc3VyZUluamVj
dGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluamVjdGVkU2NyaXB0KTsKIH07CiAKLSNlbmRp
ZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qcwppbmRleCAxODdhZDE0Li4yMDY0NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC0zMCw1MSArMzAsMTUgQEAK
IAogLyoqCiAgKiBAcGFyYW0ge0luamVjdGVkU2NyaXB0SG9zdH0gSW5qZWN0ZWRTY3JpcHRIb3N0
Ci0gKiBAcGFyYW0ge1dpbmRvd30gaW5zcGVjdGVkV2luZG93CisgKiBAcGFyYW0ge0dsb2JhbE9i
amVjdH0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0CiAgKiBAcGFyYW0ge251bWJlcn0gaW5qZWN0ZWRT
Y3JpcHRJZAogICovCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkV2lu
ZG93LCBpbmplY3RlZFNjcmlwdElkKSB7CisoZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwg
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7CiAKIC8vIFByb3RlY3Qg
YWdhaW5zdCBPYmplY3Qgb3ZlcndyaXR0ZW4gYnkgdGhlIHVzZXIgY29kZS4KIHZhciBPYmplY3Qg
PSB7fS5jb25zdHJ1Y3RvcjsKIAogLyoqCi0gKiBAcGFyYW0ge0FyZ3VtZW50c30gYXJyYXkKLSAq
IEBwYXJhbSB7bnVtYmVyPX0gaW5kZXgKLSAqIEByZXR1cm4ge0FycmF5LjwqPn0KLSAqLwotZnVu
Y3Rpb24gc2xpY2UoYXJyYXksIGluZGV4KQotewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICBm
b3IgKHZhciBpID0gaW5kZXggfHwgMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQotICAgICAgICBy
ZXN1bHQucHVzaChhcnJheVtpXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoqCi0gKiBQ
bGVhc2UgdXNlIHRoaXMgYmluZCwgbm90IHRoZSBvbmUgZnJvbSBGdW5jdGlvbi5wcm90b3R5cGUK
LSAqIEBwYXJhbSB7ZnVuY3Rpb24oLi4uKX0gZnVuYwotICogQHBhcmFtIHtPYmplY3R9IHRoaXNP
YmplY3QKLSAqIEBwYXJhbSB7Li4ubnVtYmVyfSB2YXJfYXJncwotICovCi1mdW5jdGlvbiBiaW5k
KGZ1bmMsIHRoaXNPYmplY3QsIHZhcl9hcmdzKQotewotICAgIHZhciBhcmdzID0gc2xpY2UoYXJn
dW1lbnRzLCAyKTsKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7Li4ubnVtYmVyfSB2YXJfYXJn
cwotICAgICAqLwotICAgIGZ1bmN0aW9uIGJvdW5kKHZhcl9hcmdzKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGZ1bmMuYXBwbHkodGhpc09iamVjdCwgYXJncy5jb25jYXQoc2xpY2UoYXJndW1lbnRz
KSkpOwotICAgIH0KLSAgICBib3VuZC50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBy
ZXR1cm4gImJvdW5kOiAiICsgZnVuYzsKLSAgICB9OwotICAgIHJldHVybiBib3VuZDsKLX0KLQot
LyoqCiAgKiBAY29uc3RydWN0b3IKICAqLwogdmFyIEluamVjdGVkU2NyaXB0ID0gZnVuY3Rpb24o
KQpAQCAtMTExLDEzICs3NSwxMyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAg
LyoqCiAgICAgICogQHBhcmFtIHsqfSBvYmplY3QKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZ3Jv
dXBOYW1lCi0gICAgICogQHBhcmFtIHtib29sZWFufSBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cK
KyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhbkFjY2Vzc0luc3BlY3RlZEdsb2JhbE9iamVjdAog
ICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZ2VuZXJhdGVQcmV2aWV3CiAgICAgICogQHJldHVybiB7
IVJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3R9CiAgICAgICovCi0gICAgd3JhcE9iamVjdDogZnVu
Y3Rpb24ob2JqZWN0LCBncm91cE5hbWUsIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdywgZ2VuZXJh
dGVQcmV2aWV3KQorICAgIHdyYXBPYmplY3Q6IGZ1bmN0aW9uKG9iamVjdCwgZ3JvdXBOYW1lLCBj
YW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGdlbmVyYXRlUHJldmlldykKICAgICB7Ci0g
ICAgICAgIGlmIChjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cpCisgICAgICAgIGlmIChjYW5BY2Nl
c3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd3JhcE9i
amVjdChvYmplY3QsIGdyb3VwTmFtZSwgZmFsc2UsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAg
IHJldHVybiB0aGlzLl9mYWxsYmFja1dyYXBwZXIob2JqZWN0KTsKICAgICB9LApAQCAtMTM4LDE0
ICsxMDIsMTQgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAv
KioKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdworICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FuQWNjZXNzSW5zcGVjdGVkR2xvYmFsT2JqZWN0CiAgICAg
ICogQHBhcmFtIHtPYmplY3R9IHRhYmxlCiAgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPnxz
dHJpbmd8Ym9vbGVhbn0gY29sdW1ucwogICAgICAqIEByZXR1cm4geyFSdW50aW1lQWdlbnQuUmVt
b3RlT2JqZWN0fQogICAgICAqLwotICAgIHdyYXBUYWJsZTogZnVuY3Rpb24oY2FuQWNjZXNzSW5z
cGVjdGVkV2luZG93LCB0YWJsZSwgY29sdW1ucykKKyAgICB3cmFwVGFibGU6IGZ1bmN0aW9uKGNh
bkFjY2Vzc0luc3BlY3RlZEdsb2JhbE9iamVjdCwgdGFibGUsIGNvbHVtbnMpCiAgICAgewotICAg
ICAgICBpZiAoIWNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdykKKyAgICAgICAgaWYgKCFjYW5BY2Nl
c3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZmFsbGJh
Y2tXcmFwcGVyKHRhYmxlKTsKICAgICAgICAgdmFyIGNvbHVtbk5hbWVzID0gbnVsbDsKICAgICAg
ICAgaWYgKHR5cGVvZiBjb2x1bW5zID09PSAic3RyaW5nIikKQEAgLTI3Miw3ICsyMzYsOSBAQCBJ
bmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBhcmdzQXJyYXkgPSBJbmpl
Y3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgYXJncyArICIpIik7CiAgICAgICAgIHZhciBy
ZXN1bHQgPSB0aGlzW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMsIGFyZ3NBcnJheSk7CiAgICAgICAg
IGlmICh0eXBlb2YgcmVzdWx0ID09PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAgaW5zcGVj
dGVkV2luZG93LmNvbnNvbGUuZXJyb3IoIldlYiBJbnNwZWN0b3IgZXJyb3I6IEluamVjdGVkU2Ny
aXB0LiVzIHJldHVybnMgdW5kZWZpbmVkIiwgbWV0aG9kTmFtZSk7CisgICAgICAgICAgICAvLyBG
SVhNRTogSlMgQ29udGV4dCBpbnNwZWN0aW9uIGN1cnJlbnRseSBkb2VzIG5vdCBoYXZlIGEgZ2xv
YmFsLmNvbnNvbGUgb2JqZWN0LgorICAgICAgICAgICAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlKQorICAgICAgICAgICAgICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LmVycm9yKCJXZWIgSW5zcGVjdG9yIGVycm9yOiBJbmplY3RlZFNjcmlwdC4lcyByZXR1cm5zIHVu
ZGVmaW5lZCIsIG1ldGhvZE5hbWUpOwogICAgICAgICAgICAgcmVzdWx0ID0gbnVsbDsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTU0LDcgKzUyMCwxMyBAQCBJbmplY3Rl
ZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2V2YWx1YXRlT246IGZ1bmN0aW9u
KGV2YWxGdW5jdGlvbiwgb2JqZWN0LCBvYmplY3RHcm91cCwgZXhwcmVzc2lvbiwgaXNFdmFsT25D
YWxsRnJhbWUsIGluamVjdENvbW1hbmRMaW5lQVBJKQogICAgIHsKLSAgICAgICAgdmFyIGNvbW1h
bmRMaW5lQVBJID0gaW5qZWN0Q29tbWFuZExpbmVBUEkgPyBuZXcgQ29tbWFuZExpbmVBUEkodGhp
cy5fY29tbWFuZExpbmVBUElJbXBsLCBpc0V2YWxPbkNhbGxGcmFtZSA/IG9iamVjdCA6IG51bGwp
IDogbnVsbDsKKyAgICAgICAgdmFyIGNvbW1hbmRMaW5lQVBJID0gbnVsbDsKKyAgICAgICAgaWYg
KGluamVjdENvbW1hbmRMaW5lQVBJKSB7CisgICAgICAgICAgICBpZiAodGhpcy5Db21tYW5kTGlu
ZUFQSSkKKyAgICAgICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IG5ldyB0aGlzLkNvbW1hbmRM
aW5lQVBJKHRoaXMuX2NvbW1hbmRMaW5lQVBJSW1wbCwgaXNFdmFsT25DYWxsRnJhbWUgPyBvYmpl
Y3QgOiBudWxsKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21tYW5kTGlu
ZUFQSSA9IG5ldyBCYXNpY0NvbW1hbmRMaW5lQVBJOworICAgICAgICB9CiAKICAgICAgICAgaWYg
KGlzRXZhbE9uQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICAvLyBXZSBjYW4gb25seSB1c2UgdGhp
cyBhcHByb2FjaCBpZiB0aGUgZXZhbHVhdGUgZnVuY3Rpb24gaXMgdGhlIHRydWUgJ2V2YWwnLiBU
aGF0IGFsbG93cyB1cyB0byB1c2UgaXQgd2l0aApAQCAtNTYyLDcgKzUzNCwxMSBAQCBJbmplY3Rl
ZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAvLyBjcmVhdGUgdGhhdCBwcm92aWRl
cyB0aGUgY29tbWFuZCBsaW5lIEFQSXMuCiAKICAgICAgICAgICAgIHZhciBwYXJhbWV0ZXJzID0g
W0luamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSwgZXhwcmVzc2lvbl07Ci0gICAgICAgICAgICB2
YXIgZXhwcmVzc2lvbkZ1bmN0aW9uQm9keSA9ICJ2YXIgX19vcmlnaW5hbEV2YWwgPSB3aW5kb3cu
ZXZhbDsgd2luZG93LmV2YWwgPSBfX2V2YWw7IHRyeSB7IHJldHVybiBldmFsKF9fY3VycmVudEV4
cHJlc3Npb24pOyB9IGZpbmFsbHkgeyB3aW5kb3cuZXZhbCA9IF9fb3JpZ2luYWxFdmFsOyB9IjsK
KyAgICAgICAgICAgIHZhciBleHByZXNzaW9uRnVuY3Rpb25Cb2R5ID0gIiIgKworICAgICAgICAg
ICAgICAgICJ2YXIgZ2xvYmFsID0gRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKSB8fCAoMSwgZXZh
bCkoJ3RoaXMnKTsiICsKKyAgICAgICAgICAgICAgICAidmFyIF9fb3JpZ2luYWxFdmFsID0gZ2xv
YmFsLmV2YWw7IGdsb2JhbC5ldmFsID0gX19ldmFsOyIgKworICAgICAgICAgICAgICAgICJ0cnkg
eyByZXR1cm4gZXZhbChfX2N1cnJlbnRFeHByZXNzaW9uKTsgfSIgKworICAgICAgICAgICAgICAg
ICJmaW5hbGx5IHsgZ2xvYmFsLmV2YWwgPSBfX29yaWdpbmFsRXZhbDsgfSI7CiAKICAgICAgICAg
ICAgIGlmIChjb21tYW5kTGluZUFQSSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIHVz
aW5nIGEgJ3dpdGgnIHN0YXRlbWVudCAod2hpY2ggZmFpbHMgaW4gc3RyaWN0IG1vZGUgYW5kIHJl
cXVpcmVzIGluamVjdGluZyB0aGUgQVBJIG9iamVjdCkKQEAgLTU5NiwyMSArNTcyLDI5IEBAIElu
amVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gV2hlbiBub3QgZXZhbHVhdGlu
ZyBvbiBhIGNhbGwgZnJhbWUgd2UgdXNlIGEgJ3dpdGgnIHN0YXRlbWVudCB0byBhbGxvdyB2YXIg
YW5kIGZ1bmN0aW9uIHN0YXRlbWVudHMgdG8gbGVhawogICAgICAgICAvLyBpbnRvIHRoZSBnbG9i
YWwgc2NvcGUuIFRoaXMgYWxsb3cgdGhlbSB0byBzdGljayBhcm91bmQgYmV0d2VlbiBldmFsdWF0
aW9ucy4KIAorICAgICAgICAvLyBGSVhNRTogSlMgQ29udGV4dCBpbnNwZWN0aW9uIGN1cnJlbnRs
eSBkb2VzIG5vdCBoYXZlIGEgZ2xvYmFsLmNvbnNvbGUgb2JqZWN0LgogICAgICAgICB0cnkgewot
ICAgICAgICAgICAgaWYgKGNvbW1hbmRMaW5lQVBJICYmIGluc3BlY3RlZFdpbmRvdy5jb25zb2xl
KSB7Ci0gICAgICAgICAgICAgICAgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuX19jb21tYW5kTGlu
ZUFQSSA9IGNvbW1hbmRMaW5lQVBJOwotICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSAid2l0
aCAoKHdpbmRvdyAmJiB3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS5fX2NvbW1hbmRM
aW5lQVBJKSB8fCB7fSkgeyAiICsgZXhwcmVzc2lvbiArICJcbn0iOworICAgICAgICAgICAgaWYg
KGNvbW1hbmRMaW5lQVBJKSB7CisgICAgICAgICAgICAgICAgaWYgKGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlKQorICAgICAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5fX2NvbW1hbmRMaW5lQVBJID0gY29tbWFuZExpbmVBUEk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuX19jb21t
YW5kTGluZUFQSSA9IGNvbW1hbmRMaW5lQVBJOworICAgICAgICAgICAgICAgIGV4cHJlc3Npb24g
PSAid2l0aCAoKHRoaXMgJiYgKHRoaXMuY29uc29sZSA/IHRoaXMuY29uc29sZS5fX2NvbW1hbmRM
aW5lQVBJIDogdGhpcy5fX2NvbW1hbmRMaW5lQVBJKSkgfHwge30pIHsgIiArIGV4cHJlc3Npb24g
KyAiXG59IjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGV2YWxG
dW5jdGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lvbik7CisgICAgICAgICAgICB2YXIgcmVzdWx0
ID0gZXZhbEZ1bmN0aW9uLmNhbGwoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBleHByZXNzaW9uKTsK
IAogICAgICAgICAgICAgaWYgKG9iamVjdEdyb3VwID09PSAiY29uc29sZSIpCiAgICAgICAgICAg
ICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHJlc3VsdDsKIAogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGlmIChjb21tYW5kTGluZUFQ
SSAmJiBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZSkKLSAgICAgICAgICAgICAgICBkZWxldGUgaW5z
cGVjdGVkV2luZG93LmNvbnNvbGUuX19jb21tYW5kTGluZUFQSTsKKyAgICAgICAgICAgIGlmIChj
b21tYW5kTGluZUFQSSkgeworICAgICAgICAgICAgICAgIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZSkKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLl9fY29tbWFuZExpbmVBUEk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBkZWxldGUgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Ll9fY29tbWFuZExp
bmVBUEk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCkBAIC03MTUsMTAgKzY5
OSwxMiBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9tb2R1bGVzW25hbWVdOwogICAgICAgICB2YXIgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNj
cmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc291cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5cGVv
ZiBtb2R1bGVGdW5jdGlvbiAhPT0gImZ1bmN0aW9uIikgewotICAgICAgICAgICAgaW5zcGVjdGVk
V2luZG93LmNvbnNvbGUuZXJyb3IoIldlYiBJbnNwZWN0b3IgZXJyb3I6IEEgZnVuY3Rpb24gd2Fz
IGV4cGVjdGVkIGZvciBtb2R1bGUgJXMgZXZhbHVhdGlvbiIsIG5hbWUpOworICAgICAgICAgICAg
Ly8gRklYTUU6IEpTIENvbnRleHQgaW5zcGVjdGlvbiBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZSBh
IGdsb2JhbC5jb25zb2xlIG9iamVjdC4KKyAgICAgICAgICAgIGlmIChpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZSkKKyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS5lcnJvcigiV2ViIEluc3BlY3RvciBlcnJvcjogQSBmdW5jdGlvbiB3YXMgZXhwZWN0ZWQg
Zm9yIG1vZHVsZSAlcyBldmFsdWF0aW9uIiwgbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKICAgICAgICAgfQotICAgICAgICB2YXIgbW9kdWxlID0gbW9kdWxlRnVuY3Rpb24uY2FsbChp
bnNwZWN0ZWRXaW5kb3csIEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkV2luZG93LCBpbmpl
Y3RlZFNjcmlwdElkKTsKKyAgICAgICAgdmFyIG1vZHVsZSA9IG1vZHVsZUZ1bmN0aW9uLmNhbGwo
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2Jh
bE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX21vZHVsZXNb
bmFtZV0gPSBtb2R1bGU7CiAgICAgICAgIHJldHVybiBtb2R1bGU7CiAgICAgfSwKQEAgLTgzNiw3
ICs4MjIsNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3Rv
U3RyaW5nOiBmdW5jdGlvbihvYmopCiAgICAgewotICAgICAgICAvLyBXZSBkb24ndCB1c2UgU3Ry
aW5nKG9iaikgYmVjYXVzZSBpbnNwZWN0ZWRXaW5kb3cuU3RyaW5nIGlzIHVuZGVmaW5lZCBpZiBv
d25pbmcgZnJhbWUgbmF2aWdhdGVkIHRvIGFub3RoZXIgcGFnZS4KKyAgICAgICAgLy8gV2UgZG9u
J3QgdXNlIFN0cmluZyhvYmopIGJlY2F1c2UgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlN0cmluZyBp
cyB1bmRlZmluZWQgaWYgb3duaW5nIGZyYW1lIG5hdmlnYXRlZCB0byBhbm90aGVyIHBhZ2UuCiAg
ICAgICAgIHJldHVybiAiIiArIG9iajsKICAgICB9CiB9CkBAIC0xMDc3LDI3NyArMTA2MywxMCBA
QCBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fY3JlYXRlU2NvcGVKc29uID0gZnVuY3Rp
b24oc2NvcGVUeXBlQ29kZSwgc2NvcGVPYgogICAgIH07CiB9CiAKLS8qKgotICogQGNvbnN0cnVj
dG9yCi0gKiBAcGFyYW0ge0NvbW1hbmRMaW5lQVBJSW1wbH0gY29tbWFuZExpbmVBUElJbXBsCi0g
KiBAcGFyYW0ge09iamVjdH0gY2FsbEZyYW1lCi0gKi8KLWZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJ
KGNvbW1hbmRMaW5lQVBJSW1wbCwgY2FsbEZyYW1lKQorZnVuY3Rpb24gQmFzaWNDb21tYW5kTGlu
ZUFQSSgpCiB7Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lbWJlcgotICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgZnVuY3Rpb24gaW5TY29wZVZhcmlhYmxl
cyhtZW1iZXIpCi0gICAgewotICAgICAgICBpZiAoIWNhbGxGcmFtZSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICB2YXIgc2NvcGVDaGFpbiA9IGNhbGxGcmFtZS5zY29wZUNo
YWluOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjb3BlQ2hhaW4ubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIGlmIChtZW1iZXIgaW4gc2NvcGVDaGFpbltpXSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhl
IG1ldGhvZCBmb3Igd2hpY2ggYSB0b1N0cmluZyBtZXRob2Qgc2hvdWxkIGJlIGdlbmVyYXRlZC4K
LSAgICAgKiBAcmV0dXJuIHtmdW5jdGlvbigpOnN0cmluZ30KLSAgICAgKi8KLSAgICBmdW5jdGlv
biBjdXN0b21Ub1N0cmluZ01ldGhvZChuYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uICgpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUg
QVBJXSB9IjsgfTsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IENvbW1hbmRMaW5l
QVBJLm1lbWJlcnNfLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBtZW1iZXIgPSBDb21tYW5k
TGluZUFQSS5tZW1iZXJzX1tpXTsKLSAgICAgICAgaWYgKG1lbWJlciBpbiBpbnNwZWN0ZWRXaW5k
b3cgfHwgaW5TY29wZVZhcmlhYmxlcyhtZW1iZXIpKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgdGhpc1ttZW1iZXJdID0gYmluZChjb21tYW5kTGluZUFQSUltcGxbbWVtYmVyXSwg
Y29tbWFuZExpbmVBUElJbXBsKTsKLSAgICAgICAgdGhpc1ttZW1iZXJdLnRvU3RyaW5nID0gY3Vz
dG9tVG9TdHJpbmdNZXRob2QobWVtYmVyKTsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDU7ICsraSkgewotICAgICAgICB2YXIgbWVtYmVyID0gIiQiICsgaTsKLSAgICAgICAgaWYg
KG1lbWJlciBpbiBpbnNwZWN0ZWRXaW5kb3cgfHwgaW5TY29wZVZhcmlhYmxlcyhtZW1iZXIpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKCIk
IiArIGksIGJpbmQoY29tbWFuZExpbmVBUElJbXBsLl9pbnNwZWN0ZWRPYmplY3QsIGNvbW1hbmRM
aW5lQVBJSW1wbCwgaSkpOwotICAgIH0KLQogICAgIHRoaXMuJF8gPSBpbmplY3RlZFNjcmlwdC5f
bGFzdFJlc3VsdDsKIH0KIAotLy8gTk9URTogUGxlYXNlIGtlZXAgdGhlIGxpc3Qgb2YgQVBJIG1l
dGhvZHMgYmVsb3cgc25jaHJvbml6ZWQgdG8gdGhhdCBpbiBXZWJJbnNwZWN0b3IuUnVudGltZU1v
ZGVsIQotLyoqCi0gKiBAdHlwZSB7QXJyYXkuPHN0cmluZz59Ci0gKiBAY29uc3QKLSAqLwotQ29t
bWFuZExpbmVBUEkubWVtYmVyc18gPSBbCi0gICAgIiQiLCAiJCQiLCAiJHgiLCAiZGlyIiwgImRp
cnhtbCIsICJrZXlzIiwgInZhbHVlcyIsICJwcm9maWxlIiwgInByb2ZpbGVFbmQiLAotICAgICJt
b25pdG9yRXZlbnRzIiwgInVubW9uaXRvckV2ZW50cyIsICJpbnNwZWN0IiwgImNvcHkiLCAiY2xl
YXIiLCAiZ2V0RXZlbnRMaXN0ZW5lcnMiCi1dOwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICov
Ci1mdW5jdGlvbiBDb21tYW5kTGluZUFQSUltcGwoKQotewotfQotCi1Db21tYW5kTGluZUFQSUlt
cGwucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3Rv
cgotICAgICAqIEBwYXJhbSB7Tm9kZT19IHN0YXJ0Ci0gICAgICovCi0gICAgJDogZnVuY3Rpb24g
KHNlbGVjdG9yLCBzdGFydCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9jYW5RdWVyeVNlbGVj
dG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBzdGFydC5xdWVyeVNlbGVjdG9y
KHNlbGVjdG9yKTsKLQotICAgICAgICB2YXIgcmVzdWx0ID0gaW5zcGVjdGVkV2luZG93LmRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgaWYgKHNlbGVjdG9yICYmIHNlbGVjdG9yWzBd
ICE9PSAiIyIpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGluc3BlY3RlZFdpbmRvdy5kb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChzZWxlY3Rvcik7Ci0gICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0g
ICAgICAgICAgICAgICAgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUud2FybigiVGhlIGNvbnNvbGUg
ZnVuY3Rpb24gJCgpIGhhcyBjaGFuZ2VkIGZyb20gJD1nZXRFbGVtZW50QnlJZChpZCkgdG8gJD1x
dWVyeVNlbGVjdG9yKHNlbGVjdG9yKS4gWW91IG1pZ2h0IHRyeSAkKFwiIyVzXCIpIiwgc2VsZWN0
b3IgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBA
cGFyYW0ge3N0cmluZ30gc2VsZWN0b3IKLSAgICAgKiBAcGFyYW0ge05vZGU9fSBzdGFydAotICAg
ICAqLwotICAgICQkOiBmdW5jdGlvbiAoc2VsZWN0b3IsIHN0YXJ0KQotICAgIHsKLSAgICAgICAg
aWYgKHRoaXMuX2NhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQotICAgICAgICAgICAgcmV0
dXJuIHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwotICAgICAgICByZXR1cm4gaW5z
cGVjdGVkV2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwotICAgIH0s
Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge05vZGU9fSBub2RlCi0gICAgICogQHJldHVybiB7
Ym9vbGVhbn0KLSAgICAgKi8KLSAgICBfY2FuUXVlcnlTZWxlY3Rvck9uTm9kZTogZnVuY3Rpb24o
bm9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhIW5vZGUgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0
LnR5cGUobm9kZSkgPT09ICJub2RlIiAmJiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5U
X05PREUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9OT0RFIHx8IG5vZGUubm9k
ZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSk7Ci0gICAgfSwKLQotICAgIC8q
KgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB4cGF0aAotICAgICAqIEBwYXJhbSB7Tm9kZT19IGNv
bnRleHQKLSAgICAgKi8KLSAgICAkeDogZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpCi0gICAgewot
ICAgICAgICB2YXIgZG9jID0gKGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50KSB8fCBp
bnNwZWN0ZWRXaW5kb3cuZG9jdW1lbnQ7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2MuZXZhbHVh
dGUoeHBhdGgsIGNvbnRleHQgfHwgZG9jLCBudWxsLCBYUGF0aFJlc3VsdC5BTllfVFlQRSwgbnVs
bCk7Ci0gICAgICAgIHN3aXRjaCAocmVzdWx0LnJlc3VsdFR5cGUpIHsKLSAgICAgICAgY2FzZSBY
UGF0aFJlc3VsdC5OVU1CRVJfVFlQRToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQubnVtYmVy
VmFsdWU7Ci0gICAgICAgIGNhc2UgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEU6Ci0gICAgICAgICAg
ICByZXR1cm4gcmVzdWx0LnN0cmluZ1ZhbHVlOwotICAgICAgICBjYXNlIFhQYXRoUmVzdWx0LkJP
T0xFQU5fVFlQRToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQuYm9vbGVhblZhbHVlOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdmFyIG5vZGVzID0gW107Ci0gICAgICAgICAgICB2
YXIgbm9kZTsKLSAgICAgICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkp
Ci0gICAgICAgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsKLSAgICAgICAgICAgIHJldHVybiBu
b2RlczsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBkaXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5kaXIuYXBwbHkoaW5zcGVjdGVk
V2luZG93LmNvbnNvbGUsIGFyZ3VtZW50cykKLSAgICB9LAotCi0gICAgZGlyeG1sOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICByZXR1cm4gaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuZGlyeG1s
LmFwcGx5KGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLCBhcmd1bWVudHMpCi0gICAgfSwKLQotICAg
IGtleXM6IGZ1bmN0aW9uKG9iamVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBPYmplY3Qua2V5
cyhvYmplY3QpOwotICAgIH0sCi0KLSAgICB2YWx1ZXM6IGZ1bmN0aW9uKG9iamVjdCkKLSAgICB7
Ci0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgZm9yICh2YXIga2V5IGluIG9iamVj
dCkKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKG9iamVjdFtrZXldKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9LAotCi0gICAgcHJvZmlsZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLnByb2ZpbGUuYXBwbHkoaW5zcGVjdGVk
V2luZG93LmNvbnNvbGUsIGFyZ3VtZW50cykKLSAgICB9LAotCi0gICAgcHJvZmlsZUVuZDogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLnBy
b2ZpbGVFbmQuYXBwbHkoaW5zcGVjdGVkV2luZG93LmNvbnNvbGUsIGFyZ3VtZW50cykKLSAgICB9
LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdAotICAgICAqIEBwYXJh
bSB7QXJyYXkuPHN0cmluZz58c3RyaW5nPX0gdHlwZXMKLSAgICAgKi8KLSAgICBtb25pdG9yRXZl
bnRzOiBmdW5jdGlvbihvYmplY3QsIHR5cGVzKQotICAgIHsKLSAgICAgICAgaWYgKCFvYmplY3Qg
fHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5l
cikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdHlwZXMgPSB0aGlzLl9ub3JtYWxpemVF
dmVudFR5cGVzKHR5cGVzKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNb
aV0sIHRoaXMuX2xvZ0V2ZW50LCBmYWxzZSk7Ci0gICAgICAgICAgICBvYmplY3QuYWRkRXZlbnRM
aXN0ZW5lcih0eXBlc1tpXSwgdGhpcy5fbG9nRXZlbnQsIGZhbHNlKTsKLSAgICAgICAgfQotICAg
IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0Ci0gICAgICogQHBh
cmFtIHtBcnJheS48c3RyaW5nPnxzdHJpbmc9fSB0eXBlcwotICAgICAqLwotICAgIHVubW9uaXRv
ckV2ZW50czogZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykKLSAgICB7Ci0gICAgICAgIGlmICghb2Jq
ZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlz
dGVuZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHR5cGVzID0gdGhpcy5fbm9ybWFs
aXplRXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBl
c1tpXSwgdGhpcy5fbG9nRXZlbnQsIGZhbHNlKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICog
QHBhcmFtIHsqfSBvYmplY3QKLSAgICAgKiBAcmV0dXJuIHsqfQotICAgICAqLwotICAgIGluc3Bl
Y3Q6IGZ1bmN0aW9uKG9iamVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dC5faW5zcGVjdChvYmplY3QpOwotICAgIH0sCi0KLSAgICBjb3B5OiBmdW5jdGlvbihvYmplY3Qp
Ci0gICAgewotICAgICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuX3N1YnR5cGUob2JqZWN0KSA9PT0g
Im5vZGUiKQotICAgICAgICAgICAgb2JqZWN0ID0gb2JqZWN0Lm91dGVySFRNTDsKLSAgICAgICAg
SW5qZWN0ZWRTY3JpcHRIb3N0LmNvcHlUZXh0KG9iamVjdCk7Ci0gICAgfSwKLQotICAgIGNsZWFy
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBJbmplY3RlZFNjcmlwdEhvc3QuY2xlYXJDb25z
b2xlTWVzc2FnZXMoKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtOb2RlfSBu
b2RlCi0gICAgICovCi0gICAgZ2V0RXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKG5vZGUpCi0gICAg
ewotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LmdldEV2ZW50TGlzdGVuZXJzKG5v
ZGUpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtCi0gICAg
ICovCi0gICAgX2luc3BlY3RlZE9iamVjdDogZnVuY3Rpb24obnVtKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0ZWRPYmplY3QobnVtKTsKLSAgICB9LAot
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPnxzdHJpbmc9fSB0eXBlcwot
ICAgICAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fQotICAgICAqLwotICAgIF9ub3JtYWxpemVF
dmVudFR5cGVzOiBmdW5jdGlvbih0eXBlcykKLSAgICB7Ci0gICAgICAgIGlmICh0eXBlb2YgdHlw
ZXMgPT09ICJ1bmRlZmluZWQiKQotICAgICAgICAgICAgdHlwZXMgPSBbICJtb3VzZSIsICJrZXki
LCAidG91Y2giLCAiY29udHJvbCIsICJsb2FkIiwgInVubG9hZCIsICJhYm9ydCIsICJlcnJvciIs
ICJzZWxlY3QiLCAiY2hhbmdlIiwgInN1Ym1pdCIsICJyZXNldCIsICJmb2N1cyIsICJibHVyIiwg
InJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2Vvcmll
bnRhdGlvbiIgXTsKLSAgICAgICAgZWxzZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5nIikK
LSAgICAgICAgICAgIHR5cGVzID0gWyB0eXBlcyBdOwotCi0gICAgICAgIHZhciByZXN1bHQgPSBb
XTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykgewotICAg
ICAgICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2UiKQotICAgICAgICAgICAgICAgIHJlc3Vs
dC5zcGxpY2UoMCwgMCwgIm1vdXNlZG93biIsICJtb3VzZXVwIiwgImNsaWNrIiwgImRibGNsaWNr
IiwgIm1vdXNlbW92ZSIsICJtb3VzZW92ZXIiLCAibW91c2VvdXQiLCAibW91c2V3aGVlbCIpOwot
ICAgICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJrZXkiKQotICAgICAgICAgICAgICAg
IHJlc3VsdC5zcGxpY2UoMCwgMCwgImtleWRvd24iLCAia2V5dXAiLCAia2V5cHJlc3MiLCAidGV4
dElucHV0Iik7Ci0gICAgICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gInRvdWNoIikKLSAg
ICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAsICJ0b3VjaHN0YXJ0IiwgInRvdWNobW92
ZSIsICJ0b3VjaGVuZCIsICJ0b3VjaGNhbmNlbCIpOwotICAgICAgICAgICAgZWxzZSBpZiAodHlw
ZXNbaV0gPT09ICJjb250cm9sIikKLSAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAs
ICJyZXNpemUiLCAic2Nyb2xsIiwgInpvb20iLCAiZm9jdXMiLCAiYmx1ciIsICJzZWxlY3QiLCAi
Y2hhbmdlIiwgInN1Ym1pdCIsICJyZXNldCIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5wdXNoKHR5cGVzW2ldKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAot
ICAgICAqLwotICAgIF9sb2dFdmVudDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBp
bnNwZWN0ZWRXaW5kb3cuY29uc29sZS5sb2coZXZlbnQudHlwZSwgZXZlbnQpOwotICAgIH0KLX0K
LQotaW5qZWN0ZWRTY3JpcHQuX2NvbW1hbmRMaW5lQVBJSW1wbCA9IG5ldyBDb21tYW5kTGluZUFQ
SUltcGwoKTsKIHJldHVybiBpbmplY3RlZFNjcmlwdDsKIH0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAppbmRleCA1MzAwZDk1Li5mZTBiMzEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKQEAg
LTI1LDYgKzI1LDcgQEAKIAogLy8gVGhpcyBhbGwtaW4tb25lIGNwcCBmaWxlIGN1dHMgZG93biBv
biB0ZW1wbGF0ZSBibG9hdCB0byBhbGxvdyB1cyB0byBidWlsZCBvdXIgV2luZG93cyByZWxlYXNl
IGJ1aWxkLgogCisjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIgogI2luY2x1ZGUg
IkNvbnNvbGVNZXNzYWdlLmNwcCIKICNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbHMuY3BwIgog
I2luY2x1ZGUgIkRPTUVkaXRvci5jcHAiCkBAIC03Myw2ICs3NCw3IEBACiAjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQWdlbnQuY3BwIgog
I2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmNwcCIKKyNpbmNsdWRlICJQYWdlSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcCIKICNpbmNsdWRlICJQYWdlUnVudGltZUFnZW50LmNwcCIKICNpbmNs
dWRlICJTY3JpcHRBcmd1bWVudHMuY3BwIgogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU1NTE3OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBh
Z2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNp
bmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3ZvaWQgUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlkQ3JlYXRlSW5qZWN0ZWRTY3JpcHQo
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQpCit7CisgICAgQ29tbWFuZExpbmVBUElNb2R1
bGU6OmluamVjdElmTmVlZGVkKHRoaXMsIGluamVjdGVkU2NyaXB0KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZmJlODcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5oCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXJfaAorI2RlZmluZSBQYWdlSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyX2gKKworI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFn
ZXIgRklOQUwgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hl
Y2sgYWNjZXNzQ2hlY2spIDogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGFjY2Vzc0NoZWNrKSB7IH0K
KyAgICB2aXJ0dWFsIH5QYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgeyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlSW5qZWN0ZWRTY3JpcHQoSW5qZWN0ZWRTY3Jp
cHQpIE9WRVJSSURFOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
IWRlZmluZWQoUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IGExYjY3NzguLmRkMDU5ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTEy
OSwxMiArMTI5LDEzIEBAIEluamVjdGVkU2NyaXB0IFBhZ2VSdW50aW1lQWdlbnQ6OmluamVjdGVk
U2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsCiAgICAgICAgIEpTQzo6RXhl
Y1N0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQYWdl
LT5tYWluRnJhbWUoKSk7CiAgICAgICAgIEluamVjdGVkU2NyaXB0IHJlc3VsdCA9IGluamVjdGVk
U2NyaXB0TWFuYWdlcigpLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAgICAgICAg
IGlmIChyZXN1bHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIklu
dGVybmFsIGVycm9yOiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZC4iOwor
ICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBlcnJvcjog
bWFpbiB3b3JsZCBleGVjdXRpb24gY29udGV4dCBub3QgZm91bmQuIik7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQorCiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBp
bmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3JJZCgqZXhlY3V0aW9uQ29u
dGV4dElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAiRXhlY3V0aW9uIGNvbnRleHQgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQu
IjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJFeGVjdXRpb24gY29udGV4
dCB3aXRoIGdpdmVuIGlkIG5vdCBmb3VuZC4iKTsKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7
CiB9CiAK
</data>
<flag name="commit-queue"
          id="243441"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219775</attachid>
            <date>2013-12-20 11:32:24 -0800</date>
            <delta_ts>2013-12-20 11:32:24 -0800</delta_ts>
            <desc>[PATCH] For Bots 2</desc>
            <filename>forbots2.patch</filename>
            <type>text/plain</type>
            <size>72912</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDZmNmJkOC4uZDQyODlmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE1NjgsNiArMTU2OCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCiAKKyAgICBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUu
Y3BwCiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAogICAgIGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbHMuY3BwCiAgICAgaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTE2MTYs
NiArMTYxNyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCiAgICAgaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCiAgICAg
aW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorICAgIGluc3BlY3Rvci9QYWdlSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcAogICAgIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAog
ICAgIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCiAgICAgaW5zcGVjdG9yL1NjcmlwdENh
bGxGcmFtZS5jcHAKQEAgLTMwODQsNiArMzA4NiwxNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
L0luamVjdGVkU2NyaXB0U291cmNlLmgpCiAKIAorIyBHZW5lcmF0ZSBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5oCithZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgT1VUUFVUICR7REVSSVZFRF9T
T1VSQ0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICR7REVSSVZF
RF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMK
KyAgICBNQUlOX0RFUEVOREVOQ1kgaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmpzCisgICAgREVQRU5EUyAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IveHhkLnBsICR7V0VCQ09S
RV9ESVJ9L2luc3BlY3Rvci9TY3JpcHRzL2pzbWluLnB5CisgICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvU2NyaXB0cy9qc21pbi5weSA8ICR7
V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+ICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5t
aW4uanMKKyAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQkNPUkVfRElSfS9pbnNw
ZWN0b3IveHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKyAg
ICBWRVJCQVRJTSkKK2xpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCkKKworCiAjIEdlbmVy
YXRlIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmgKIGFkZF9jdXN0b21fY29tbWFu
ZCgKICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luamVjdGVkU2Ny
aXB0Q2FudmFzTW9kdWxlU291cmNlLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0lu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLm1pbi5qcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdkNjkz
NzIuLmVkODVmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDkgQEAKKzIwMTMtMTItMjAgIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBFeHRyYWN0IENvbW1hbmRMaW5lQVBJIGludG8gaXRzIG93biBJbmplY3RlZFNjcmlwdE1v
ZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2
MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT25s
eSBpbmplY3QgdGhlIENvbW1hbmRMaW5lQVBJTW9kdWxlIG9uY2UsIHdoZW4gdGhlIEluamVjdGVk
U2NyaXB0CisgICAgICAgIGlzIGZpcnN0IGNyZWF0ZWQuIFRoaXMgYXZvaWRzIHJ1bm5pbmcgYSBz
bWFsbCBzbmlwcGV0IG9mIEphdmFTY3JpcHQKKyAgICAgICAgdG8gY2hlY2sgaWYgdGhlIG1vZHVs
ZSBpcyBsb2FkZWQgZXZlcnkgdGltZSB3ZSBmZXRjaCB0aGUgSW5qZWN0ZWRTY3JpcHQuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
QWxsSW5PbmUuY3BwOgorICAgICAgICBBZGQgbmV3IGZpbGVzIHRvIHRoZSBidWlsZC4KKworICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlRm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlkQ3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAg
ICBBZGQgZGlkQ3JlYXRlSW5qZWN0ZWRTY3JpcHQgaG9vayBmb3IgYSBzdWJjbGFzcyB0byBpbmpl
Y3QgbW9yZSBzY3JpcHRzLgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmRpZENyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgRm9yIHBhZ2VzLCBp
bmplY3QgdGhlIENvbW1hbmRMaW5lQVBJTW9kdWxlLgorCisgICAgICAgICogaW5zcGVjdG9yL1Bh
Z2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgVGhpcyBpcyByZXBsYWNlZCBieSBQYWdl
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCB3ZSBubyBsb25nZXIgbmVlZAorICAgICAgICB0byBkbyBl
eHRyYSB3b3JrIGV2ZXJ5IHRpbWUgd2UgZmV0Y2ggdGhlIGluamVjdGVkU2NyaXB0Rm9yRXZhbC4K
KworMjAxMy0xMi0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEV4dHJhY3QgQ29tbWFuZExpbmVBUEkgaW50byBpdHMgb3du
IEluamVjdGVkU2NyaXB0TW9kdWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjYwMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyB0ZXN0cywgbm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisKKyAgICAgICAgTW92ZSB0aGUgQ29tbWFuZExpbmVBUEkgc291cmNlIGludG8gaXRzIG93biBt
b2R1bGUuIExvYWQgdGhlIG1vZHVsZQorICAgICAgICBpbiBJbmplY3RlZFNjcmlwdHMgZm9yIFdl
YkNvcmU6OlBhZ2VzLiBOb3QgZm9yIHdvcmtlcnMuCisKKyAgICAgICAgTW92aW5nIENvbW1hbmRM
aW5lQVBJIGludG8gaXQncyBvd24gbW9kdWxlIG1vdmVzIGl0IGZyb20gYmVpbmcgaW5zaWRlCisg
ICAgICAgIHRoZSBzYW1lIGFub255bW91cyBmdW5jdGlvbiB0byBiZWluZyBldmFsdWF0ZWQgb3V0
c2lkZSB0aGUgYW5vbnltb3VzCisgICAgICAgIGZ1bmN0aW9uLiBUbyBjb25uZWN0IHRoZSB0d28g
SW5qZWN0ZWRTY3JpcHQgcGFzc2VzIGl0c2VsZiB0byB0aGUKKyAgICAgICAgaW5qZWN0ZWQgbW9k
dWxlLCBhbmQgdGhlIENvbW1hbmRMaW5lQVBJIG1vZHVsZSBwbGFjZXMgaXRzIGNsYXNzIG9uIHRo
ZQorICAgICAgICBpbmplY3RlZFNjcmlwdCBhcyBpbmplY3RlZFNjcmlwdC5Db21tYW5kTGluZUFQ
SS4KKworICAgICAgICBUaGlzIGVzc2VudGlhbGx5IG1ha2VzIHRoZSBDb21tYW5kTGluZUFQSSBt
b2R1bGUgYW4gSW5qZWN0ZWRTY3JpcHQKKyAgICAgICAgZXh0ZW5zaW9uLiBJbmplY3RlZFNjcmlw
dFNvdXJjZSBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YKKyAgICAgICAgdGhpcy5Db21tYW5k
TGluZUFQSSB0byBzZWUgaWYgdGhlIGZ1bGxlciB2ZXJzaW9uIGlzIGF2YWlsYWJsZS4gT3RoZXJ3
aXNlCisgICAgICAgIGl0IGZhbGxzIGJhY2sgdG8gYSBCYXNpY0NvbW1hbmRMaW5lQVBJIHdoaWNo
IG9ubHkgZXhwb3NlcyAiJF8iLAorICAgICAgICB3aGljaCBpcyB0aGUgImxhc3QgZXZhbHVhdGVk
IHJlc3VsdCIuIFRoYXQgd2lsbCBiZSB1c2VmdWwgZm9yIEpTIENvbnRleHRzCisgICAgICAgIGFu
ZCBXb3JrZXJzLgorCisgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUsIHRoaXMgcGF0Y2ggbWFrZXMg
SW5qZWN0ZWRTY3JpcHRNb2R1bGUgbW9yZSBnZW5lcmljLAorICAgICAgICB0byBzdXBwb3J0IGJl
aW5nIHVzZWQgaW4gYSBwdXJlIEphdmFTY3JpcHQgZW52aXJvbm1lbnQsIG1lYW5pbmcgb25lCisg
ICAgICAgIHdpdGhvdXQgIndpbmRvdyIgYXMgdGhlIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBbGxJ
bk9uZS5jcHA6CisgICAgICAgIEFkZCBmaWxlcy4gTWluaWZ5IHRoZSBDb21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZSBpbiBnZW5lcmF0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJTW9kdWxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQ
SU1vZHVsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElNb2R1
bGU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5l
QVBJTW9kdWxlOjppbmplY3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGlu
ZUFQSU1vZHVsZTo6c291cmNlKToKKyAgICAgICAgSW5qZWN0IHRoZSBtb2R1bGUgdGhhdCBkb2Vz
bid0IHJldHVybiBhbiBvYmplY3QsIGl0cyBqdXN0IGV2YWx1YXRlZCBjb2RlCisgICAgICAgIGV4
dGVuZGluZyB0aGUgb3JpZ2luYWwgSW5qZWN0ZWRTY3JpcHQuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6
OmVuc3VyZUluamVjdGVkKToKKyAgICAgICAgT25seSBBU1NFUlQgdGhlIHJlc3VsdCB3YXMgYW4g
b2JqZWN0IGlmIHRoZSBNb2R1bGUgY2xhaW1zIGl0IHJldHVybnMgYW4gb2JqZWN0LgorCisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZTo6cmV0dXJuc09iamVjdCk6CisgICAg
ICAgIFJldHVybiBhbiBvYmplY3QgdXNlZCBsYXRlciB0byBjYWxsIGludG8gdGhlIENhbnZhc01v
ZHVsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6Cisg
ICAgICAgIEVuc3VyZSB0aGUgQ29tbWFuZExpbmVBUElNb2R1bGUgaXMgbG9hZGVkIGluIHRoZSBQ
YWdlJ3MgSW5qZWN0ZWRTY3JpcHQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuanM6IEFkZGVkLgorICAgICAgICBDcmVhdGUgdGhlIENvbW1hbmRMaW5l
QVBJIGNsYXNzIGFuZCBwbGFjZSBpdCBvbiBpbmplY3RlZFNjcmlwdC4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0
LnByb3RvdHlwZS5fZXZhbHVhdGVPbik6CisgICAgICAgIEluamVjdCBlaXRoZXIgdGhlIEJhc2lj
Q29tbWFuZExpbmVBUEkgb3IgZXh0ZW5kZWQgQ29tbWFuZExpbmVBUEkuCisgICAgICAgIERlcml2
ZSB0aGUgZ2xvYmFsT2JqZWN0IGR5bmFtaWNhbGx5IGluc3RlYWQgb2YgYXNzdW1pbmcgd2luZG93
LgorICAgICAgICBJbmplY3QgdGhlIGNvbW1hbmRMaW5lQVBJIG9uIHdpbmRvdy5jb25zb2xlIG9y
IHRoZSBnbG9iYWxPYmplY3QgYmFzZWQgb24gY29udGV4dC4KKyAgICAgICAgQXVkaXQgYW5kIHJl
bmFtZSB1c2VzIG9mICJ3aW5kb3ciIHRvIHNvbWV0aGluZyBsaWtlIGdsb2JhbE9iamVjdC4KKwog
MjAxMy0xMi0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBJbnNwZWN0b3JGcm9udGVuZEhvc3QuZGVidWdnYWJsZVR5
cGUgdG8gbGV0IHRoZSBmcm9udGVuZCBrbm93IGl0J3MgYmFja2VuZCBpcyBKYXZhU2NyaXB0IG9y
IFdlYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNDc1ZjdhYi4uOWI3MWM5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMTE5LDYgKzExMTksMTMgQEAgSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCA6IEluamVjdGVkU2NyaXB0U291cmNlLmpzCiAJcGVybCAiJChX
ZWJDb3JlKS9pbnNwZWN0b3IveHhkLnBsIiBJbmplY3RlZFNjcmlwdFNvdXJjZV9qcyAuL0luamVj
dGVkU2NyaXB0U291cmNlLm1pbi5qcyBJbmplY3RlZFNjcmlwdFNvdXJjZS5oCiAJcm0gLWYgLi9J
bmplY3RlZFNjcmlwdFNvdXJjZS5taW4uanMKIAorYWxsIDogQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaAorCitDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIDogQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuanMKKwlweXRob24gIiQoV2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdHMvanNt
aW4ucHkiIDwiJChXZWJDb3JlKS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
anMiID4gLi9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKKwlwZXJsICIkKFdlYkNv
cmUpL2luc3BlY3Rvci94eGQucGwiIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzIC4vQ29t
bWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNl
LmgKKwlybSAtZiAuL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcworCiBhbGwgOiBJ
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oCiAKIEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlU291cmNlLmggOiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQppbmRleCBhNjBjNWI1Li5mMDJmOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQpAQCAtMzcxLDE0ICszNzEsMTggQEAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JP
dmVybGF5UGFnZS5oOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0b3JPdmUKIAkkKEFNX1Zf
R0VOKSQoUFlUSE9OKSAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRzL2lubGluZS1hbmQtbWlu
aWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXlQYWdlLmh0bWwgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luc3BlY3Rvck92ZXJs
YXlQYWdlLmNvbWJpbmVkLmh0bWwKIAkkKEFNX1ZfR0VOKSQoUEVSTCkgJChXZWJDb3JlKS9pbnNw
ZWN0b3IveHhkLnBsIEluc3BlY3Rvck92ZXJsYXlQYWdlX2h0bWwgJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0luc3BlY3Rvck92ZXJsYXlQYWdlLmNvbWJpbmVkLmh0bWwgJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0luc3BlY3Rvck92ZXJsYXlQYWdlLmgKIAotRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Jbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcwotCSQoQU1fVl9HRU4pJChQWVRIT04pICQo
V2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdHMvanNtaW4ucHkgPCQoV2ViQ29yZSkvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzID4gJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLm1pbi5qcwotCSQoQU1fVl9HRU4p
JChQRVJMKSAkKFdlYkNvcmUpL2luc3BlY3Rvci94eGQucGwgSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGVTb3VyY2VfanMgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlU291cmNlLm1pbi5qcyAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvSW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGVTb3VyY2UuaAotCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luamVjdGVkU2Ny
aXB0U291cmNlLmg6ICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpz
CiAJJChBTV9WX0dFTikkKFBZVEhPTikgJChXZWJDb3JlKS9pbnNwZWN0b3IvU2NyaXB0cy9qc21p
bi5weSA8JChXZWJDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgPiAkKEdF
TlNPVVJDRVNfV0VCQ09SRSkvSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzCiAJJChBTV9WX0dF
TikkKFBFUkwpICQoV2ViQ29yZSkvaW5zcGVjdG9yL3h4ZC5wbCBJbmplY3RlZFNjcmlwdFNvdXJj
ZV9qcyAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvSW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzICQo
R0VOU09VUkNFU19XRUJDT1JFKS9JbmplY3RlZFNjcmlwdFNvdXJjZS5oCiAKK0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaDogJChXZWJDb3JlKS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKKwkkKEFNX1ZfR0VOKSQoUFlUSE9O
KSAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRzL2pzbWluLnB5IDwkKFdlYkNvcmUpL2luc3Bl
Y3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+ICQoR0VOU09VUkNFU19XRUJDT1JF
KS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKKwkkKEFNX1ZfR0VOKSQoUEVSTCkg
JChXZWJDb3JlKS9pbnNwZWN0b3IveHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pz
ICQoR0VOU09VUkNFU19XRUJDT1JFKS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMg
JChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKKworRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oOiAk
KFdlYkNvcmUpL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcwor
CSQoQU1fVl9HRU4pJChQWVRIT04pICQoV2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdHMvanNtaW4u
cHkgPCQoV2ViQ29yZSkvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
LmpzID4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291
cmNlLm1pbi5qcworCSQoQU1fVl9HRU4pJChQRVJMKSAkKFdlYkNvcmUpL2luc3BlY3Rvci94eGQu
cGwgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2VfanMgJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLm1pbi5qcyAkKEdFTlNPVVJDRVNf
V0VCQ09SRSkvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuaAorCiBpZiBFTkFCTEVf
V0VCX0FVRElPCiAjIEluc3RhbGxpbmcgSFJURiBkYXRhYmFzZSB3YXYgZmlsZXMKIGF1ZGlvZGly
ID0gJHtkYXRhZGlyfS93ZWJraXRndGstQFdFQktJVEdUS19BUElfVkVSU0lPTkAvcmVzb3VyY2Vz
L2F1ZGlvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZGM4NGZlOS4uOWQ1MDFl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01LDYgKzUsNyBAQCB3ZWJjb3Jl
X2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTUHJvcGVydHlO
YW1lcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvRXZlbnRGYWN0b3J5LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9FdmVudEhlYWRlcnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEludGVyZmFj
ZXMuaCBcCkBAIC0zNzY2LDYgKzM3NjcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2ljdS91bmljb2RlL3V0eXBlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pY3UvdW5p
Y29kZS91dmVyc2lvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQmluZGluZ1Zpc2l0
b3JzLmggXAorICAgIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5jcHAgXAorICAgIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZUFQSVR5cGVzLmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIFwKQEAgLTM4NzAsNiArMzg3Myw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xl
QWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmggXAorCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBmNzg3N2I3Li4zZWZmYTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTE3NTU4
LDYgKzE3NTU4LDE0IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxicmlkZ2VccnVudGlt
ZV9tZXRob2QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnJpZGdlXHJ1bnRp
bWVfb2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJyaWRnZVxydW50
aW1lX3Jvb3QuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENv
bW1hbmRMaW5lQVBJTW9kdWxlLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29uc29sZU1lc3NhZ2UuY3BwIj4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xNzk1MCw2ICsxNzk1OCwx
NCBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5D
YWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rp
b258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcUGFnZVJ1bnRpbWVBZ2VudC5jcHAiPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE4MDg3
LDYgKzE4MTAzLDcgQEAKICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQ1NTR3JhbW1hci5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXENvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRIZWFkZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRJbnRlcmZhY2VzLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRUYXJnZXRI
ZWFkZXJzLmgiIC8+CkBAIC0yMDk0MSw2ICsyMDk1OCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxicmlkZ2VccnVudGltZV9yb290LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcQmluZGluZ1Zpc2l0b3JzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcQ29uc29sZUFQSVR5cGVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29tbWFuZExpbmVBUElNb2R1bGUuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxDb25zb2xlTWVzc2FnZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENvbnRlbnRTZWFyY2hVdGlscy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXERPTUVkaXRvci5oIiAvPgpAQCAt
MjA5OTYsNiArMjEwMTQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XE5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcUGFnZUNvbnNvbGVBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXFBhZ2VEZWJ1Z2dlckFnZW50LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFBhZ2VSdW50aW1lQWdlbnQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxTY3JpcHRBcmd1bWVudHMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxTY3JpcHRCcmVha3BvaW50Lmgi
IC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMKaW5kZXggYWQwZDUwMS4uY2FlMDVhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
NDc5MSw2ICs0NzkxLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJyaWRnZVxydW50
aW1lX3Jvb3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+YnJpZGdlPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29tbWFuZExpbmVB
UElNb2R1bGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcQ29uc29sZU1l
c3NhZ2UuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC00OTM1LDYgKzQ5MzgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rv
cjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcUGFnZVJ1bnRpbWVBZ2VudC5jcHAiPgogICAgICAgPEZpbHRlcj5p
bnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEyMzY4LDYgKzEyMzc0LDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxCaW5kaW5nVmlzaXRvcnMu
aCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXENvbW1hbmRMaW5lQVBJTW9kdWxl
LmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxDb25zb2xlQVBJVHlwZXMuaCI+
CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAt
MTI1MzYsNiArMTI1NDUsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XFBhZ2VEZWJ1Z2dlckFnZW50LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxQ
YWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxQYWdlUnVudGltZUFnZW50LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEzMDM5LDYgKzEzMDUxLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xDU1NHcmFtbWFyLmgiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEV2ZW50SGVhZGVycy5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJj
ZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMWNiMDY0Li5hZjMwNDI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0zNTI3LDYgKzM1MjcsMTEgQEAKIAkJQTU0QTgyRjExNTIyOERGNjAwQzcyQkE2IC8qIERPTU5v
ZGVQcml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVByaXZh
dGUuaCAqLzsgfTsKIAkJQTU3MzJCMEExMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMy
QjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgKi87IH07CiAJCUE1NzMy
QjBCMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8q
IERhdGVDb21wb25lbnRzLmggKi87IH07CisJCUE1ODRGRTI2MTg2MzdEQUIwMDg0M0IxMCAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmggKi87IH07CisJCUE1ODRGRTJCMTg2Mzg3MEYwMDg0M0IxMCAvKiBD
b21tYW5kTGluZUFQSU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElN
b2R1bGUuY3BwICovOyB9OworCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExp
bmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1ODRGRTJBMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICov
OyB9OworCQlBNTg0RkUyRjE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUluamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTg0RkUyRDE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAg
Ki87IH07CisJCUE1ODRGRTMwMTg2NENCODQwMDg0M0IxMCAvKiBQYWdlSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTg0RkUyRTE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5oICov
OyB9OwogCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4
QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVBMkFGMEIxODI5NzM0MzAw
REUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdn
YWJsZS5jcHAgKi87IH07CiAJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdn
YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVB
MkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87IH07CkBAIC0xMDM2
MCw2ICsxMDM2NSwxMiBAQAogCQlBNTRBODJFQTE1MjI4Q0EzMDBDNzJCQTYgLyogRE9NTm9kZVBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZVByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdD
IC8qIERhdGVDb21wb25lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERhdGVDb21wb25lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3
MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVs
ZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTg0RkUyNzE4
NjM3RENBMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU4NEZFMjkxODYzODcwRjAwODQz
QjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTU4NEZFMkExODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9k
dWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaW5lQVBJTW9k
dWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1ODRGRTJEMTg2NENCODQwMDg0
M0IxMCAvKiBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNTg0RkUyRTE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUlu
amVjdGVkU2NyaXB0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
YWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1OTNDRjcyMTg0MDJDRTkwMEJGQ0UyNyAvKiBwcm90b2NvbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IHByb3RvY29sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyog
Y29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSAiY29tYmlu
ZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1OTNDRjhBMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDQ2MSw2ICsxNDQ3Miw3IEBACiAJCTFDNUZB
RUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE1ODRGRTI1MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oICovLAogCQkJCUFBOTEyNzUwMTU3RTM1QTUwMDQ1NEU1
NCAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5oICovLAogCQkJCTdBNTYzRTU0
MTJERTMyQjAwMEY0NTM2RCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLAogCQkJCTRGNzA3
QTk3MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuY3Bw
ICovLApAQCAtMTQ0OTAsNiArMTQ1MDIsOSBAQAogCQkJCUE1MTgyMjUzMTdFMjhDRjEwMEE5QkEx
RCAvKiBTY3JpcHRzICovLAogCQkJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21iaW5l
LWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsICovLAogCQkJCUYzNUFFNUFCMTQ5MjVGNUIwMDRENTc3
NiAvKiBCaW5kaW5nVmlzaXRvcnMuaCAqLywKKwkJCQlBNTg0RkUyOTE4NjM4NzBGMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwICovLAorCQkJCUE1ODRGRTJBMTg2Mzg3MEYwMDg0
M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oICovLAorCQkJCUE1ODRGRTI3MTg2MzdEQ0Ew
MDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyAqLywKIAkJCQkyREYyRTlE
NDE2NkUzOTc0MDAzNUJFRjIgLyogQ29uc29sZUFQSVR5cGVzLmggKi8sCiAJCQkJNDFGMDYxOEQw
RjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLywKIAkJCQk0MUYwNjE4QzBG
NUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCAqLywKQEAgLTE0NjAyLDYgKzE0NjE3
LDggQEAKIAkJCQlGMzgyMDg4QjE0N0QzNUY5MDAxMEJDMDYgLyogUGFnZUNvbnNvbGVBZ2VudC5o
ICovLAogCQkJCUYzNDc0MkRBMTM0MzYyRjAwMDUzMUJDMiAvKiBQYWdlRGVidWdnZXJBZ2VudC5j
cHAgKi8sCiAJCQkJRjM0NzQyREIxMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50
LmggKi8sCisJCQkJQTU4NEZFMkQxODY0Q0I4NDAwODQzQjEwIC8qIFBhZ2VJbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwICovLAorCQkJCUE1ODRGRTJFMTg2NENCODQwMDg0M0IxMCAvKiBQYWdlSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8sCiAJCQkJRjM4MjA4OEMxNDdEMzVGOTAwMTBCQzA2IC8q
IFBhZ2VSdW50aW1lQWdlbnQuY3BwICovLAogCQkJCUYzODIwODhEMTQ3RDM1RjkwMDEwQkMwNiAv
KiBQYWdlUnVudGltZUFnZW50LmggKi8sCiAJCQkJRjM5QkU5NTkxMjY3M0JGNDAwRTBBNjc0IC8q
IFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8sCkBAIC0yMjk2MCw2ICsyMjk3Nyw3IEBACiAJCQkJM0Yy
QjMzRUIxNjVBRjE1NjAwRTM5ODdDIC8qIERPTVdlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJM0YyQjMzRUQxNjVBRjE1NjAwRTM5ODdDIC8qIERPTVdlYktpdENTU1Zp
ZXdwb3J0UnVsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxNzE4MjA1NDA3
MDBGMkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1ODRGRTJDMTg2Mzg3MEYwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOEExOTU5MzIxNDdFQTE2RTAwRDFFQTYxIC8qIERPTVdlYktpdE5hbWVk
Rmxvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEExOTU5MzQxNDdFQTE2RTAwRDFFQTYxIC8qIERP
TVdlYktpdE5hbWVkRmxvd0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkY0QzBF
NENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTIzMzcwLDYgKzIzMzg4LDcgQEAKIAkJCQk1OTEzQTI0MjEzRDQ5RUJBMDBGNUIwNUMg
LyogSWRlbnRpZmllcnNGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNTBFRjg2
RDQ3MDA5RDBDQUYgLyogSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxMjVGODU2MTgyQzBGODMwMEQ4NENEOSAvKiBDcnlwdG9LZXlTZXJpYWxpemF0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTg0RkUyNjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENjQxRUMwMTgxOUIz
NjAwMEVFNEM0MSAvKiBNZWRpYVRpbWVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQzA1NENE
MTExOEM4RTQwMENFMjYzNiAvKiBJRExQYXJzZXIucG0gaW4gSGVhZGVycyAqLywKIAkJCQlDM0NG
MTdBNTE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNDk4OSw2ICsyNTAwOCw3IEBACiAJCQkJMDg4QTBFMEIxMjZFRjFEQjAwOTc4RjdBIC8q
IFNWR1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMEMxMjZFRjFE
QjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0E5QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogUGFnZUluamVjdGVkU2Ny
aXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzQTAyM0IxN0VCMzcwQTAwNENERDI1
IC8qIFJlbmRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4RURFMTlGMTJBNTBCOEUw
MEI5NTc5NyAvKiBTVkdSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5RTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUmVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY2MjYsNiAr
MjY2NDYsNyBAQAogCQkJCUJDQ0Q3NEU1MEE0QzhEREYwMDVGREE2RCAvKiBIVE1MVmlld1NvdXJj
ZURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzODc5MTIyODgzRTkwMEI4MUZG
OCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUMyNjZE
ODE4MzE3QUI0MDAzRjhCMzMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU4NEZFMkYxODY0Q0I4NDAwODQzQjEwIC8qIFBhZ2VJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEI4QzU2RDQwRjI4
NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0
Qzc2NzIwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3MUE2N0NCMTFDNkM3REIwMDA0N0I4QiAvKiBIeXBoZW5hdGlvbkNGLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjgwOTksNiArMjgxMjAsNyBAQAogCQkJCUIyNTU5OTg0MEQwMEQ4QkEwMEJC
ODI1QyAvKiBTVkdGRUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUVFMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRUltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUQ3MTlFQjE4MTEwNkUwMDAxNkRDNTEgLyogSURCUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBNTg0RkUyQjE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTGln
aHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUYzMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlGNjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9k
dWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUwMmQyZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5j
cHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1v
ZHVsZS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkNvbW1hbmRMaW5l
QVBJTW9kdWxlU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29tbWFuZExpbmVB
UElNb2R1bGU6OkNvbW1hbmRMaW5lQVBJTW9kdWxlKCkKKyAgICA6IEluamVjdGVkU2NyaXB0TW9k
dWxlKEFTQ0lJTGl0ZXJhbCgiQ29tbWFuZExpbmVBUEkiKSkKK3sKK30KKwordm9pZCBDb21tYW5k
TGluZUFQSU1vZHVsZTo6aW5qZWN0SWZOZWVkZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0KQoreworICAg
IENvbW1hbmRMaW5lQVBJTW9kdWxlIG1vZHVsZTsKKyAgICBtb2R1bGUuZW5zdXJlSW5qZWN0ZWQo
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdCk7Cit9CisKK1N0cmluZyBDb21t
YW5kTGluZUFQSU1vZHVsZTo6c291cmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pz
KSwgc2l6ZW9mKENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZTMxNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaApAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBD
b21tYW5kTGluZUFQSU1vZHVsZV9oCisjZGVmaW5lIENvbW1hbmRMaW5lQVBJTW9kdWxlX2gKKwor
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TW9kdWxlLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbW1hbmRMaW5lQVBJTW9kdWxlIEZJ
TkFMIDogcHVibGljIEluamVjdGVkU2NyaXB0TW9kdWxlIHsKK3B1YmxpYzoKKyAgICBDb21tYW5k
TGluZUFQSU1vZHVsZSgpOworCisgICAgdmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIHJldHVybnNPYmplY3QoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQorCisgICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiwgSW5qZWN0ZWRTY3JpcHQpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKworI2VuZGlmIC8vICFkZWZp
bmVkKENvbW1hbmRMaW5lQVBJTW9kdWxlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uN2EyYzVhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcwpAQCAtMCwwICsxLDM0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8qKgorICogQHBhcmFtIHtJbmplY3RlZFNjcmlwdEhvc3R9IEluamVjdGVkU2NyaXB0
SG9zdAorICogQHBhcmFtIHtXaW5kb3d9IGluc3BlY3RlZFdpbmRvdworICogQHBhcmFtIHtudW1i
ZXJ9IGluamVjdGVkU2NyaXB0SWQKKyAqLworKGZ1bmN0aW9uIChJbmplY3RlZFNjcmlwdEhvc3Qs
IGluc3BlY3RlZFdpbmRvdywgaW5qZWN0ZWRTY3JpcHRJZCwgaW5qZWN0ZWRTY3JpcHQpIHsKKwor
LyoqCisgKiBAcGFyYW0ge0FyZ3VtZW50c30gYXJyYXkKKyAqIEBwYXJhbSB7bnVtYmVyPX0gaW5k
ZXgKKyAqIEByZXR1cm4ge0FycmF5LjwqPn0KKyAqLworZnVuY3Rpb24gc2xpY2UoYXJyYXksIGlu
ZGV4KQoreworICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gaW5kZXggfHwg
MDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQorICAgICAgICByZXN1bHQucHVzaChhcnJheVtpXSk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoqCisgKiBQbGVhc2UgdXNlIHRoaXMgYmluZCwg
bm90IHRoZSBvbmUgZnJvbSBGdW5jdGlvbi5wcm90b3R5cGUKKyAqIEBwYXJhbSB7ZnVuY3Rpb24o
Li4uKX0gZnVuYworICogQHBhcmFtIHtPYmplY3R9IHRoaXNPYmplY3QKKyAqIEBwYXJhbSB7Li4u
bnVtYmVyfSB2YXJfYXJncworICovCitmdW5jdGlvbiBiaW5kKGZ1bmMsIHRoaXNPYmplY3QsIHZh
cl9hcmdzKQoreworICAgIHZhciBhcmdzID0gc2xpY2UoYXJndW1lbnRzLCAyKTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7Li4ubnVtYmVyfSB2YXJfYXJncworICAgICAqLworICAgIGZ1bmN0
aW9uIGJvdW5kKHZhcl9hcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhp
c09iamVjdCwgYXJncy5jb25jYXQoc2xpY2UoYXJndW1lbnRzKSkpOworICAgIH0KKyAgICBib3Vu
ZC50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gImJvdW5kOiAiICsgZnVu
YzsKKyAgICB9OworICAgIHJldHVybiBib3VuZDsKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqIEBwYXJhbSB7Q29tbWFuZExpbmVBUElJbXBsfSBjb21tYW5kTGluZUFQSUltcGwKKyAqIEBw
YXJhbSB7T2JqZWN0fSBjYWxsRnJhbWUKKyAqLworZnVuY3Rpb24gQ29tbWFuZExpbmVBUEkoY29t
bWFuZExpbmVBUElJbXBsLCBjYWxsRnJhbWUpCit7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IG1lbWJlcgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgZnVu
Y3Rpb24gaW5TY29wZVZhcmlhYmxlcyhtZW1iZXIpCisgICAgeworICAgICAgICBpZiAoIWNhbGxG
cmFtZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgc2NvcGVDaGFp
biA9IGNhbGxGcmFtZS5zY29wZUNoYWluOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNj
b3BlQ2hhaW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtZW1iZXIgaW4gc2NvcGVD
aGFpbltpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCBmb3Igd2hpY2ggYSB0b1N0cmluZyBtZXRob2Qg
c2hvdWxkIGJlIGdlbmVyYXRlZC4KKyAgICAgKiBAcmV0dXJuIHtmdW5jdGlvbigpOnN0cmluZ30K
KyAgICAgKi8KKyAgICBmdW5jdGlvbiBjdXN0b21Ub1N0cmluZ01ldGhvZChuYW1lKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSAr
ICIoKSB7IFtDb21tYW5kIExpbmUgQVBJXSB9IjsgfTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IENvbW1hbmRMaW5lQVBJLm1lbWJlcnNfLmxlbmd0aDsgKytpKSB7CisgICAgICAg
IHZhciBtZW1iZXIgPSBDb21tYW5kTGluZUFQSS5tZW1iZXJzX1tpXTsKKyAgICAgICAgaWYgKG1l
bWJlciBpbiBpbnNwZWN0ZWRXaW5kb3cgfHwgaW5TY29wZVZhcmlhYmxlcyhtZW1iZXIpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdGhpc1ttZW1iZXJdID0gYmluZChjb21tYW5k
TGluZUFQSUltcGxbbWVtYmVyXSwgY29tbWFuZExpbmVBUElJbXBsKTsKKyAgICAgICAgdGhpc1tt
ZW1iZXJdLnRvU3RyaW5nID0gY3VzdG9tVG9TdHJpbmdNZXRob2QobWVtYmVyKTsKKyAgICB9CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7ICsraSkgeworICAgICAgICB2YXIgbWVtYmVyID0g
IiQiICsgaTsKKyAgICAgICAgaWYgKG1lbWJlciBpbiBpbnNwZWN0ZWRXaW5kb3cgfHwgaW5TY29w
ZVZhcmlhYmxlcyhtZW1iZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdGhp
cy5fX2RlZmluZUdldHRlcl9fKCIkIiArIGksIGJpbmQoY29tbWFuZExpbmVBUElJbXBsLl9pbnNw
ZWN0ZWRPYmplY3QsIGNvbW1hbmRMaW5lQVBJSW1wbCwgaSkpOworICAgIH0KKworICAgIHRoaXMu
JF8gPSBpbmplY3RlZFNjcmlwdC5fbGFzdFJlc3VsdDsKK30KKworLyoqCisgKiBAdHlwZSB7QXJy
YXkuPHN0cmluZz59CisgKiBAY29uc3QKKyAqLworQ29tbWFuZExpbmVBUEkubWVtYmVyc18gPSBb
CisgICAgIiQiLCAiJCQiLCAiJHgiLCAiZGlyIiwgImRpcnhtbCIsICJrZXlzIiwgInZhbHVlcyIs
ICJwcm9maWxlIiwgInByb2ZpbGVFbmQiLAorICAgICJtb25pdG9yRXZlbnRzIiwgInVubW9uaXRv
ckV2ZW50cyIsICJpbnNwZWN0IiwgImNvcHkiLCAiY2xlYXIiLCAiZ2V0RXZlbnRMaXN0ZW5lcnMi
CitdOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBDb21tYW5kTGluZUFQ
SUltcGwoKQoreworfQorCitDb21tYW5kTGluZUFQSUltcGwucHJvdG90eXBlID0geworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvcgorICAgICAqIEBwYXJhbSB7Tm9kZT19
IHN0YXJ0CisgICAgICovCisgICAgJDogZnVuY3Rpb24gKHNlbGVjdG9yLCBzdGFydCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9jYW5RdWVyeVNlbGVjdG9yT25Ob2RlKHN0YXJ0KSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGFydC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKworICAgICAgICB2
YXIgcmVzdWx0ID0gaW5zcGVjdGVkV2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0
b3IpOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgaWYgKHNlbGVjdG9yICYmIHNlbGVjdG9yWzBdICE9PSAiIyIpIHsKKyAgICAgICAgICAg
IHJlc3VsdCA9IGluc3BlY3RlZFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3Rv
cik7CisgICAgICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgaW5zcGVjdGVk
V2luZG93LmNvbnNvbGUud2FybigiVGhlIGNvbnNvbGUgZnVuY3Rpb24gJCgpIGhhcyBjaGFuZ2Vk
IGZyb20gJD1nZXRFbGVtZW50QnlJZChpZCkgdG8gJD1xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKS4g
WW91IG1pZ2h0IHRyeSAkKFwiIyVzXCIpIiwgc2VsZWN0b3IgKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IK
KyAgICAgKiBAcGFyYW0ge05vZGU9fSBzdGFydAorICAgICAqLworICAgICQkOiBmdW5jdGlvbiAo
c2VsZWN0b3IsIHN0YXJ0KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2NhblF1ZXJ5U2VsZWN0
b3JPbk5vZGUoc3RhcnQpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0LnF1ZXJ5U2VsZWN0b3JB
bGwoc2VsZWN0b3IpOworICAgICAgICByZXR1cm4gaW5zcGVjdGVkV2luZG93LmRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge05vZGU9fSBub2RlCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBf
Y2FuUXVlcnlTZWxlY3Rvck9uTm9kZTogZnVuY3Rpb24obm9kZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiAhIW5vZGUgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LnR5cGUobm9kZSkgPT09ICJub2RlIiAm
JiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgfHwgbm9kZS5ub2RlVHlwZSA9
PT0gTm9kZS5ET0NVTUVOVF9OT0RFIHx8IG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRf
RlJBR01FTlRfTk9ERSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSB4cGF0aAorICAgICAqIEBwYXJhbSB7Tm9kZT19IGNvbnRleHQKKyAgICAgKi8KKyAgICAkeDog
ZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpCisgICAgeworICAgICAgICB2YXIgZG9jID0gKGNvbnRl
eHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50KSB8fCBpbnNwZWN0ZWRXaW5kb3cuZG9jdW1lbnQ7
CisgICAgICAgIHZhciByZXN1bHQgPSBkb2MuZXZhbHVhdGUoeHBhdGgsIGNvbnRleHQgfHwgZG9j
LCBudWxsLCBYUGF0aFJlc3VsdC5BTllfVFlQRSwgbnVsbCk7CisgICAgICAgIHN3aXRjaCAocmVz
dWx0LnJlc3VsdFR5cGUpIHsKKyAgICAgICAgY2FzZSBYUGF0aFJlc3VsdC5OVU1CRVJfVFlQRToK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQubnVtYmVyVmFsdWU7CisgICAgICAgIGNhc2UgWFBh
dGhSZXN1bHQuU1RSSU5HX1RZUEU6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnN0cmluZ1Zh
bHVlOworICAgICAgICBjYXNlIFhQYXRoUmVzdWx0LkJPT0xFQU5fVFlQRToKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQuYm9vbGVhblZhbHVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgdmFyIG5vZGVzID0gW107CisgICAgICAgICAgICB2YXIgbm9kZTsKKyAgICAgICAgICAgIHdo
aWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkpCisgICAgICAgICAgICAgICAgbm9kZXMu
cHVzaChub2RlKTsKKyAgICAgICAgICAgIHJldHVybiBub2RlczsKKyAgICAgICAgfQorICAgIH0s
CisKKyAgICBkaXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNwZWN0ZWRX
aW5kb3cuY29uc29sZS5kaXIuYXBwbHkoaW5zcGVjdGVkV2luZG93LmNvbnNvbGUsIGFyZ3VtZW50
cykKKyAgICB9LAorCisgICAgZGlyeG1sOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuZGlyeG1sLmFwcGx5KGluc3BlY3RlZFdpbmRvdy5j
b25zb2xlLCBhcmd1bWVudHMpCisgICAgfSwKKworICAgIGtleXM6IGZ1bmN0aW9uKG9iamVjdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOworICAgIH0sCisKKyAg
ICB2YWx1ZXM6IGZ1bmN0aW9uKG9iamVjdCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBb
XTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkKKyAgICAgICAgICAgIHJlc3VsdC5w
dXNoKG9iamVjdFtrZXldKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAg
cHJvZmlsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc3BlY3RlZFdpbmRv
dy5jb25zb2xlLnByb2ZpbGUuYXBwbHkoaW5zcGVjdGVkV2luZG93LmNvbnNvbGUsIGFyZ3VtZW50
cykKKyAgICB9LAorCisgICAgcHJvZmlsZUVuZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLnByb2ZpbGVFbmQuYXBwbHkoaW5zcGVjdGVk
V2luZG93LmNvbnNvbGUsIGFyZ3VtZW50cykKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtPYmplY3R9IG9iamVjdAorICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz58c3RyaW5n
PX0gdHlwZXMKKyAgICAgKi8KKyAgICBtb25pdG9yRXZlbnRzOiBmdW5jdGlvbihvYmplY3QsIHR5
cGVzKQorICAgIHsKKyAgICAgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC5hZGRFdmVudExpc3Rl
bmVyIHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgdHlwZXMgPSB0aGlzLl9ub3JtYWxpemVFdmVudFR5cGVzKHR5cGVzKTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
b2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNbaV0sIHRoaXMuX2xvZ0V2ZW50LCBmYWxz
ZSk7CisgICAgICAgICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgdGhpcy5f
bG9nRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge09iamVjdH0gb2JqZWN0CisgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPnxzdHJp
bmc9fSB0eXBlcworICAgICAqLworICAgIHVubW9uaXRvckV2ZW50czogZnVuY3Rpb24ob2JqZWN0
LCB0eXBlcykKKyAgICB7CisgICAgICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRM
aXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHR5cGVzID0gdGhpcy5fbm9ybWFsaXplRXZlbnRUeXBlcyh0eXBlcyk7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlc1tpXSwgdGhpcy5fbG9nRXZlbnQsIGZh
bHNlKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSBvYmplY3QKKyAgICAg
KiBAcmV0dXJuIHsqfQorICAgICAqLworICAgIGluc3BlY3Q6IGZ1bmN0aW9uKG9iamVjdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC5faW5zcGVjdChvYmplY3QpOworICAg
IH0sCisKKyAgICBjb3B5OiBmdW5jdGlvbihvYmplY3QpCisgICAgeworICAgICAgICBpZiAoaW5q
ZWN0ZWRTY3JpcHQuX3N1YnR5cGUob2JqZWN0KSA9PT0gIm5vZGUiKQorICAgICAgICAgICAgb2Jq
ZWN0ID0gb2JqZWN0Lm91dGVySFRNTDsKKyAgICAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0LmNvcHlU
ZXh0KG9iamVjdCk7CisgICAgfSwKKworICAgIGNsZWFyOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBJbmplY3RlZFNjcmlwdEhvc3QuY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtOb2RlfSBub2RlCisgICAgICovCisgICAgZ2V0RXZl
bnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHRIb3N0LmdldEV2ZW50TGlzdGVuZXJzKG5vZGUpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtCisgICAgICovCisgICAgX2luc3BlY3RlZE9iamVj
dDogZnVuY3Rpb24obnVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9z
dC5pbnNwZWN0ZWRPYmplY3QobnVtKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtBcnJheS48c3RyaW5nPnxzdHJpbmc9fSB0eXBlcworICAgICAqIEByZXR1cm4ge0FycmF5Ljxz
dHJpbmc+fQorICAgICAqLworICAgIF9ub3JtYWxpemVFdmVudFR5cGVzOiBmdW5jdGlvbih0eXBl
cykKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YgdHlwZXMgPT09ICJ1bmRlZmluZWQiKQorICAg
ICAgICAgICAgdHlwZXMgPSBbICJtb3VzZSIsICJrZXkiLCAidG91Y2giLCAiY29udHJvbCIsICJs
b2FkIiwgInVubG9hZCIsICJhYm9ydCIsICJlcnJvciIsICJzZWxlY3QiLCAiY2hhbmdlIiwgInN1
Ym1pdCIsICJyZXNldCIsICJmb2N1cyIsICJibHVyIiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic2Vh
cmNoIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2VvcmllbnRhdGlvbiIgXTsKKyAgICAgICAgZWxz
ZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5nIikKKyAgICAgICAgICAgIHR5cGVzID0gWyB0
eXBlcyBdOworCisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKHR5cGVzW2ldID09
PSAibW91c2UiKQorICAgICAgICAgICAgICAgIHJlc3VsdC5zcGxpY2UoMCwgMCwgIm1vdXNlZG93
biIsICJtb3VzZXVwIiwgImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlbW92ZSIsICJtb3VzZW92
ZXIiLCAibW91c2VvdXQiLCAibW91c2V3aGVlbCIpOworICAgICAgICAgICAgZWxzZSBpZiAodHlw
ZXNbaV0gPT09ICJrZXkiKQorICAgICAgICAgICAgICAgIHJlc3VsdC5zcGxpY2UoMCwgMCwgImtl
eWRvd24iLCAia2V5dXAiLCAia2V5cHJlc3MiLCAidGV4dElucHV0Iik7CisgICAgICAgICAgICBl
bHNlIGlmICh0eXBlc1tpXSA9PT0gInRvdWNoIikKKyAgICAgICAgICAgICAgICByZXN1bHQuc3Bs
aWNlKDAsIDAsICJ0b3VjaHN0YXJ0IiwgInRvdWNobW92ZSIsICJ0b3VjaGVuZCIsICJ0b3VjaGNh
bmNlbCIpOworICAgICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJjb250cm9sIikKKyAg
ICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAsICJyZXNpemUiLCAic2Nyb2xsIiwgInpv
b20iLCAiZm9jdXMiLCAiYmx1ciIsICJzZWxlY3QiLCAiY2hhbmdlIiwgInN1Ym1pdCIsICJyZXNl
dCIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHR5cGVz
W2ldKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAorICAgICAqLworICAgIF9sb2dFdmVudDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5s
b2coZXZlbnQudHlwZSwgZXZlbnQpOworICAgIH0KK30KKworaW5qZWN0ZWRTY3JpcHQuQ29tbWFu
ZExpbmVBUEkgPSBDb21tYW5kTGluZUFQSTsKK2luamVjdGVkU2NyaXB0Ll9jb21tYW5kTGluZUFQ
SUltcGwgPSBuZXcgQ29tbWFuZExpbmVBUElJbXBsKCk7CisKKy8vIFRoaXMgTW9kdWxlIGRvZXNu
J3QgZXhwb3NlIGFuIG9iamVjdCwgaXQganVzdCBhZGRzIGFuIGV4dGVuc2lvbiB0aGF0IEluamVj
dGVkU2NyaXB0IHVzZXMuCisvLyBIb3dldmVyLCB3ZSByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LCBz
byB0aGF0IEluamVjdGVkU2NyaXB0IGtub3dzIHRoaXMgbW9kdWxlIGhhcyBiZWVuIGxvYWRlZC4K
K3JldHVybiB7fTsKKworfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmgKaW5kZXggYWNlY2U2ZS4uNTAxZDJlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9k
dWxlLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIEluamVjdGVkU2NyaXB0Q2FudmFz
TW9kdWxlKCk7CiAgICAgCiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIHJldHVybnNPYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICBzdGF0aWMgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUgbW9kdWxlRm9yU3RhdGUoSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpFeGVjU3RhdGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCAxMjc2YzQ1Li5j
Yjg2NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcApAQCAtMjksMTQgKzI5LDE1IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
TWFuYWdlci5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKwogI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuaCIKKyNpbmNsdWRlICJQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRP
YmplY3QuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTQ3LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpjcmVhdGVGb3JQYWdlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluamVjdGVk
U2NyaXB0TWFuYWdlcigmSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRX
aW5kb3cpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFn
ZXIoJkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KSk7CiB9
CiAKIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmNyZWF0ZUZvcldvcmtlcigpCkBAIC0xNzgsOSArMTc5LDE1IEBAIEluamVjdGVkU2NyaXB0
IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoSlNDOjpFeGVjU3RhdGUq
IGluc3BlY3RlCiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2Jq
ZWN0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgaW5zcGVj
dGVkRXhlY1N0YXRlLCBpZCk7CiAgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVjdGVkU2Ny
aXB0T2JqZWN0LCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwogICAgIG1faWRUb0luamVj
dGVkU2NyaXB0LnNldChpZCwgcmVzdWx0KTsKKyAgICBkaWRDcmVhdGVJbmplY3RlZFNjcmlwdChy
ZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjpkaWRDcmVhdGVJbmplY3RlZFNjcmlwdChJbmplY3RlZFNjcmlwdCkKK3sKKyAgICAvLyBJ
bnRlbnRpb25hbGx5IGVtcHR5LiBUaGlzIGFsbG93cyBmb3Igc3ViY2xhc3NlcyB0byBpbmplY3Qg
YWRkaXRpb25hbCBzY3JpcHRzLgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDdiNDhkMzYuLmQ2MWZkMjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTMwLDcg
KzMwLDYgQEAKICNpZm5kZWYgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyX2gKICNkZWZpbmUgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyX2gKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtMzksNiArMzgsMTAgQEAgbmFtZXNwYWNlIERlcHJlY2F0ZWQg
ewogY2xhc3MgU2NyaXB0T2JqZWN0OwogfQogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNT
dGF0ZTsKK30KKwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7
CiB9CkBAIC01NCw3ICs1Nyw3IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBjcmVhdGVG
b3JQYWdlKCk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBj
cmVhdGVGb3JXb3JrZXIoKTsKLSAgICB+SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCk7CisgICAgdmly
dHVhbCB+SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCk7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsK
IApAQCAtNzEsOSArNzQsMTEgQEAgcHVibGljOgogICAgIHR5cGVkZWYgYm9vbCAoKkluc3BlY3Rl
ZFN0YXRlQWNjZXNzQ2hlY2spKEpTQzo6RXhlY1N0YXRlKik7CiAgICAgSW5zcGVjdGVkU3RhdGVB
Y2Nlc3NDaGVjayBpbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKCkgY29uc3QgeyByZXR1cm4gbV9p
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrOyB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAg
ZXhwbGljaXQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVJbmplY3RlZFNjcmlwdChJbmplY3RlZFNjcmlw
dCk7CiAKK3ByaXZhdGU6CiAgICAgU3RyaW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7CiAgICAg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBKU0M6OkV4ZWNTdGF0ZSosIGludCBpZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCmluZGV4IDkyNjhlZGYuLjA3
OTdiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TW9kdWxlLmNwcApAQCAtNTIsNiArNTIsMTEgQEAgSW5qZWN0ZWRTY3JpcHRNb2R1bGU6OkluamVj
dGVkU2NyaXB0TW9kdWxlKGNvbnN0IFN0cmluZyYgbmFtZSkKIHZvaWQgSW5qZWN0ZWRTY3JpcHRN
b2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLCBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUpCiB7CiAgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2Ny
aXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICBlbnN1cmVJbmplY3RlZChpbmplY3RlZFNjcmlwdE1h
bmFnZXIsIGluamVjdGVkU2NyaXB0KTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6
ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0KQorewogICAgIEFTU0VSVCghaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1
ZSgpKQogICAgICAgICByZXR1cm47CkBAIC02NywxNCArNzIsMTYgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE0KICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmFtZSgpKTsKICAgICAg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlKCkpOwogICAgICAgICByZXN1bHRWYWx1
ZSA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwg
aGFkRXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGhhZEV4Y2VwdGlvbiB8fCByZXN1bHRWYWx1ZS5o
YXNOb1ZhbHVlKCkgfHwgIXJlc3VsdFZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGhh
ZEV4Y2VwdGlvbiB8fCAocmV0dXJuc09iamVjdCgpICYmIChyZXN1bHRWYWx1ZS5oYXNOb1ZhbHVl
KCkgfHwgIXJlc3VsdFZhbHVlLmlzT2JqZWN0KCkpKSkgewogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgbW9kdWxlT2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1
bHRWYWx1ZSk7Ci0gICAgaW5pdGlhbGl6ZShtb2R1bGVPYmplY3QsIGluamVjdGVkU2NyaXB0TWFu
YWdlci0+aW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaygpKTsKKyAgICBpZiAocmV0dXJuc09iamVj
dCgpKSB7CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBtb2R1bGVPYmplY3QoaW5q
ZWN0ZWRTY3JpcHQuc2NyaXB0U3RhdGUoKSwgcmVzdWx0VmFsdWUpOworICAgICAgICBpbml0aWFs
aXplKG1vZHVsZU9iamVjdCwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrKCkpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaAppbmRleCA5M2Zi
MTdiLi5mZWJhMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUuaApAQCAtMzEsMTkgKzMxLDIxIEBACiAjaWZuZGVmIEluamVjdGVkU2NyaXB0
TW9kdWxlX2gKICNkZWZpbmUgSW5qZWN0ZWRTY3JpcHRNb2R1bGVfaAogCisjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEJhc2UuaCIKICNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYg
RU5BQkxFKElOU1BFQ1RPUikKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCiBjbGFzcyBJbmplY3Rl
ZFNjcmlwdE1vZHVsZSA6IHB1YmxpYyBJbmplY3RlZFNjcmlwdEJhc2UgewogcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIHNvdXJjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmV0
dXJuc09iamVjdCgpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIC8vIERvIG5vdCBleHBv
c2UgY29uc3RydWN0b3IgaW4gdGhlIGNoaWxkIGNsYXNzZXMgYXMgd2VsbC4gSW5zdGVhZCBwcm92
aWRlCkBAIC01MSwxMCArNTMsMTEgQEAgcHJvdGVjdGVkOgogICAgIC8vIGFuZCBjYWxsIGl0cyBl
bnN1cmVJbmplY3RlZCgpIG1ldGhvZCBpbW1lZGlhdGVseS4KICAgICBJbmplY3RlZFNjcmlwdE1v
ZHVsZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZvaWQgZW5zdXJlSW5qZWN0ZWQoSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpFeGVjU3RhdGUqKTsKKyAgICB2b2lkIGVuc3VyZUluamVj
dGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluamVjdGVkU2NyaXB0KTsKIH07CiAKLSNlbmRp
ZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qcwppbmRleCAxODdhZDE0Li4yMDY0NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC0zMCw1MSArMzAsMTUgQEAK
IAogLyoqCiAgKiBAcGFyYW0ge0luamVjdGVkU2NyaXB0SG9zdH0gSW5qZWN0ZWRTY3JpcHRIb3N0
Ci0gKiBAcGFyYW0ge1dpbmRvd30gaW5zcGVjdGVkV2luZG93CisgKiBAcGFyYW0ge0dsb2JhbE9i
amVjdH0gaW5zcGVjdGVkR2xvYmFsT2JqZWN0CiAgKiBAcGFyYW0ge251bWJlcn0gaW5qZWN0ZWRT
Y3JpcHRJZAogICovCi0oZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkV2lu
ZG93LCBpbmplY3RlZFNjcmlwdElkKSB7CisoZnVuY3Rpb24gKEluamVjdGVkU2NyaXB0SG9zdCwg
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBpbmplY3RlZFNjcmlwdElkKSB7CiAKIC8vIFByb3RlY3Qg
YWdhaW5zdCBPYmplY3Qgb3ZlcndyaXR0ZW4gYnkgdGhlIHVzZXIgY29kZS4KIHZhciBPYmplY3Qg
PSB7fS5jb25zdHJ1Y3RvcjsKIAogLyoqCi0gKiBAcGFyYW0ge0FyZ3VtZW50c30gYXJyYXkKLSAq
IEBwYXJhbSB7bnVtYmVyPX0gaW5kZXgKLSAqIEByZXR1cm4ge0FycmF5LjwqPn0KLSAqLwotZnVu
Y3Rpb24gc2xpY2UoYXJyYXksIGluZGV4KQotewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICBm
b3IgKHZhciBpID0gaW5kZXggfHwgMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQotICAgICAgICBy
ZXN1bHQucHVzaChhcnJheVtpXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoqCi0gKiBQ
bGVhc2UgdXNlIHRoaXMgYmluZCwgbm90IHRoZSBvbmUgZnJvbSBGdW5jdGlvbi5wcm90b3R5cGUK
LSAqIEBwYXJhbSB7ZnVuY3Rpb24oLi4uKX0gZnVuYwotICogQHBhcmFtIHtPYmplY3R9IHRoaXNP
YmplY3QKLSAqIEBwYXJhbSB7Li4ubnVtYmVyfSB2YXJfYXJncwotICovCi1mdW5jdGlvbiBiaW5k
KGZ1bmMsIHRoaXNPYmplY3QsIHZhcl9hcmdzKQotewotICAgIHZhciBhcmdzID0gc2xpY2UoYXJn
dW1lbnRzLCAyKTsKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7Li4ubnVtYmVyfSB2YXJfYXJn
cwotICAgICAqLwotICAgIGZ1bmN0aW9uIGJvdW5kKHZhcl9hcmdzKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGZ1bmMuYXBwbHkodGhpc09iamVjdCwgYXJncy5jb25jYXQoc2xpY2UoYXJndW1lbnRz
KSkpOwotICAgIH0KLSAgICBib3VuZC50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBy
ZXR1cm4gImJvdW5kOiAiICsgZnVuYzsKLSAgICB9OwotICAgIHJldHVybiBib3VuZDsKLX0KLQot
LyoqCiAgKiBAY29uc3RydWN0b3IKICAqLwogdmFyIEluamVjdGVkU2NyaXB0ID0gZnVuY3Rpb24o
KQpAQCAtMTExLDEzICs3NSwxMyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAg
LyoqCiAgICAgICogQHBhcmFtIHsqfSBvYmplY3QKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZ3Jv
dXBOYW1lCi0gICAgICogQHBhcmFtIHtib29sZWFufSBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cK
KyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhbkFjY2Vzc0luc3BlY3RlZEdsb2JhbE9iamVjdAog
ICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZ2VuZXJhdGVQcmV2aWV3CiAgICAgICogQHJldHVybiB7
IVJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3R9CiAgICAgICovCi0gICAgd3JhcE9iamVjdDogZnVu
Y3Rpb24ob2JqZWN0LCBncm91cE5hbWUsIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdywgZ2VuZXJh
dGVQcmV2aWV3KQorICAgIHdyYXBPYmplY3Q6IGZ1bmN0aW9uKG9iamVjdCwgZ3JvdXBOYW1lLCBj
YW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGdlbmVyYXRlUHJldmlldykKICAgICB7Ci0g
ICAgICAgIGlmIChjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cpCisgICAgICAgIGlmIChjYW5BY2Nl
c3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd3JhcE9i
amVjdChvYmplY3QsIGdyb3VwTmFtZSwgZmFsc2UsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAg
IHJldHVybiB0aGlzLl9mYWxsYmFja1dyYXBwZXIob2JqZWN0KTsKICAgICB9LApAQCAtMTM4LDE0
ICsxMDIsMTQgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAv
KioKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdworICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FuQWNjZXNzSW5zcGVjdGVkR2xvYmFsT2JqZWN0CiAgICAg
ICogQHBhcmFtIHtPYmplY3R9IHRhYmxlCiAgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPnxz
dHJpbmd8Ym9vbGVhbn0gY29sdW1ucwogICAgICAqIEByZXR1cm4geyFSdW50aW1lQWdlbnQuUmVt
b3RlT2JqZWN0fQogICAgICAqLwotICAgIHdyYXBUYWJsZTogZnVuY3Rpb24oY2FuQWNjZXNzSW5z
cGVjdGVkV2luZG93LCB0YWJsZSwgY29sdW1ucykKKyAgICB3cmFwVGFibGU6IGZ1bmN0aW9uKGNh
bkFjY2Vzc0luc3BlY3RlZEdsb2JhbE9iamVjdCwgdGFibGUsIGNvbHVtbnMpCiAgICAgewotICAg
ICAgICBpZiAoIWNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdykKKyAgICAgICAgaWYgKCFjYW5BY2Nl
c3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZmFsbGJh
Y2tXcmFwcGVyKHRhYmxlKTsKICAgICAgICAgdmFyIGNvbHVtbk5hbWVzID0gbnVsbDsKICAgICAg
ICAgaWYgKHR5cGVvZiBjb2x1bW5zID09PSAic3RyaW5nIikKQEAgLTI3Miw3ICsyMzYsOSBAQCBJ
bmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBhcmdzQXJyYXkgPSBJbmpl
Y3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgYXJncyArICIpIik7CiAgICAgICAgIHZhciBy
ZXN1bHQgPSB0aGlzW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMsIGFyZ3NBcnJheSk7CiAgICAgICAg
IGlmICh0eXBlb2YgcmVzdWx0ID09PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAgaW5zcGVj
dGVkV2luZG93LmNvbnNvbGUuZXJyb3IoIldlYiBJbnNwZWN0b3IgZXJyb3I6IEluamVjdGVkU2Ny
aXB0LiVzIHJldHVybnMgdW5kZWZpbmVkIiwgbWV0aG9kTmFtZSk7CisgICAgICAgICAgICAvLyBG
SVhNRTogSlMgQ29udGV4dCBpbnNwZWN0aW9uIGN1cnJlbnRseSBkb2VzIG5vdCBoYXZlIGEgZ2xv
YmFsLmNvbnNvbGUgb2JqZWN0LgorICAgICAgICAgICAgaWYgKGluc3BlY3RlZEdsb2JhbE9iamVj
dC5jb25zb2xlKQorICAgICAgICAgICAgICAgIGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xl
LmVycm9yKCJXZWIgSW5zcGVjdG9yIGVycm9yOiBJbmplY3RlZFNjcmlwdC4lcyByZXR1cm5zIHVu
ZGVmaW5lZCIsIG1ldGhvZE5hbWUpOwogICAgICAgICAgICAgcmVzdWx0ID0gbnVsbDsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTU0LDcgKzUyMCwxMyBAQCBJbmplY3Rl
ZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2V2YWx1YXRlT246IGZ1bmN0aW9u
KGV2YWxGdW5jdGlvbiwgb2JqZWN0LCBvYmplY3RHcm91cCwgZXhwcmVzc2lvbiwgaXNFdmFsT25D
YWxsRnJhbWUsIGluamVjdENvbW1hbmRMaW5lQVBJKQogICAgIHsKLSAgICAgICAgdmFyIGNvbW1h
bmRMaW5lQVBJID0gaW5qZWN0Q29tbWFuZExpbmVBUEkgPyBuZXcgQ29tbWFuZExpbmVBUEkodGhp
cy5fY29tbWFuZExpbmVBUElJbXBsLCBpc0V2YWxPbkNhbGxGcmFtZSA/IG9iamVjdCA6IG51bGwp
IDogbnVsbDsKKyAgICAgICAgdmFyIGNvbW1hbmRMaW5lQVBJID0gbnVsbDsKKyAgICAgICAgaWYg
KGluamVjdENvbW1hbmRMaW5lQVBJKSB7CisgICAgICAgICAgICBpZiAodGhpcy5Db21tYW5kTGlu
ZUFQSSkKKyAgICAgICAgICAgICAgICBjb21tYW5kTGluZUFQSSA9IG5ldyB0aGlzLkNvbW1hbmRM
aW5lQVBJKHRoaXMuX2NvbW1hbmRMaW5lQVBJSW1wbCwgaXNFdmFsT25DYWxsRnJhbWUgPyBvYmpl
Y3QgOiBudWxsKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21tYW5kTGlu
ZUFQSSA9IG5ldyBCYXNpY0NvbW1hbmRMaW5lQVBJOworICAgICAgICB9CiAKICAgICAgICAgaWYg
KGlzRXZhbE9uQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICAvLyBXZSBjYW4gb25seSB1c2UgdGhp
cyBhcHByb2FjaCBpZiB0aGUgZXZhbHVhdGUgZnVuY3Rpb24gaXMgdGhlIHRydWUgJ2V2YWwnLiBU
aGF0IGFsbG93cyB1cyB0byB1c2UgaXQgd2l0aApAQCAtNTYyLDcgKzUzNCwxMSBAQCBJbmplY3Rl
ZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAvLyBjcmVhdGUgdGhhdCBwcm92aWRl
cyB0aGUgY29tbWFuZCBsaW5lIEFQSXMuCiAKICAgICAgICAgICAgIHZhciBwYXJhbWV0ZXJzID0g
W0luamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSwgZXhwcmVzc2lvbl07Ci0gICAgICAgICAgICB2
YXIgZXhwcmVzc2lvbkZ1bmN0aW9uQm9keSA9ICJ2YXIgX19vcmlnaW5hbEV2YWwgPSB3aW5kb3cu
ZXZhbDsgd2luZG93LmV2YWwgPSBfX2V2YWw7IHRyeSB7IHJldHVybiBldmFsKF9fY3VycmVudEV4
cHJlc3Npb24pOyB9IGZpbmFsbHkgeyB3aW5kb3cuZXZhbCA9IF9fb3JpZ2luYWxFdmFsOyB9IjsK
KyAgICAgICAgICAgIHZhciBleHByZXNzaW9uRnVuY3Rpb25Cb2R5ID0gIiIgKworICAgICAgICAg
ICAgICAgICJ2YXIgZ2xvYmFsID0gRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKSB8fCAoMSwgZXZh
bCkoJ3RoaXMnKTsiICsKKyAgICAgICAgICAgICAgICAidmFyIF9fb3JpZ2luYWxFdmFsID0gZ2xv
YmFsLmV2YWw7IGdsb2JhbC5ldmFsID0gX19ldmFsOyIgKworICAgICAgICAgICAgICAgICJ0cnkg
eyByZXR1cm4gZXZhbChfX2N1cnJlbnRFeHByZXNzaW9uKTsgfSIgKworICAgICAgICAgICAgICAg
ICJmaW5hbGx5IHsgZ2xvYmFsLmV2YWwgPSBfX29yaWdpbmFsRXZhbDsgfSI7CiAKICAgICAgICAg
ICAgIGlmIChjb21tYW5kTGluZUFQSSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIHVz
aW5nIGEgJ3dpdGgnIHN0YXRlbWVudCAod2hpY2ggZmFpbHMgaW4gc3RyaWN0IG1vZGUgYW5kIHJl
cXVpcmVzIGluamVjdGluZyB0aGUgQVBJIG9iamVjdCkKQEAgLTU5NiwyMSArNTcyLDI5IEBAIElu
amVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gV2hlbiBub3QgZXZhbHVhdGlu
ZyBvbiBhIGNhbGwgZnJhbWUgd2UgdXNlIGEgJ3dpdGgnIHN0YXRlbWVudCB0byBhbGxvdyB2YXIg
YW5kIGZ1bmN0aW9uIHN0YXRlbWVudHMgdG8gbGVhawogICAgICAgICAvLyBpbnRvIHRoZSBnbG9i
YWwgc2NvcGUuIFRoaXMgYWxsb3cgdGhlbSB0byBzdGljayBhcm91bmQgYmV0d2VlbiBldmFsdWF0
aW9ucy4KIAorICAgICAgICAvLyBGSVhNRTogSlMgQ29udGV4dCBpbnNwZWN0aW9uIGN1cnJlbnRs
eSBkb2VzIG5vdCBoYXZlIGEgZ2xvYmFsLmNvbnNvbGUgb2JqZWN0LgogICAgICAgICB0cnkgewot
ICAgICAgICAgICAgaWYgKGNvbW1hbmRMaW5lQVBJICYmIGluc3BlY3RlZFdpbmRvdy5jb25zb2xl
KSB7Ci0gICAgICAgICAgICAgICAgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuX19jb21tYW5kTGlu
ZUFQSSA9IGNvbW1hbmRMaW5lQVBJOwotICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSAid2l0
aCAoKHdpbmRvdyAmJiB3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS5fX2NvbW1hbmRM
aW5lQVBJKSB8fCB7fSkgeyAiICsgZXhwcmVzc2lvbiArICJcbn0iOworICAgICAgICAgICAgaWYg
KGNvbW1hbmRMaW5lQVBJKSB7CisgICAgICAgICAgICAgICAgaWYgKGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlKQorICAgICAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3Qu
Y29uc29sZS5fX2NvbW1hbmRMaW5lQVBJID0gY29tbWFuZExpbmVBUEk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuX19jb21t
YW5kTGluZUFQSSA9IGNvbW1hbmRMaW5lQVBJOworICAgICAgICAgICAgICAgIGV4cHJlc3Npb24g
PSAid2l0aCAoKHRoaXMgJiYgKHRoaXMuY29uc29sZSA/IHRoaXMuY29uc29sZS5fX2NvbW1hbmRM
aW5lQVBJIDogdGhpcy5fX2NvbW1hbmRMaW5lQVBJKSkgfHwge30pIHsgIiArIGV4cHJlc3Npb24g
KyAiXG59IjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGV2YWxG
dW5jdGlvbi5jYWxsKG9iamVjdCwgZXhwcmVzc2lvbik7CisgICAgICAgICAgICB2YXIgcmVzdWx0
ID0gZXZhbEZ1bmN0aW9uLmNhbGwoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBleHByZXNzaW9uKTsK
IAogICAgICAgICAgICAgaWYgKG9iamVjdEdyb3VwID09PSAiY29uc29sZSIpCiAgICAgICAgICAg
ICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHJlc3VsdDsKIAogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGlmIChjb21tYW5kTGluZUFQ
SSAmJiBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZSkKLSAgICAgICAgICAgICAgICBkZWxldGUgaW5z
cGVjdGVkV2luZG93LmNvbnNvbGUuX19jb21tYW5kTGluZUFQSTsKKyAgICAgICAgICAgIGlmIChj
b21tYW5kTGluZUFQSSkgeworICAgICAgICAgICAgICAgIGlmIChpbnNwZWN0ZWRHbG9iYWxPYmpl
Y3QuY29uc29sZSkKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGluc3BlY3RlZEdsb2JhbE9i
amVjdC5jb25zb2xlLl9fY29tbWFuZExpbmVBUEk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBkZWxldGUgaW5zcGVjdGVkR2xvYmFsT2JqZWN0Ll9fY29tbWFuZExp
bmVBUEk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCkBAIC03MTUsMTAgKzY5
OSwxMiBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9tb2R1bGVzW25hbWVdOwogICAgICAgICB2YXIgbW9kdWxlRnVuY3Rpb24gPSBJbmplY3RlZFNj
cmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc291cmNlICsgIikiKTsKICAgICAgICAgaWYgKHR5cGVv
ZiBtb2R1bGVGdW5jdGlvbiAhPT0gImZ1bmN0aW9uIikgewotICAgICAgICAgICAgaW5zcGVjdGVk
V2luZG93LmNvbnNvbGUuZXJyb3IoIldlYiBJbnNwZWN0b3IgZXJyb3I6IEEgZnVuY3Rpb24gd2Fz
IGV4cGVjdGVkIGZvciBtb2R1bGUgJXMgZXZhbHVhdGlvbiIsIG5hbWUpOworICAgICAgICAgICAg
Ly8gRklYTUU6IEpTIENvbnRleHQgaW5zcGVjdGlvbiBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZSBh
IGdsb2JhbC5jb25zb2xlIG9iamVjdC4KKyAgICAgICAgICAgIGlmIChpbnNwZWN0ZWRHbG9iYWxP
YmplY3QuY29uc29sZSkKKyAgICAgICAgICAgICAgICBpbnNwZWN0ZWRHbG9iYWxPYmplY3QuY29u
c29sZS5lcnJvcigiV2ViIEluc3BlY3RvciBlcnJvcjogQSBmdW5jdGlvbiB3YXMgZXhwZWN0ZWQg
Zm9yIG1vZHVsZSAlcyBldmFsdWF0aW9uIiwgbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKICAgICAgICAgfQotICAgICAgICB2YXIgbW9kdWxlID0gbW9kdWxlRnVuY3Rpb24uY2FsbChp
bnNwZWN0ZWRXaW5kb3csIEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkV2luZG93LCBpbmpl
Y3RlZFNjcmlwdElkKTsKKyAgICAgICAgdmFyIG1vZHVsZSA9IG1vZHVsZUZ1bmN0aW9uLmNhbGwo
aW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZEdsb2Jh
bE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX21vZHVsZXNb
bmFtZV0gPSBtb2R1bGU7CiAgICAgICAgIHJldHVybiBtb2R1bGU7CiAgICAgfSwKQEAgLTgzNiw3
ICs4MjIsNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3Rv
U3RyaW5nOiBmdW5jdGlvbihvYmopCiAgICAgewotICAgICAgICAvLyBXZSBkb24ndCB1c2UgU3Ry
aW5nKG9iaikgYmVjYXVzZSBpbnNwZWN0ZWRXaW5kb3cuU3RyaW5nIGlzIHVuZGVmaW5lZCBpZiBv
d25pbmcgZnJhbWUgbmF2aWdhdGVkIHRvIGFub3RoZXIgcGFnZS4KKyAgICAgICAgLy8gV2UgZG9u
J3QgdXNlIFN0cmluZyhvYmopIGJlY2F1c2UgaW5zcGVjdGVkR2xvYmFsT2JqZWN0LlN0cmluZyBp
cyB1bmRlZmluZWQgaWYgb3duaW5nIGZyYW1lIG5hdmlnYXRlZCB0byBhbm90aGVyIHBhZ2UuCiAg
ICAgICAgIHJldHVybiAiIiArIG9iajsKICAgICB9CiB9CkBAIC0xMDc3LDI3NyArMTA2MywxMCBA
QCBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fY3JlYXRlU2NvcGVKc29uID0gZnVuY3Rp
b24oc2NvcGVUeXBlQ29kZSwgc2NvcGVPYgogICAgIH07CiB9CiAKLS8qKgotICogQGNvbnN0cnVj
dG9yCi0gKiBAcGFyYW0ge0NvbW1hbmRMaW5lQVBJSW1wbH0gY29tbWFuZExpbmVBUElJbXBsCi0g
KiBAcGFyYW0ge09iamVjdH0gY2FsbEZyYW1lCi0gKi8KLWZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJ
KGNvbW1hbmRMaW5lQVBJSW1wbCwgY2FsbEZyYW1lKQorZnVuY3Rpb24gQmFzaWNDb21tYW5kTGlu
ZUFQSSgpCiB7Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lbWJlcgotICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgZnVuY3Rpb24gaW5TY29wZVZhcmlhYmxl
cyhtZW1iZXIpCi0gICAgewotICAgICAgICBpZiAoIWNhbGxGcmFtZSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICB2YXIgc2NvcGVDaGFpbiA9IGNhbGxGcmFtZS5zY29wZUNo
YWluOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjb3BlQ2hhaW4ubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIGlmIChtZW1iZXIgaW4gc2NvcGVDaGFpbltpXSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhl
IG1ldGhvZCBmb3Igd2hpY2ggYSB0b1N0cmluZyBtZXRob2Qgc2hvdWxkIGJlIGdlbmVyYXRlZC4K
LSAgICAgKiBAcmV0dXJuIHtmdW5jdGlvbigpOnN0cmluZ30KLSAgICAgKi8KLSAgICBmdW5jdGlv
biBjdXN0b21Ub1N0cmluZ01ldGhvZChuYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uICgpIHsgcmV0dXJuICJmdW5jdGlvbiAiICsgbmFtZSArICIoKSB7IFtDb21tYW5kIExpbmUg
QVBJXSB9IjsgfTsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IENvbW1hbmRMaW5l
QVBJLm1lbWJlcnNfLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBtZW1iZXIgPSBDb21tYW5k
TGluZUFQSS5tZW1iZXJzX1tpXTsKLSAgICAgICAgaWYgKG1lbWJlciBpbiBpbnNwZWN0ZWRXaW5k
b3cgfHwgaW5TY29wZVZhcmlhYmxlcyhtZW1iZXIpKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgdGhpc1ttZW1iZXJdID0gYmluZChjb21tYW5kTGluZUFQSUltcGxbbWVtYmVyXSwg
Y29tbWFuZExpbmVBUElJbXBsKTsKLSAgICAgICAgdGhpc1ttZW1iZXJdLnRvU3RyaW5nID0gY3Vz
dG9tVG9TdHJpbmdNZXRob2QobWVtYmVyKTsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDU7ICsraSkgewotICAgICAgICB2YXIgbWVtYmVyID0gIiQiICsgaTsKLSAgICAgICAgaWYg
KG1lbWJlciBpbiBpbnNwZWN0ZWRXaW5kb3cgfHwgaW5TY29wZVZhcmlhYmxlcyhtZW1iZXIpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgdGhpcy5fX2RlZmluZUdldHRlcl9fKCIk
IiArIGksIGJpbmQoY29tbWFuZExpbmVBUElJbXBsLl9pbnNwZWN0ZWRPYmplY3QsIGNvbW1hbmRM
aW5lQVBJSW1wbCwgaSkpOwotICAgIH0KLQogICAgIHRoaXMuJF8gPSBpbmplY3RlZFNjcmlwdC5f
bGFzdFJlc3VsdDsKIH0KIAotLy8gTk9URTogUGxlYXNlIGtlZXAgdGhlIGxpc3Qgb2YgQVBJIG1l
dGhvZHMgYmVsb3cgc25jaHJvbml6ZWQgdG8gdGhhdCBpbiBXZWJJbnNwZWN0b3IuUnVudGltZU1v
ZGVsIQotLyoqCi0gKiBAdHlwZSB7QXJyYXkuPHN0cmluZz59Ci0gKiBAY29uc3QKLSAqLwotQ29t
bWFuZExpbmVBUEkubWVtYmVyc18gPSBbCi0gICAgIiQiLCAiJCQiLCAiJHgiLCAiZGlyIiwgImRp
cnhtbCIsICJrZXlzIiwgInZhbHVlcyIsICJwcm9maWxlIiwgInByb2ZpbGVFbmQiLAotICAgICJt
b25pdG9yRXZlbnRzIiwgInVubW9uaXRvckV2ZW50cyIsICJpbnNwZWN0IiwgImNvcHkiLCAiY2xl
YXIiLCAiZ2V0RXZlbnRMaXN0ZW5lcnMiCi1dOwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICov
Ci1mdW5jdGlvbiBDb21tYW5kTGluZUFQSUltcGwoKQotewotfQotCi1Db21tYW5kTGluZUFQSUlt
cGwucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3Rv
cgotICAgICAqIEBwYXJhbSB7Tm9kZT19IHN0YXJ0Ci0gICAgICovCi0gICAgJDogZnVuY3Rpb24g
KHNlbGVjdG9yLCBzdGFydCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9jYW5RdWVyeVNlbGVj
dG9yT25Ob2RlKHN0YXJ0KSkKLSAgICAgICAgICAgIHJldHVybiBzdGFydC5xdWVyeVNlbGVjdG9y
KHNlbGVjdG9yKTsKLQotICAgICAgICB2YXIgcmVzdWx0ID0gaW5zcGVjdGVkV2luZG93LmRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgaWYgKHNlbGVjdG9yICYmIHNlbGVjdG9yWzBd
ICE9PSAiIyIpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGluc3BlY3RlZFdpbmRvdy5kb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChzZWxlY3Rvcik7Ci0gICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0g
ICAgICAgICAgICAgICAgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUud2FybigiVGhlIGNvbnNvbGUg
ZnVuY3Rpb24gJCgpIGhhcyBjaGFuZ2VkIGZyb20gJD1nZXRFbGVtZW50QnlJZChpZCkgdG8gJD1x
dWVyeVNlbGVjdG9yKHNlbGVjdG9yKS4gWW91IG1pZ2h0IHRyeSAkKFwiIyVzXCIpIiwgc2VsZWN0
b3IgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBA
cGFyYW0ge3N0cmluZ30gc2VsZWN0b3IKLSAgICAgKiBAcGFyYW0ge05vZGU9fSBzdGFydAotICAg
ICAqLwotICAgICQkOiBmdW5jdGlvbiAoc2VsZWN0b3IsIHN0YXJ0KQotICAgIHsKLSAgICAgICAg
aWYgKHRoaXMuX2NhblF1ZXJ5U2VsZWN0b3JPbk5vZGUoc3RhcnQpKQotICAgICAgICAgICAgcmV0
dXJuIHN0YXJ0LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwotICAgICAgICByZXR1cm4gaW5z
cGVjdGVkV2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwotICAgIH0s
Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge05vZGU9fSBub2RlCi0gICAgICogQHJldHVybiB7
Ym9vbGVhbn0KLSAgICAgKi8KLSAgICBfY2FuUXVlcnlTZWxlY3Rvck9uTm9kZTogZnVuY3Rpb24o
bm9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhIW5vZGUgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0
LnR5cGUobm9kZSkgPT09ICJub2RlIiAmJiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5U
X05PREUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9OT0RFIHx8IG5vZGUubm9k
ZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSk7Ci0gICAgfSwKLQotICAgIC8q
KgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB4cGF0aAotICAgICAqIEBwYXJhbSB7Tm9kZT19IGNv
bnRleHQKLSAgICAgKi8KLSAgICAkeDogZnVuY3Rpb24oeHBhdGgsIGNvbnRleHQpCi0gICAgewot
ICAgICAgICB2YXIgZG9jID0gKGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50KSB8fCBp
bnNwZWN0ZWRXaW5kb3cuZG9jdW1lbnQ7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2MuZXZhbHVh
dGUoeHBhdGgsIGNvbnRleHQgfHwgZG9jLCBudWxsLCBYUGF0aFJlc3VsdC5BTllfVFlQRSwgbnVs
bCk7Ci0gICAgICAgIHN3aXRjaCAocmVzdWx0LnJlc3VsdFR5cGUpIHsKLSAgICAgICAgY2FzZSBY
UGF0aFJlc3VsdC5OVU1CRVJfVFlQRToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQubnVtYmVy
VmFsdWU7Ci0gICAgICAgIGNhc2UgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEU6Ci0gICAgICAgICAg
ICByZXR1cm4gcmVzdWx0LnN0cmluZ1ZhbHVlOwotICAgICAgICBjYXNlIFhQYXRoUmVzdWx0LkJP
T0xFQU5fVFlQRToKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQuYm9vbGVhblZhbHVlOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdmFyIG5vZGVzID0gW107Ci0gICAgICAgICAgICB2
YXIgbm9kZTsKLSAgICAgICAgICAgIHdoaWxlIChub2RlID0gcmVzdWx0Lml0ZXJhdGVOZXh0KCkp
Ci0gICAgICAgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsKLSAgICAgICAgICAgIHJldHVybiBu
b2RlczsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBkaXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5kaXIuYXBwbHkoaW5zcGVjdGVk
V2luZG93LmNvbnNvbGUsIGFyZ3VtZW50cykKLSAgICB9LAotCi0gICAgZGlyeG1sOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICByZXR1cm4gaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuZGlyeG1s
LmFwcGx5KGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLCBhcmd1bWVudHMpCi0gICAgfSwKLQotICAg
IGtleXM6IGZ1bmN0aW9uKG9iamVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBPYmplY3Qua2V5
cyhvYmplY3QpOwotICAgIH0sCi0KLSAgICB2YWx1ZXM6IGZ1bmN0aW9uKG9iamVjdCkKLSAgICB7
Ci0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgZm9yICh2YXIga2V5IGluIG9iamVj
dCkKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKG9iamVjdFtrZXldKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9LAotCi0gICAgcHJvZmlsZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLnByb2ZpbGUuYXBwbHkoaW5zcGVjdGVk
V2luZG93LmNvbnNvbGUsIGFyZ3VtZW50cykKLSAgICB9LAotCi0gICAgcHJvZmlsZUVuZDogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLnBy
b2ZpbGVFbmQuYXBwbHkoaW5zcGVjdGVkV2luZG93LmNvbnNvbGUsIGFyZ3VtZW50cykKLSAgICB9
LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdAotICAgICAqIEBwYXJh
bSB7QXJyYXkuPHN0cmluZz58c3RyaW5nPX0gdHlwZXMKLSAgICAgKi8KLSAgICBtb25pdG9yRXZl
bnRzOiBmdW5jdGlvbihvYmplY3QsIHR5cGVzKQotICAgIHsKLSAgICAgICAgaWYgKCFvYmplY3Qg
fHwgIW9iamVjdC5hZGRFdmVudExpc3RlbmVyIHx8ICFvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5l
cikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdHlwZXMgPSB0aGlzLl9ub3JtYWxpemVF
dmVudFR5cGVzKHR5cGVzKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgb2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXNb
aV0sIHRoaXMuX2xvZ0V2ZW50LCBmYWxzZSk7Ci0gICAgICAgICAgICBvYmplY3QuYWRkRXZlbnRM
aXN0ZW5lcih0eXBlc1tpXSwgdGhpcy5fbG9nRXZlbnQsIGZhbHNlKTsKLSAgICAgICAgfQotICAg
IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0Ci0gICAgICogQHBh
cmFtIHtBcnJheS48c3RyaW5nPnxzdHJpbmc9fSB0eXBlcwotICAgICAqLwotICAgIHVubW9uaXRv
ckV2ZW50czogZnVuY3Rpb24ob2JqZWN0LCB0eXBlcykKLSAgICB7Ci0gICAgICAgIGlmICghb2Jq
ZWN0IHx8ICFvYmplY3QuYWRkRXZlbnRMaXN0ZW5lciB8fCAhb2JqZWN0LnJlbW92ZUV2ZW50TGlz
dGVuZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHR5cGVzID0gdGhpcy5fbm9ybWFs
aXplRXZlbnRUeXBlcyh0eXBlcyk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBvYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBl
c1tpXSwgdGhpcy5fbG9nRXZlbnQsIGZhbHNlKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICog
QHBhcmFtIHsqfSBvYmplY3QKLSAgICAgKiBAcmV0dXJuIHsqfQotICAgICAqLwotICAgIGluc3Bl
Y3Q6IGZ1bmN0aW9uKG9iamVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dC5faW5zcGVjdChvYmplY3QpOwotICAgIH0sCi0KLSAgICBjb3B5OiBmdW5jdGlvbihvYmplY3Qp
Ci0gICAgewotICAgICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuX3N1YnR5cGUob2JqZWN0KSA9PT0g
Im5vZGUiKQotICAgICAgICAgICAgb2JqZWN0ID0gb2JqZWN0Lm91dGVySFRNTDsKLSAgICAgICAg
SW5qZWN0ZWRTY3JpcHRIb3N0LmNvcHlUZXh0KG9iamVjdCk7Ci0gICAgfSwKLQotICAgIGNsZWFy
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBJbmplY3RlZFNjcmlwdEhvc3QuY2xlYXJDb25z
b2xlTWVzc2FnZXMoKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtOb2RlfSBu
b2RlCi0gICAgICovCi0gICAgZ2V0RXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKG5vZGUpCi0gICAg
ewotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LmdldEV2ZW50TGlzdGVuZXJzKG5v
ZGUpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtCi0gICAg
ICovCi0gICAgX2luc3BlY3RlZE9iamVjdDogZnVuY3Rpb24obnVtKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0ZWRPYmplY3QobnVtKTsKLSAgICB9LAot
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPnxzdHJpbmc9fSB0eXBlcwot
ICAgICAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fQotICAgICAqLwotICAgIF9ub3JtYWxpemVF
dmVudFR5cGVzOiBmdW5jdGlvbih0eXBlcykKLSAgICB7Ci0gICAgICAgIGlmICh0eXBlb2YgdHlw
ZXMgPT09ICJ1bmRlZmluZWQiKQotICAgICAgICAgICAgdHlwZXMgPSBbICJtb3VzZSIsICJrZXki
LCAidG91Y2giLCAiY29udHJvbCIsICJsb2FkIiwgInVubG9hZCIsICJhYm9ydCIsICJlcnJvciIs
ICJzZWxlY3QiLCAiY2hhbmdlIiwgInN1Ym1pdCIsICJyZXNldCIsICJmb2N1cyIsICJibHVyIiwg
InJlc2l6ZSIsICJzY3JvbGwiLCAic2VhcmNoIiwgImRldmljZW1vdGlvbiIsICJkZXZpY2Vvcmll
bnRhdGlvbiIgXTsKLSAgICAgICAgZWxzZSBpZiAodHlwZW9mIHR5cGVzID09PSAic3RyaW5nIikK
LSAgICAgICAgICAgIHR5cGVzID0gWyB0eXBlcyBdOwotCi0gICAgICAgIHZhciByZXN1bHQgPSBb
XTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykgewotICAg
ICAgICAgICAgaWYgKHR5cGVzW2ldID09PSAibW91c2UiKQotICAgICAgICAgICAgICAgIHJlc3Vs
dC5zcGxpY2UoMCwgMCwgIm1vdXNlZG93biIsICJtb3VzZXVwIiwgImNsaWNrIiwgImRibGNsaWNr
IiwgIm1vdXNlbW92ZSIsICJtb3VzZW92ZXIiLCAibW91c2VvdXQiLCAibW91c2V3aGVlbCIpOwot
ICAgICAgICAgICAgZWxzZSBpZiAodHlwZXNbaV0gPT09ICJrZXkiKQotICAgICAgICAgICAgICAg
IHJlc3VsdC5zcGxpY2UoMCwgMCwgImtleWRvd24iLCAia2V5dXAiLCAia2V5cHJlc3MiLCAidGV4
dElucHV0Iik7Ci0gICAgICAgICAgICBlbHNlIGlmICh0eXBlc1tpXSA9PT0gInRvdWNoIikKLSAg
ICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAsICJ0b3VjaHN0YXJ0IiwgInRvdWNobW92
ZSIsICJ0b3VjaGVuZCIsICJ0b3VjaGNhbmNlbCIpOwotICAgICAgICAgICAgZWxzZSBpZiAodHlw
ZXNbaV0gPT09ICJjb250cm9sIikKLSAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKDAsIDAs
ICJyZXNpemUiLCAic2Nyb2xsIiwgInpvb20iLCAiZm9jdXMiLCAiYmx1ciIsICJzZWxlY3QiLCAi
Y2hhbmdlIiwgInN1Ym1pdCIsICJyZXNldCIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5wdXNoKHR5cGVzW2ldKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAot
ICAgICAqLwotICAgIF9sb2dFdmVudDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBp
bnNwZWN0ZWRXaW5kb3cuY29uc29sZS5sb2coZXZlbnQudHlwZSwgZXZlbnQpOwotICAgIH0KLX0K
LQotaW5qZWN0ZWRTY3JpcHQuX2NvbW1hbmRMaW5lQVBJSW1wbCA9IG5ldyBDb21tYW5kTGluZUFQ
SUltcGwoKTsKIHJldHVybiBpbmplY3RlZFNjcmlwdDsKIH0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAppbmRleCA1MzAwZDk1Li5mZTBiMzEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKQEAg
LTI1LDYgKzI1LDcgQEAKIAogLy8gVGhpcyBhbGwtaW4tb25lIGNwcCBmaWxlIGN1dHMgZG93biBv
biB0ZW1wbGF0ZSBibG9hdCB0byBhbGxvdyB1cyB0byBidWlsZCBvdXIgV2luZG93cyByZWxlYXNl
IGJ1aWxkLgogCisjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGUuY3BwIgogI2luY2x1ZGUg
IkNvbnNvbGVNZXNzYWdlLmNwcCIKICNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbHMuY3BwIgog
I2luY2x1ZGUgIkRPTUVkaXRvci5jcHAiCkBAIC03Myw2ICs3NCw3IEBACiAjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQWdlbnQuY3BwIgog
I2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmNwcCIKKyNpbmNsdWRlICJQYWdlSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcCIKICNpbmNsdWRlICJQYWdlUnVudGltZUFnZW50LmNwcCIKICNpbmNs
dWRlICJTY3JpcHRBcmd1bWVudHMuY3BwIgogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRl
eCAwNGQ0NzlkLi4wOGUzMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUNvbnNvbGUuaCIKICNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
aCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU1NTE3
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisK
KyNpbmNsdWRlICJDb21tYW5kTGluZUFQSU1vZHVsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3ZvaWQgUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlkQ3JlYXRlSW5qZWN0ZWRTY3Jp
cHQoSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQpCit7CisgICAgQ29tbWFuZExpbmVBUElN
b2R1bGU6OmluamVjdElmTmVlZGVkKHRoaXMsIGluamVjdGVkU2NyaXB0KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZmJlODcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlci5o
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXJfaAorI2RlZmluZSBQYWdl
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyX2gKKworI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2VJbmplY3RlZFNjcmlwdE1h
bmFnZXIgRklOQUwgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKEluc3BlY3RlZFN0YXRlQWNjZXNz
Q2hlY2sgYWNjZXNzQ2hlY2spIDogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGFjY2Vzc0NoZWNrKSB7
IH0KKyAgICB2aXJ0dWFsIH5QYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgeyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlSW5qZWN0ZWRTY3JpcHQoSW5qZWN0ZWRT
Y3JpcHQpIE9WRVJSSURFOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gIWRlZmluZWQoUGFnZUluamVjdGVkU2NyaXB0TWFuYWdlcl9oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IGExYjY3NzguLmRkMDU5ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAg
LTEyOSwxMiArMTI5LDEzIEBAIEluamVjdGVkU2NyaXB0IFBhZ2VSdW50aW1lQWdlbnQ6OmluamVj
dGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsCiAgICAgICAgIEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQ
YWdlLT5tYWluRnJhbWUoKSk7CiAgICAgICAgIEluamVjdGVkU2NyaXB0IHJlc3VsdCA9IGluamVj
dGVkU2NyaXB0TWFuYWdlcigpLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAgICAg
ICAgIGlmIChyZXN1bHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0g
IkludGVybmFsIGVycm9yOiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZC4i
OworICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBlcnJv
cjogbWFpbiB3b3JsZCBleGVjdXRpb24gY29udGV4dCBub3QgZm91bmQuIik7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQorCiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3JJZCgqZXhlY3V0aW9u
Q29udGV4dElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiRXhlY3V0aW9uIGNvbnRleHQgd2l0aCBnaXZlbiBpZCBub3QgZm91
bmQuIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJFeGVjdXRpb24gY29u
dGV4dCB3aXRoIGdpdmVuIGlkIG5vdCBmb3VuZC4iKTsKICAgICByZXR1cm4gaW5qZWN0ZWRTY3Jp
cHQ7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>