<?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>133395</bug_id>
          
          <creation_ts>2014-05-29 19:03:00 -0700</creation_ts>
          <short_desc>Web Inspector: debugger should be able to show variable types</short_desc>
          <delta_ts>2014-08-06 16:12:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.9</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1012550</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-05-29 19:03:00 -0700</bug_when>
    <thetext>Record runtime types of objects to show in the web inspector for debugging purposes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012553</commentid>
    <comment_count>1</comment_count>
      <attachid>232278</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-05-29 19:12:27 -0700</bug_when>
    <thetext>Created attachment 232278
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012554</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-05-29 19:12:52 -0700</bug_when>
    <thetext>Work in progress. Just the beginning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013424</commentid>
    <comment_count>3</comment_count>
      <attachid>232512</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-04 17:27:59 -0700</bug_when>
    <thetext>Created attachment 232512
Continued progress

The beginning of an interface between JSC high fidelity types and the Inspector implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013706</commentid>
    <comment_count>4</comment_count>
      <attachid>232596</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-05 18:24:55 -0700</bug_when>
    <thetext>Created attachment 232596
path

hover for types in inspector. Currenlty crashing in merge</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014400</commentid>
    <comment_count>5</comment_count>
      <attachid>232788</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-10 08:52:48 -0700</bug_when>
    <thetext>Created attachment 232788
patch

Refactored persistent data into VM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015503</commentid>
    <comment_count>6</comment_count>
      <attachid>233068</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-13 13:19:07 -0700</bug_when>
    <thetext>Created attachment 233068
patch

 Re-factored code to now capture all assignments (op_mov and op_put_to_scope). Created Log Data Stucture on CodeBlock to capture information</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016040</commentid>
    <comment_count>7</comment_count>
      <attachid>233208</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-16 19:52:41 -0700</bug_when>
    <thetext>Created attachment 233208
patch

refactored log to be in VM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016047</commentid>
    <comment_count>8</comment_count>
      <attachid>233208</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-16 20:33:01 -0700</bug_when>
    <thetext>Comment on attachment 233208
patch

You should check the &quot;Patch&quot; checkbox because that enables in-browser pretty-printing of the patch as well as the review UI.

I&apos;ve checked it by going to the &quot;details&quot; screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016048</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-16 20:34:03 -0700</bug_when>
    <thetext>Are the patches you&apos;re posting cumulative?

It would be most useful if you posted a patch that squashed all of the changes you&apos;ve made so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016450</commentid>
    <comment_count>10</comment_count>
      <attachid>233308</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-18 08:12:39 -0700</bug_when>
    <thetext>Created attachment 233308
path

Here is the full diff with master, not the incremental diffs (including all the whitespace issues). 
(I tried to manually edit out whitespace issues in the diff last night but the patch didn&apos;t apply. Will try again).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016453</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-18 08:31:26 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=233308) [details]
&gt; path
&gt; 
&gt; Here is the full diff with master, not the incremental diffs (including all the whitespace issues). 
&gt; (I tried to manually edit out whitespace issues in the diff last night but the patch didn&apos;t apply. Will try again).

You should check the &quot;Patch&quot; checkbox when uploading patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016454</commentid>
    <comment_count>12</comment_count>
      <attachid>233208</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-18 08:32:33 -0700</bug_when>
    <thetext>Comment on attachment 233208
patch

You should also obsolete old patches when uploading new ones.  Checking the &quot;patch&quot; checkbox when uploading a new patch makes this easy - it&apos;ll automatically ask you if you want to obsolete old patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016455</commentid>
    <comment_count>13</comment_count>
      <attachid>233308</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-18 08:36:26 -0700</bug_when>
    <thetext>Comment on attachment 233308
path

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

Looks like you&apos;ve got a lot of reverting to do! ;-)

&gt; Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj.orig:13
&gt; +// !$*UTF8*$!
&gt; +{
&gt; +	archiveVersion = 1;
&gt; +	classes = {
&gt; +	};
&gt; +	objectVersion = 46;
&gt; +	objects = {
&gt; +
&gt; +/* Begin PBXAggregateTarget section */
&gt; +		0F4680A914BA7FD900BFE272 /* LLInt Offsets */ = {
&gt; +			isa = PBXAggregateTarget;
&gt; +			buildConfigurationList = 0F4680AC14BA7FD900BFE272 /* Build configuration list for PBXAggregateTarget &quot;LLInt Offsets&quot; */;
&gt; +			buildPhases = (

I don&apos;t think you meant to add this file.

&gt; Source/JavaScriptCore/bytecode/BytecodeUseDef.h:64
&gt; -    case op_create_activation: 
&gt; +    case op_create_activation:

Revert.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:115
&gt; -    
&gt; +

Revert.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:293
&gt; -    
&gt; +

Revert.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:296
&gt; -    
&gt; +
&gt;      PropertyOffset offset = structure-&gt;getConcurrently(exec-&gt;vm(), ident.impl());

Revert.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1492
&gt; -    RefPtr&lt;RegisterID&gt; func = newTemporary(); 
&gt; +    RefPtr&lt;RegisterID&gt; func = newTemporary();

Revert.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1504
&gt; -    emitOpcode(op_create_this); 
&gt; -    instructions().append(m_thisRegister.index()); 
&gt; -    instructions().append(func-&gt;index()); 
&gt; +    emitOpcode(op_create_this);
&gt; +    instructions().append(m_thisRegister.index());
&gt; +    instructions().append(func-&gt;index());

Revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016463</commentid>
    <comment_count>14</comment_count>
      <attachid>233311</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-18 09:34:24 -0700</bug_when>
    <thetext>Created attachment 233311
patch

Clean patch with white space issues fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016800</commentid>
    <comment_count>15</comment_count>
      <attachid>233394</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-19 17:13:08 -0700</bug_when>
    <thetext>Created attachment 233394
patch

2014-06-19  Saam Barati  &lt;sbarati@apple.com&gt;

        Increase the amount of type information the VM gathers when directed
        to do so. This initial commit is working towards the goal of
        capturing, and then showing (via the Web Inspector) type information for all
        assignment and load operations. This patch doesn&apos;t have the feature fully 
        implemented, but it ensures the VM has no performance regressions
        unless the feature is specifically turned on.
        https://bugs.webkit.org/show_bug.cgi?id=133395

        Reviewed by NOBODY (OOPS!).

        * JavaScriptCore.xcodeproj/project.pbxproj:
        * bytecode/BytecodeList.json:
        * bytecode/BytecodeUseDef.h:
        (JSC::computeUsesForBytecodeOffset):
        (JSC::computeDefsForBytecodeOffset):
        * bytecode/CodeBlock.cpp:
        (JSC::CodeBlock::dumpBytecode):
        (JSC::CodeBlock::CodeBlock):
        (JSC::CodeBlock::finalizeUnconditionally):
        (JSC::CodeBlock::nameForRegister):
        * bytecode/CodeBlock.h:
        * bytecode/Instruction.h:
        * bytecode/TypeLocation.h: Added.
        (JSC::TypeLocation::TypeLocation):
        (JSC::TypeLocation::~TypeLocation):
        * bytecompiler/BytecodeGenerator.cpp:
        (JSC::BytecodeGenerator::emitMove):
        (JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity):
        (JSC::BytecodeGenerator::emitPutToScope):
        (JSC::BytecodeGenerator::emitPutById):
        * bytecompiler/BytecodeGenerator.h:
        (JSC::BytecodeGenerator::isGeneratingHighFidelityTypeProfiling):
        * bytecompiler/NodesCodegen.cpp:
        (JSC::PostfixNode::emitResolve):
        (JSC::PrefixNode::emitResolve):
        (JSC::ReadModifyResolveNode::emitBytecode):
        (JSC::AssignResolveNode::emitBytecode):
        (JSC::ConstDeclNode::emitCodeSingle):
        (JSC::ForInNode::emitBytecode):
        * heap/Heap.cpp:
        (JSC::Heap::collect):
        * inspector/agents/InspectorRuntimeAgent.cpp:
        (Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableInTextRange):
        * inspector/agents/InspectorRuntimeAgent.h:
        * inspector/protocol/Runtime.json:
        * jsc.cpp:
        (GlobalObject::finishCreation):
        (functionDumpTypesForAllVariables):
        * llint/LLIntSlowPaths.cpp:
        (JSC::LLInt::LLINT_SLOW_PATH_DECL):
        * llint/LLIntSlowPaths.h:
        * llint/LowLevelInterpreter.asm:
        * runtime/HighFidelityLog.cpp: Added.
        (JSC::HighFidelityLog::initializeHighFidelityLog):
        (JSC::HighFidelityLog::~HighFidelityLog):
        (JSC::HighFidelityLog::recordTypeInformationForLocation):
        (JSC::HighFidelityLog::processHighFidelityLog):
        * runtime/HighFidelityLog.h: Added.
        (JSC::HighFidelityLog::HighFidelityLog):
        * runtime/HighFidelityTypeProfiler.cpp: Added.
        (JSC::HighFidelityTypeProfiler::getTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getLocalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::mergeInTypesForLocation):
        (JSC::HighFidelityTypeProfiler::getLocationBasedHash):
        * runtime/HighFidelityTypeProfiler.h: Added.
        * runtime/Options.h:
        * runtime/Structure.cpp:
        (JSC::Structure::toStructureShape):
        * runtime/Structure.h:
        * runtime/SymbolTable.cpp:
        (JSC::SymbolTable::SymbolTable):
        (JSC::SymbolTable::cloneCapturedNames):
        (JSC::SymbolTable::uniqueIDForVariable):
        (JSC::SymbolTable::uniqueIDForRegister):
        * runtime/SymbolTable.h:
        (JSC::SymbolTable::add):
        (JSC::SymbolTable::set):
        * runtime/TypeSet.cpp: Added.
        (JSC::TypeSet::TypeSet):
        (JSC::TypeSet::getRuntimeTypeForValue):
        (JSC::TypeSet::addTypeForValue):
        (JSC::TypeSet::mergeWithTypeSet):
        (JSC::TypeSet::removeDuplicatesInStructureHistory):
        (JSC::TypeSet::seenTypes):
        (JSC::TypeSet::dumpSeenTypes):
        (JSC::StructureShape::operator==):
        * runtime/TypeSet.h: Added.
        * runtime/VM.cpp:
        (JSC::VM::VM):
        (JSC::VM::getTypesForVariableInRange):
        (JSC::VM::updateHighFidelityTypeProfileState):
        (JSC::VM::dumpHighFidelityProfilingTypes):
        * runtime/VM.h:
        (JSC::VM::isProfilingTypesWithHighFidelity):
        (JSC::VM::highFidelityLog):
        (JSC::VM::nextLocation):
        (JSC::VM::getNextUniqueVariableID):
        (JSC::VM::getNextUniqueInstructionID):</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017134</commentid>
    <comment_count>16</comment_count>
      <attachid>233486</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-20 16:47:57 -0700</bug_when>
    <thetext>Created attachment 233486
patch

* Made processing the log happen on a separate thread when processing is invoked by maxing out the log size.

* Also, re-architected the infrastructure to not make TypeSet copies in the HighFidelityTypeProfiler. This prevents the VM from having to walk over all TypeSets that have changed and then merge them with the profiler. Instead, TypeSet&apos;s are all passed around as references, so once the log is processed, the VM is in an updated state. This saves a lot of time when the user specifically asks the VM to update because instead of processing the log, then walking all TypeSets, then doing a has lookup, the VM simply processes the log and does a hash lookup. This cuts out the most expensive part: walking all TypeSets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017655</commentid>
    <comment_count>17</comment_count>
      <attachid>233394</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-23 13:10:21 -0700</bug_when>
    <thetext>Comment on attachment 233394
patch

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

Looks pretty good, just minor nits.

&gt; Source/JavaScriptCore/jsc.cpp:942
&gt; +
&gt; +

Remove

&gt; Source/JavaScriptCore/bytecode/BytecodeUseDef.h:57
&gt; +    //TODO: Should this functor be called with one operand?

Space between // and TODO.

And yes, this should keep the input alive.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1926
&gt; +                //TODO: handle other op.type here

Space between // and TODO

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1933
&gt; +                    //TODO: implement

Ditto.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1969
&gt; +            //String name = nameForRegister(virtualRegister);
&gt; +            //printf(&quot;LINKING: op_profile_types_with_high_fidelity has uniqueID:&apos;%llu&apos; and name:&apos;%s&apos;, line:&apos;%u&apos;, column:&apos;%u&apos;\n&quot;, globalID, name.ascii().data(), location-&gt;line, location-&gt;column); 

Remove this.  Or, create a &quot;static const bool verbose = false&quot; and use that as a guard.  Also, don&apos;t use printf() - use dataLog() instead.

&gt; Source/JavaScriptCore/bytecode/TypeLocation.h:36
&gt; +    enum HighFidelityGlobalIDFlags {
&gt; +        HighFidelityNeedsUniqueIDGeneration = -1,
&gt; +        HighFidelityNoGlobalIDExists = -2
&gt; +    };

Unindent the enum.

&gt; Source/JavaScriptCore/bytecode/TypeLocation.h:51
&gt; +    //uint64_t globalVariableID;

Remove.

&gt; Source/JavaScriptCore/bytecode/TypeLocation.h:53
&gt; +    int64_t globalVariableID;
&gt; +    uint64_t globalInstructionID;

Prepend &quot;m_&quot; to field names.

&gt; Source/JavaScriptCore/bytecode/TypeLocation.h:54
&gt; +    //size_t unlinkedByteCodeOffset;

Unique.

&gt; Source/JavaScriptCore/bytecode/TypeLocation.h:57
&gt; +    intptr_t sourceID;
&gt; +    unsigned line;
&gt; +    unsigned column;

Prepend &quot;m_&quot; to field names.

&gt; Source/JavaScriptCore/bytecode/TypeLocation.h:58
&gt; +    TypeSet* typeSet;

Use a std::unique_ptr&lt;TypeSet&gt; if this is owned by TypeLocation.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1120
&gt; +    //op_profile_types_with_high_fidelity value_reg location hasGlobalID

Turn this comment into a sentence or remove it.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1123
&gt; +    instructions().append(0);

You could add a comment at the end of this line saying what this zero means.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1129
&gt; +    //instructions().append(offset);

Remove.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1884
&gt; +            //TODO: maybe emit expression info???

Space between // and TODO.  Only one ?.  Turn it into a sentence (i.e. capitalize Maybe).

&gt; Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp:195
&gt; +                                                                 int in_startLine, int in_startColumn, int in_endLine, int in_endColumn, String* out_types) 

Bad indentation, you should make this line be only 4 spaces indented.

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1471
&gt; +    // put_to_scope_with_profile scope, id, value, ResolveModeAndType, Structure, Operand, TypeLocation*

Same comment as before - turn this into a sentence or remove it.  For example, you could make this say:

// The format of this instruction is: put_to_scope_with_profile scope, id, value, ResolveModeAndType, Structure, Operand, TypeLocation*

&gt; Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.h:2
&gt; + * Copyright (C) 2008, 2014 Apple Inc. All Rights Reserved.

Only say 2014.

&gt; Source/JavaScriptCore/runtime/SymbolTable.h:419
&gt; +        //use -1 as a flag to indicate we need to produce a unique ID because we need the VM to do this. 
&gt; +        //When linking, we can produce this unique ID as we have access to VM

Complete sentences in comments, capitalize the first word in the sentence, and a space between // and use, and between // and When.

&gt; Source/JavaScriptCore/runtime/SymbolTable.h:472
&gt; -    
&gt; +

Revert.

&gt; Source/JavaScriptCore/runtime/SymbolTable.h:485
&gt; -    
&gt; +

Revert.

&gt; Source/JavaScriptCore/runtime/SymbolTable.h:500
&gt; -        
&gt; +

Revert.

&gt; Source/JavaScriptCore/runtime/SymbolTable.h:507
&gt; -    
&gt; +

Revert.

&gt; Source/JavaScriptCore/runtime/SymbolTable.h:522
&gt; -    
&gt; +

Revert.

&gt; Source/JavaScriptCore/runtime/SymbolTable.h:527
&gt; -    
&gt; +

Revert.

&gt; Source/JavaScriptCore/runtime/TypeSet.cpp:63
&gt; +    else if (v.isGetterSetter())
&gt; +        ret = TypeGetterSetter;

Remove.

&gt; Source/JavaScriptCore/runtime/TypeSet.cpp:65
&gt; +    //else if (v.isCustomGetterSetter())
&gt; +    //    ret = TypeCustomGetterSetter;

Remove.

&gt; Source/JavaScriptCore/runtime/TypeSet.cpp:74
&gt; +//structure may be null

Space between // and structure, turn it into a sentence.  Or remove it.

&gt; Source/JavaScriptCore/runtime/TypeSet.cpp:139
&gt; +    if (m_seenTypes &amp; TypeGetterSetter)
&gt; +         seen.append(&quot;GetterSetter &quot;);
&gt; +    if (m_seenTypes &amp; TypeCustomGetterSetter)
&gt; +         seen.append(&quot;CustomGetterSetter &quot;);
&gt; +    //if (m_seenTypes &amp; TypeObject)
&gt; +    //     seen.append(&quot;Object &quot;);

Remove.

&gt; Source/JavaScriptCore/runtime/TypeSet.h:53
&gt; +    class JSValue;
&gt; +    class Structure;
&gt; +
&gt; +    enum RuntimeType {
&gt; +        TypeNothing            = 0x0,
&gt; +        TypeFunction           = 0x1,
&gt; +        TypeUndefined          = 0x2,
&gt; +        TypeNull               = 0x4,
&gt; +        TypeBoolean            = 0x8,
&gt; +        TypeMachineInt         = 0x10,
&gt; +        TypeNumber             = 0x20,
&gt; +        TypeString             = 0x40,
&gt; +        TypePrimitive          = 0x80,
&gt; +        TypeGetterSetter       = 0x100,
&gt; +        TypeCustomGetterSetter = 0x200,
&gt; +        TypeObject             = 0x400,
&gt; +    };
&gt; +

Unindent.

&gt; Source/JavaScriptCore/runtime/TypeSet.h:54
&gt; +

Remove this blank line.

&gt; Source/JavaScriptCore/runtime/TypeSet.h:62
&gt; +

Remove this blank line.

&gt; Source/JavaScriptCore/runtime/VM.cpp:335
&gt; +    //TODO: conditionally allocate all this stuff based on whether the inspector is running

Space between // and TODO.

&gt; Source/JavaScriptCore/runtime/VM.cpp:943
&gt; +    //printf(&quot;Getting type for variable given sourceID:&apos;%ld&apos; line:&apos;%u&apos;\n&quot;, sourceID, startLine);

Remove or guard with a verbose flag.

&gt; Source/JavaScriptCore/runtime/VM.cpp:971
&gt; +        printf(&quot;[Line, Column]::[%u, %u] Local:&apos;%s&apos; Global:&apos;%s&apos;\n&quot;, location-&gt;line, location-&gt;column, 
&gt; +                                               profiler-&gt;getLocalTypesForVariableInRange(location-&gt;line, location-&gt;column, location-&gt;line, location-&gt;column, &quot;&quot;, location-&gt;sourceID).ascii().data(),
&gt; +                                               profiler-&gt;getGlobalTypesForVariableInRange(location-&gt;line, location-&gt;column, location-&gt;line, location-&gt;column, &quot;&quot;, location-&gt;sourceID).ascii().data());

Use dataLog().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017768</commentid>
    <comment_count>18</comment_count>
      <attachid>233655</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-23 17:03:07 -0700</bug_when>
    <thetext>Created attachment 233655
patch

2014-06-23  Saam Barati  &lt;sbarati@apple.com&gt;

        Increase the amount of type information the VM gathers when directed
        to do so. This initial commit is working towards the goal of
        capturing, and then showing (via the Web Inspector) type information for all
        assignment and load operations. This patch doesn&apos;t have the feature fully 
        implemented, but it ensures the VM has no performance regressions
        unless the feature is specifically turned on.
        https://bugs.webkit.org/show_bug.cgi?id=133395

        Reviewed by NOBODY (OOPS!).

        * JavaScriptCore.xcodeproj/project.pbxproj:
        * bytecode/BytecodeList.json:
        * bytecode/BytecodeUseDef.h:
        (JSC::computeUsesForBytecodeOffset):
        (JSC::computeDefsForBytecodeOffset):
        * bytecode/CodeBlock.cpp:
        (JSC::CodeBlock::dumpBytecode):
        (JSC::CodeBlock::CodeBlock):
        (JSC::CodeBlock::finalizeUnconditionally):
        * bytecode/CodeBlock.h:
        * bytecode/Instruction.h:
        * bytecode/TypeLocation.h: Added.
        (JSC::TypeLocation::TypeLocation):
        * bytecompiler/BytecodeGenerator.cpp:
        (JSC::BytecodeGenerator::emitMove):
        (JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity):
        (JSC::BytecodeGenerator::emitPutToScope):
        (JSC::BytecodeGenerator::emitPutById):
        (JSC::BytecodeGenerator::emitPutByVal):
        * bytecompiler/BytecodeGenerator.h:
        (JSC::BytecodeGenerator::isProfilingTypesWithHighFidelity):
        * bytecompiler/NodesCodegen.cpp:
        (JSC::PostfixNode::emitResolve):
        (JSC::PrefixNode::emitResolve):
        (JSC::ReadModifyResolveNode::emitBytecode):
        (JSC::AssignResolveNode::emitBytecode):
        (JSC::ConstDeclNode::emitCodeSingle):
        (JSC::ForInNode::emitBytecode):
        * heap/Heap.cpp:
        (JSC::Heap::collect):
        * inspector/agents/InspectorRuntimeAgent.cpp:
        (Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableInTextRange):
        * inspector/agents/InspectorRuntimeAgent.h:
        * inspector/protocol/Runtime.json:
        * jsc.cpp:
        (GlobalObject::finishCreation):
        (functionDumpTypesForAllVariables):
        * llint/LLIntSlowPaths.cpp:
        (JSC::LLInt::LLINT_SLOW_PATH_DECL):
        * llint/LLIntSlowPaths.h:
        * llint/LowLevelInterpreter.asm:
        * runtime/HighFidelityLog.cpp: Added.
        (JSC::HighFidelityLog::initializeHighFidelityLog):
        (JSC::HighFidelityLog::~HighFidelityLog):
        (JSC::HighFidelityLog::recordTypeInformationForLocation):
        (JSC::HighFidelityLog::processHighFidelityLog):
        (JSC::HighFidelityLog::actuallyProcessLogThreadFunction):
        * runtime/HighFidelityLog.h: Added.
        (JSC::HighFidelityLog::HighFidelityLog):
        * runtime/HighFidelityTypeProfiler.cpp: Added.
        (JSC::HighFidelityTypeProfiler::getTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getLocalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::insertNewLocation):
        (JSC::HighFidelityTypeProfiler::getLocationBasedHash):
        * runtime/HighFidelityTypeProfiler.h: Added.
        * runtime/Options.h:
        * runtime/Structure.cpp:
        (JSC::Structure::toStructureShape):
        * runtime/Structure.h:
        * runtime/SymbolTable.cpp:
        (JSC::SymbolTable::SymbolTable):
        (JSC::SymbolTable::cloneCapturedNames):
        (JSC::SymbolTable::uniqueIDForVariable):
        (JSC::SymbolTable::uniqueIDForRegister):
        (JSC::SymbolTable::globalTypeSetForRegister):
        (JSC::SymbolTable::globalTypeSetForVariable):
        * runtime/SymbolTable.h:
        (JSC::SymbolTable::add):
        (JSC::SymbolTable::set):
        * runtime/TypeSet.cpp: Added.
        (JSC::TypeSet::TypeSet):
        (JSC::TypeSet::getRuntimeTypeForValue):
        (JSC::TypeSet::addTypeForValue):
        (JSC::TypeSet::removeDuplicatesInStructureHistory):
        (JSC::TypeSet::seenTypes):
        (JSC::TypeSet::dumpSeenTypes):
        (JSC::StructureShape::StructureShape):
        (JSC::StructureShape::markAsFinal):
        (JSC::StructureShape::addProperty):
        (JSC::StructureShape::propertyHash):
        (JSC::StructureShape::leastUpperBound):
        (JSC::StructureShape::stringRepresentation):
        * runtime/TypeSet.h: Added.
        (JSC::StructureShape::create):
        * runtime/VM.cpp:
        (JSC::VM::VM):
        (JSC::VM::getTypesForVariableInRange):
        (JSC::VM::updateHighFidelityTypeProfileState):
        (JSC::VM::dumpHighFidelityProfilingTypes):
        * runtime/VM.h:
        (JSC::VM::isProfilingTypesWithHighFidelity):
        (JSC::VM::highFidelityLog):
        (JSC::VM::highFidelityTypeProfiler):
        (JSC::VM::nextLocation):
        (JSC::VM::getNextUniqueVariableID):</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017775</commentid>
    <comment_count>19</comment_count>
      <attachid>233658</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-23 17:15:08 -0700</bug_when>
    <thetext>Created attachment 233658
patch

2014-06-23  Saam Barati  &lt;sbarati@apple.com&gt;

        Increase the amount of type information the VM gathers when directed
        to do so. This initial commit is working towards the goal of
        capturing, and then showing (via the Web Inspector) type information for all
        assignment and load operations. This patch doesn&apos;t have the feature fully 
        implemented, but it ensures the VM has no performance regressions
        unless the feature is specifically turned on.
        https://bugs.webkit.org/show_bug.cgi?id=133395

        Reviewed by NOBODY (OOPS!).

        * JavaScriptCore.xcodeproj/project.pbxproj:
        * bytecode/BytecodeList.json:
        * bytecode/BytecodeUseDef.h:
        (JSC::computeUsesForBytecodeOffset):
        (JSC::computeDefsForBytecodeOffset):
        * bytecode/CodeBlock.cpp:
        (JSC::CodeBlock::dumpBytecode):
        (JSC::CodeBlock::CodeBlock):
        (JSC::CodeBlock::finalizeUnconditionally):
        * bytecode/CodeBlock.h:
        * bytecode/Instruction.h:
        * bytecode/TypeLocation.h: Added.
        (JSC::TypeLocation::TypeLocation):
        * bytecompiler/BytecodeGenerator.cpp:
        (JSC::BytecodeGenerator::emitMove):
        (JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity):
        (JSC::BytecodeGenerator::emitPutToScope):
        (JSC::BytecodeGenerator::emitPutById):
        (JSC::BytecodeGenerator::emitPutByVal):
        * bytecompiler/BytecodeGenerator.h:
        (JSC::BytecodeGenerator::isProfilingTypesWithHighFidelity):
        * bytecompiler/NodesCodegen.cpp:
        (JSC::PostfixNode::emitResolve):
        (JSC::PrefixNode::emitResolve):
        (JSC::ReadModifyResolveNode::emitBytecode):
        (JSC::AssignResolveNode::emitBytecode):
        (JSC::ConstDeclNode::emitCodeSingle):
        (JSC::ForInNode::emitBytecode):
        * heap/Heap.cpp:
        (JSC::Heap::collect):
        * inspector/agents/InspectorRuntimeAgent.cpp:
        (Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableInTextRange):
        * inspector/agents/InspectorRuntimeAgent.h:
        * inspector/protocol/Runtime.json:
        * jsc.cpp:
        (GlobalObject::finishCreation):
        (functionDumpTypesForAllVariables):
        * llint/LLIntSlowPaths.cpp:
        (JSC::LLInt::LLINT_SLOW_PATH_DECL):
        * llint/LLIntSlowPaths.h:
        * llint/LowLevelInterpreter.asm:
        * runtime/HighFidelityLog.cpp: Added.
        (JSC::HighFidelityLog::initializeHighFidelityLog):
        (JSC::HighFidelityLog::~HighFidelityLog):
        (JSC::HighFidelityLog::recordTypeInformationForLocation):
        (JSC::HighFidelityLog::processHighFidelityLog):
        (JSC::HighFidelityLog::actuallyProcessLogThreadFunction):
        * runtime/HighFidelityLog.h: Added.
        (JSC::HighFidelityLog::HighFidelityLog):
        * runtime/HighFidelityTypeProfiler.cpp: Added.
        (JSC::HighFidelityTypeProfiler::getTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getLocalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::insertNewLocation):
        (JSC::HighFidelityTypeProfiler::getLocationBasedHash):
        * runtime/HighFidelityTypeProfiler.h: Added.
        * runtime/Options.h:
        * runtime/Structure.cpp:
        (JSC::Structure::toStructureShape):
        * runtime/Structure.h:
        * runtime/SymbolTable.cpp:
        (JSC::SymbolTable::SymbolTable):
        (JSC::SymbolTable::cloneCapturedNames):
        (JSC::SymbolTable::uniqueIDForVariable):
        (JSC::SymbolTable::uniqueIDForRegister):
        (JSC::SymbolTable::globalTypeSetForRegister):
        (JSC::SymbolTable::globalTypeSetForVariable):
        * runtime/SymbolTable.h:
        (JSC::SymbolTable::add):
        (JSC::SymbolTable::set):
        * runtime/TypeSet.cpp: Added.
        (JSC::TypeSet::TypeSet):
        (JSC::TypeSet::getRuntimeTypeForValue):
        (JSC::TypeSet::addTypeForValue):
        (JSC::TypeSet::removeDuplicatesInStructureHistory):
        (JSC::TypeSet::seenTypes):
        (JSC::TypeSet::dumpSeenTypes):
        (JSC::StructureShape::StructureShape):
        (JSC::StructureShape::markAsFinal):
        (JSC::StructureShape::addProperty):
        (JSC::StructureShape::propertyHash):
        (JSC::StructureShape::leastUpperBound):
        (JSC::StructureShape::stringRepresentation):
        * runtime/TypeSet.h: Added.
        (JSC::StructureShape::create):
        * runtime/VM.cpp:
        (JSC::VM::VM):
        (JSC::VM::getTypesForVariableInRange):
        (JSC::VM::updateHighFidelityTypeProfileState):
        (JSC::VM::dumpHighFidelityProfilingTypes):
        * runtime/VM.h:
        (JSC::VM::isProfilingTypesWithHighFidelity):
        (JSC::VM::highFidelityLog):
        (JSC::VM::highFidelityTypeProfiler):
        (JSC::VM::nextLocation):
        (JSC::VM::getNextUniqueVariableID):</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018025</commentid>
    <comment_count>20</comment_count>
      <attachid>233658</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-24 11:37:15 -0700</bug_when>
    <thetext>Comment on attachment 233658
patch

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

I think I found a bug (std::unique_ptr in TypeLocation for the global set thing) and some obvious performance goofs (the log being an array of Log3Triple*&apos;s instead of Log3Triples, and the use of append() instead of StringBuilder).

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Increase the amount of type information the VM gathers when directed
&gt; +        to do so. This initial commit is working towards the goal of
&gt; +        capturing, and then showing (via the Web Inspector) type information for all
&gt; +        assignment and load operations. This patch doesn&apos;t have the feature fully 
&gt; +        implemented, but it ensures the VM has no performance regressions
&gt; +        unless the feature is specifically turned on.

Up here you should just put the bug title.

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * JavaScriptCore.xcodeproj/project.pbxproj:

In between the &quot;Reviewed by...&quot; and the list of changed files, you should put the text that you have up above.

&gt; Source/JavaScriptCore/bytecode/TypeLocation.h:52
&gt; +    std::unique_ptr&lt;TypeSet&gt; m_globalTypeSet;

Should this *really* be a unique_ptr?  Is it ever possible for the thing that globalTypeSet points to to outlive the TypeLocation?  Is it ever possible for other things to point at the TypeSet pointed to by m_globalTypeSet?  If you said &quot;yes&quot; to either question, then this shouldn&apos;t be a unique_ptr.

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194
&gt; +#define LLINT_PUT_TO_SCOPE_COMMON() \
&gt; +    LLINT_BEGIN(); \
&gt; +    CodeBlock* codeBlock = exec-&gt;codeBlock(); \
&gt; +    const Identifier&amp; ident = codeBlock-&gt;identifier(pc[2].u.operand); \
&gt; +    JSObject* scope = jsCast&lt;JSObject*&gt;(LLINT_OP(1).jsValue()); \
&gt; +    JSValue value = LLINT_OP_C(3).jsValue(); \
&gt; +    ResolveModeAndType modeAndType = ResolveModeAndType(pc[4].u.operand); \
&gt; + \
&gt; +    if (modeAndType.mode() == ThrowIfNotFound &amp;&amp; !scope-&gt;hasProperty(exec, ident)) \
&gt; +        LLINT_THROW(createUndefinedVariableError(exec, ident)); \
&gt; + \
&gt; +    PutPropertySlot slot(scope, codeBlock-&gt;isStrictMode()); \
&gt; +    scope-&gt;methodTable()-&gt;put(scope, exec, ident, value, slot); \
&gt; + \
&gt; +    /* Covers implicit globals. Since they don&apos;t exist until they first execute, we didn&apos;t know how to cache them at compile time.*/  \
&gt; +    if (modeAndType.type() == GlobalProperty || modeAndType.type() == GlobalPropertyWithVarInjectionChecks) { \
&gt; +        if (slot.isCacheablePut() &amp;&amp; slot.base() == scope &amp;&amp; scope-&gt;structure()-&gt;propertyAccessesAreCacheable()) { \
&gt; +            ConcurrentJITLocker locker(codeBlock-&gt;m_lock); \
&gt; +            pc[5].u.structure.set(exec-&gt;vm(), codeBlock-&gt;ownerExecutable(), scope-&gt;structure()); \
&gt; +            pc[6].u.operand = slot.cachedOffset(); \
&gt; +        } \
&gt; +    } \
&gt; +

Does this really have to be a macro?  Could this be a helper function?

&gt; Source/JavaScriptCore/runtime/HighFidelityLog.cpp:46
&gt; +    m_logStartPtr = (Log3Tuple**) malloc(sizeof(Log3Tuple*) * m_highFidelityLogSize);
&gt; +    m_nextBuffer = (Log3Tuple**) malloc(sizeof(Log3Tuple*) * m_highFidelityLogSize);

Don&apos;t use malloc().  At a minimum, use fastMalloc().  Even better yet, use C++ allocation, like new Log3Tuple[m_highFidelityLogSize].

I also don&apos;t agree with your decision to use an array of pointers to a bunch of Log3Tuple instances.  That&apos;s just an extra unnecessary indirection.  You could instead just have an array of Log3Tuples (i.e. a Log3Tuple* instead of Log3Tuple**).  This will save memory (fewer pointers and less allocator per-object overhead) and execution time (no need for an extra load to get to the actual Log3Tuple).

Finally, wouldn&apos;t it be better to say LogTriple or LogEntry instead of Log3Tuple?

&gt; Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.cpp:53
&gt; +    auto iter2 = m_globalIDMap.find(iter-&gt;value);
&gt; +    auto end2 = m_globalIDMap.end();
&gt; +    if (iter2 == end2)

You should come up with better names than iter2 and end2.

&gt; Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.h:43
&gt; +    WTF::String getTypesForVariableInRange(unsigned startLine, unsigned startColumn, unsigned endLine, unsigned endColumn, const WTF::String&amp; variableName, intptr_t sourceID);
&gt; +    WTF::String getGlobalTypesForVariableInRange(unsigned startLine, unsigned startColumn, unsigned endLine, unsigned endColumn, const WTF::String&amp; variableName, intptr_t sourceID);
&gt; +    WTF::String getLocalTypesForVariableInRange(unsigned startLine, unsigned startColumn, unsigned endLine, unsigned endColumn, const WTF::String&amp; variableName, intptr_t sourceID);
&gt; +    void insertNewLocation(TypeLocation*);

No need to say WTF::String.  You can just say String.

&gt; Source/JavaScriptCore/runtime/TypeSet.cpp:179
&gt; +    m_propertyHash = std::make_unique&lt;String&gt;();
&gt; +    m_propertyHash-&gt;append(&quot;:&quot;);
&gt; +    for (auto iter = m_fields.begin(), end = m_fields.end(); iter != end; ++iter) {
&gt; +        String property = String(iter-&gt;key);
&gt; +        property.replace(&quot;:&quot;, &quot;\\:&quot;); // Ensure that hash({&quot;foo:&quot;, &quot;bar&quot;}) != hash({&quot;foo&quot;, &quot;:bar&quot;}) because we&apos;re using colons as a separator and colons are legal characters in field names in JS.
&gt; +        m_propertyHash-&gt;append(property);
&gt; +    }

I suspect that you should use StringBuilder here.

&gt; Source/JavaScriptCore/runtime/TypeSet.cpp:209
&gt; +    String lub(&quot;&quot;);
&gt; +
&gt; +    if (!shapes-&gt;size())
&gt; +        return lub;
&gt; +     
&gt; +    RefPtr&lt;StructureShape&gt; origin = shapes-&gt;at(0);
&gt; +    lub.append(&quot;{&quot;);
&gt; +    for (auto iter = origin-&gt;m_fields.begin(), end = origin-&gt;m_fields.end(); iter != end; ++iter) {
&gt; +        bool shouldAdd = true;
&gt; +        for (size_t i = 1, size = shapes-&gt;size(); i &lt; size; i++) {
&gt; +            // If all other Shapes have the same field as origin, add it to the least upper bound.
&gt; +            if (!shapes-&gt;at(i)-&gt;m_fields.contains(iter-&gt;key)) {
&gt; +                shouldAdd = false;
&gt; +                break;
&gt; +            }
&gt; +        }
&gt; +        if (shouldAdd)
&gt; +            lub.append(String(iter-&gt;key.get()) + String(&quot;, &quot;));
&gt; +    }
&gt; +
&gt; +    if (lub.length() &gt;= 3)
&gt; +        lub = lub.left(lub.length() - 2); // Remove the trailing &apos;, &apos;
&gt; +
&gt; +    lub.append(&quot;}&quot;);

StringBuilder again, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018103</commentid>
    <comment_count>21</comment_count>
      <attachid>233743</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-24 14:49:02 -0700</bug_when>
    <thetext>Created attachment 233743
patch

2014-06-24  Saam Barati  &lt;sbarati@apple.com&gt;

        Web Inspector: debugger should be able to show variable types
        https://bugs.webkit.org/show_bug.cgi?id=133395

        Reviewed by NOBODY (OOPS!).

        Increase the amount of type information the VM gathers when directed
        to do so. This initial commit is working towards the goal of
        capturing, and then showing (via the Web Inspector) type information for all
        assignment and load operations. This patch doesn&apos;t have the feature fully 
        implemented, but it ensures the VM has no performance regressions
        unless the feature is specifically turned on.

        * JavaScriptCore.xcodeproj/project.pbxproj:
        * bytecode/BytecodeList.json:
        * bytecode/BytecodeUseDef.h:
        (JSC::computeUsesForBytecodeOffset):
        (JSC::computeDefsForBytecodeOffset):
        * bytecode/CodeBlock.cpp:
        (JSC::CodeBlock::dumpBytecode):
        (JSC::CodeBlock::CodeBlock):
        (JSC::CodeBlock::finalizeUnconditionally):
        * bytecode/CodeBlock.h:
        * bytecode/Instruction.h:
        * bytecode/TypeLocation.h: Added.
        (JSC::TypeLocation::TypeLocation):
        * bytecompiler/BytecodeGenerator.cpp:
        (JSC::BytecodeGenerator::emitMove):
        (JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity):
        (JSC::BytecodeGenerator::emitPutToScope):
        (JSC::BytecodeGenerator::emitPutById):
        (JSC::BytecodeGenerator::emitPutByVal):
        * bytecompiler/BytecodeGenerator.h:
        (JSC::BytecodeGenerator::isProfilingTypesWithHighFidelity):
        * bytecompiler/NodesCodegen.cpp:
        (JSC::PostfixNode::emitResolve):
        (JSC::PrefixNode::emitResolve):
        (JSC::ReadModifyResolveNode::emitBytecode):
        (JSC::AssignResolveNode::emitBytecode):
        (JSC::ConstDeclNode::emitCodeSingle):
        (JSC::ForInNode::emitBytecode):
        * heap/Heap.cpp:
        (JSC::Heap::collect):
        * inspector/agents/InspectorRuntimeAgent.cpp:
        (Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableInTextRange):
        * inspector/agents/InspectorRuntimeAgent.h:
        * inspector/protocol/Runtime.json:
        * jsc.cpp:
        (GlobalObject::finishCreation):
        (functionDumpTypesForAllVariables):
        * llint/LLIntSlowPaths.cpp:
        (JSC::LLInt::LLINT_SLOW_PATH_DECL):
        (JSC::LLInt::putToScopeCommon):
        * llint/LLIntSlowPaths.h:
        * llint/LowLevelInterpreter.asm:
        * runtime/HighFidelityLog.cpp: Added.
        (JSC::HighFidelityLog::initializeHighFidelityLog):
        (JSC::HighFidelityLog::~HighFidelityLog):
        (JSC::HighFidelityLog::recordTypeInformationForLocation):
        (JSC::HighFidelityLog::processHighFidelityLog):
        (JSC::HighFidelityLog::actuallyProcessLogThreadFunction):
        * runtime/HighFidelityLog.h: Added.
        (JSC::HighFidelityLog::HighFidelityLog):
        * runtime/HighFidelityTypeProfiler.cpp: Added.
        (JSC::HighFidelityTypeProfiler::getTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getLocalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::insertNewLocation):
        (JSC::HighFidelityTypeProfiler::getLocationBasedHash):
        * runtime/HighFidelityTypeProfiler.h: Added.
        * runtime/Options.h:
        * runtime/Structure.cpp:
        (JSC::Structure::toStructureShape):
        * runtime/Structure.h:
        * runtime/SymbolTable.cpp:
        (JSC::SymbolTable::SymbolTable):
        (JSC::SymbolTable::cloneCapturedNames):
        (JSC::SymbolTable::uniqueIDForVariable):
        (JSC::SymbolTable::uniqueIDForRegister):
        (JSC::SymbolTable::globalTypeSetForRegister):
        (JSC::SymbolTable::globalTypeSetForVariable):
        * runtime/SymbolTable.h:
        (JSC::SymbolTable::add):
        (JSC::SymbolTable::set):
        * runtime/TypeSet.cpp: Added.
        (JSC::TypeSet::TypeSet):
        (JSC::TypeSet::getRuntimeTypeForValue):
        (JSC::TypeSet::addTypeForValue):
        (JSC::TypeSet::removeDuplicatesInStructureHistory):
        (JSC::TypeSet::seenTypes):
        (JSC::TypeSet::dumpSeenTypes):
        (JSC::StructureShape::StructureShape):
        (JSC::StructureShape::markAsFinal):
        (JSC::StructureShape::addProperty):
        (JSC::StructureShape::propertyHash):
        (JSC::StructureShape::leastUpperBound):
        (JSC::StructureShape::stringRepresentation):
        * runtime/TypeSet.h: Added.
        (JSC::StructureShape::create):
        (JSC::TypeSet::create):
        * runtime/VM.cpp:
        (JSC::VM::VM):
        (JSC::VM::getTypesForVariableInRange):
        (JSC::VM::updateHighFidelityTypeProfileState):
        (JSC::VM::dumpHighFidelityProfilingTypes):
        * runtime/VM.h:
        (JSC::VM::isProfilingTypesWithHighFidelity):
        (JSC::VM::highFidelityLog):
        (JSC::VM::highFidelityTypeProfiler):
        (JSC::VM::nextLocation):
        (JSC::VM::getNextUniqueVariableID):</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018125</commentid>
    <comment_count>22</comment_count>
      <attachid>233743</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-24 15:22:03 -0700</bug_when>
    <thetext>Comment on attachment 233743
patch

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

&gt; Source/JavaScriptCore/runtime/HighFidelityLog.h:39
&gt; +    class TypeLocation;

Unindent this.

&gt; Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.h:48
&gt; +    typedef HashMap&lt;String, RefPtr&lt;TypeSet&gt;&gt; GlobalLocationMap; // (for now, hack it and say Map:&quot;ID:Line&quot; =&gt; TypeSet. Obviously, this assumes all assignments are on discrete lines).

This is pretty shady.  The key should be a struct.  Since that takes effort and this code uses few cycles, you can use std::unordered_map.

&gt; Source/JavaScriptCore/runtime/HighFidelityTypeProfiler.h:50
&gt; +    typedef HashMap&lt;String, int64_t&gt; GlobalLocationToGlobalIDMap;

Ditto.

&gt; Source/JavaScriptCore/runtime/Structure.cpp:1071
&gt; +        for (; iter != end; ++iter) {
&gt; +            shape-&gt;addProperty(iter-&gt;key);
&gt; +        }

No need for { and } if the body is just one line.  You can just say:

for (; iter != end; ++iter)
    shape-&gt;addProperty(iter-&gt;key);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018160</commentid>
    <comment_count>23</comment_count>
      <attachid>233760</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-24 16:25:02 -0700</bug_when>
    <thetext>Created attachment 233760
patch

2014-06-24  Saam Barati  &lt;sbarati@apple.com&gt;

        Web Inspector: debugger should be able to show variable types
        https://bugs.webkit.org/show_bug.cgi?id=133395

        Reviewed by NOBODY (OOPS!).

        Increase the amount of type information the VM gathers when directed
        to do so. This initial commit is working towards the goal of
        capturing, and then showing (via the Web Inspector) type information for all
        assignment and load operations. This patch doesn&apos;t have the feature fully 
        implemented, but it ensures the VM has no performance regressions
        unless the feature is specifically turned on.

        * JavaScriptCore.xcodeproj/project.pbxproj:
        * bytecode/BytecodeList.json:
        * bytecode/BytecodeUseDef.h:
        (JSC::computeUsesForBytecodeOffset):
        (JSC::computeDefsForBytecodeOffset):
        * bytecode/CodeBlock.cpp:
        (JSC::CodeBlock::dumpBytecode):
        (JSC::CodeBlock::CodeBlock):
        (JSC::CodeBlock::finalizeUnconditionally):
        * bytecode/CodeBlock.h:
        * bytecode/Instruction.h:
        * bytecode/TypeLocation.h: Added.
        (JSC::TypeLocation::TypeLocation):
        * bytecompiler/BytecodeGenerator.cpp:
        (JSC::BytecodeGenerator::emitMove):
        (JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity):
        (JSC::BytecodeGenerator::emitPutToScope):
        (JSC::BytecodeGenerator::emitPutById):
        (JSC::BytecodeGenerator::emitPutByVal):
        * bytecompiler/BytecodeGenerator.h:
        (JSC::BytecodeGenerator::isProfilingTypesWithHighFidelity):
        * bytecompiler/NodesCodegen.cpp:
        (JSC::PostfixNode::emitResolve):
        (JSC::PrefixNode::emitResolve):
        (JSC::ReadModifyResolveNode::emitBytecode):
        (JSC::AssignResolveNode::emitBytecode):
        (JSC::ConstDeclNode::emitCodeSingle):
        (JSC::ForInNode::emitBytecode):
        * heap/Heap.cpp:
        (JSC::Heap::collect):
        * inspector/agents/InspectorRuntimeAgent.cpp:
        (Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableInTextRange):
        * inspector/agents/InspectorRuntimeAgent.h:
        * inspector/protocol/Runtime.json:
        * jsc.cpp:
        (GlobalObject::finishCreation):
        (functionDumpTypesForAllVariables):
        * llint/LLIntSlowPaths.cpp:
        (JSC::LLInt::LLINT_SLOW_PATH_DECL):
        (JSC::LLInt::putToScopeCommon):
        * llint/LLIntSlowPaths.h:
        * llint/LowLevelInterpreter.asm:
        * runtime/HighFidelityLog.cpp: Added.
        (JSC::HighFidelityLog::initializeHighFidelityLog):
        (JSC::HighFidelityLog::~HighFidelityLog):
        (JSC::HighFidelityLog::recordTypeInformationForLocation):
        (JSC::HighFidelityLog::processHighFidelityLog):
        (JSC::HighFidelityLog::actuallyProcessLogThreadFunction):
        * runtime/HighFidelityLog.h: Added.
        (JSC::HighFidelityLog::HighFidelityLog):
        * runtime/HighFidelityTypeProfiler.cpp: Added.
        (JSC::HighFidelityTypeProfiler::getTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getLocalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::insertNewLocation):
        (JSC::HighFidelityTypeProfiler::getLocationBasedHash):
        * runtime/HighFidelityTypeProfiler.h: Added.
        * runtime/Options.h:
        * runtime/Structure.cpp:
        (JSC::Structure::toStructureShape):
        * runtime/Structure.h:
        * runtime/SymbolTable.cpp:
        (JSC::SymbolTable::SymbolTable):
        (JSC::SymbolTable::cloneCapturedNames):
        (JSC::SymbolTable::uniqueIDForVariable):
        (JSC::SymbolTable::uniqueIDForRegister):
        (JSC::SymbolTable::globalTypeSetForRegister):
        (JSC::SymbolTable::globalTypeSetForVariable):
        * runtime/SymbolTable.h:
        (JSC::SymbolTable::add):
        (JSC::SymbolTable::set):
        * runtime/TypeSet.cpp: Added.
        (JSC::TypeSet::TypeSet):
        (JSC::TypeSet::getRuntimeTypeForValue):
        (JSC::TypeSet::addTypeForValue):
        (JSC::TypeSet::removeDuplicatesInStructureHistory):
        (JSC::TypeSet::seenTypes):
        (JSC::TypeSet::dumpSeenTypes):
        (JSC::StructureShape::StructureShape):
        (JSC::StructureShape::markAsFinal):
        (JSC::StructureShape::addProperty):
        (JSC::StructureShape::propertyHash):
        (JSC::StructureShape::leastUpperBound):
        (JSC::StructureShape::stringRepresentation):
        * runtime/TypeSet.h: Added.
        (JSC::StructureShape::create):
        (JSC::TypeSet::create):
        * runtime/VM.cpp:
        (JSC::VM::VM):
        (JSC::VM::getTypesForVariableInRange):
        (JSC::VM::updateHighFidelityTypeProfileState):
        (JSC::VM::dumpHighFidelityProfilingTypes):
        * runtime/VM.h:
        (JSC::VM::isProfilingTypesWithHighFidelity):
        (JSC::VM::highFidelityLog):
        (JSC::VM::highFidelityTypeProfiler):
        (JSC::VM::nextLocation):
        (JSC::VM::getNextUniqueVariableID):</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018385</commentid>
    <comment_count>24</comment_count>
      <attachid>233830</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-25 12:31:48 -0700</bug_when>
    <thetext>Created attachment 233830
patch

2014-06-24  Saam Barati  &lt;sbarati@apple.com&gt;

        Web Inspector: debugger should be able to show variable types
        https://bugs.webkit.org/show_bug.cgi?id=133395

        Reviewed by NOBODY (OOPS!).

        Increase the amount of type information the VM gathers when directed
        to do so. This initial commit is working towards the goal of
        capturing, and then showing (via the Web Inspector) type information for all
        assignment and load operations. This patch doesn&apos;t have the feature fully 
        implemented, but it ensures the VM has no performance regressions
        unless the feature is specifically turned on.

        * JavaScriptCore.xcodeproj/project.pbxproj:
        * bytecode/BytecodeList.json:
        * bytecode/BytecodeUseDef.h:
        (JSC::computeUsesForBytecodeOffset):
        (JSC::computeDefsForBytecodeOffset):
        * bytecode/CodeBlock.cpp:
        (JSC::CodeBlock::dumpBytecode):
        (JSC::CodeBlock::CodeBlock):
        (JSC::CodeBlock::finalizeUnconditionally):
        * bytecode/CodeBlock.h:
        * bytecode/Instruction.h:
        * bytecode/TypeLocation.h: Added.
        (JSC::TypeLocation::TypeLocation):
        * bytecompiler/BytecodeGenerator.cpp:
        (JSC::BytecodeGenerator::emitMove):
        (JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity):
        (JSC::BytecodeGenerator::emitPutToScope):
        (JSC::BytecodeGenerator::emitPutById):
        (JSC::BytecodeGenerator::emitPutByVal):
        * bytecompiler/BytecodeGenerator.h:
        (JSC::BytecodeGenerator::isProfilingTypesWithHighFidelity):
        * bytecompiler/NodesCodegen.cpp:
        (JSC::PostfixNode::emitResolve):
        (JSC::PrefixNode::emitResolve):
        (JSC::ReadModifyResolveNode::emitBytecode):
        (JSC::AssignResolveNode::emitBytecode):
        (JSC::ConstDeclNode::emitCodeSingle):
        (JSC::ForInNode::emitBytecode):
        * heap/Heap.cpp:
        (JSC::Heap::collect):
        * inspector/agents/InspectorRuntimeAgent.cpp:
        (Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableInTextRange):
        * inspector/agents/InspectorRuntimeAgent.h:
        * inspector/protocol/Runtime.json:
        * jsc.cpp:
        (GlobalObject::finishCreation):
        (functionDumpTypesForAllVariables):
        * llint/LLIntSlowPaths.cpp:
        (JSC::LLInt::LLINT_SLOW_PATH_DECL):
        (JSC::LLInt::putToScopeCommon):
        * llint/LLIntSlowPaths.h:
        * llint/LowLevelInterpreter.asm:
        * runtime/HighFidelityLog.cpp: Added.
        (JSC::HighFidelityLog::initializeHighFidelityLog):
        (JSC::HighFidelityLog::~HighFidelityLog):
        (JSC::HighFidelityLog::recordTypeInformationForLocation):
        (JSC::HighFidelityLog::processHighFidelityLog):
        (JSC::HighFidelityLog::actuallyProcessLogThreadFunction):
        * runtime/HighFidelityLog.h: Added.
        (JSC::HighFidelityLog::HighFidelityLog):
        * runtime/HighFidelityTypeProfiler.cpp: Added.
        (JSC::HighFidelityTypeProfiler::getTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::getLocalTypesForVariableInRange):
        (JSC::HighFidelityTypeProfiler::insertNewLocation):
        (JSC::HighFidelityTypeProfiler::getLocationBasedHash):
        * runtime/HighFidelityTypeProfiler.h: Added.
        * runtime/Options.h:
        * runtime/Structure.cpp:
        (JSC::Structure::toStructureShape):
        * runtime/Structure.h:
        * runtime/SymbolTable.cpp:
        (JSC::SymbolTable::SymbolTable):
        (JSC::SymbolTable::cloneCapturedNames):
        (JSC::SymbolTable::uniqueIDForVariable):
        (JSC::SymbolTable::uniqueIDForRegister):
        (JSC::SymbolTable::globalTypeSetForRegister):
        (JSC::SymbolTable::globalTypeSetForVariable):
        * runtime/SymbolTable.h:
        (JSC::SymbolTable::add):
        (JSC::SymbolTable::set):
        * runtime/TypeSet.cpp: Added.
        (JSC::TypeSet::TypeSet):
        (JSC::TypeSet::getRuntimeTypeForValue):
        (JSC::TypeSet::addTypeForValue):
        (JSC::TypeSet::removeDuplicatesInStructureHistory):
        (JSC::TypeSet::seenTypes):
        (JSC::TypeSet::dumpSeenTypes):
        (JSC::StructureShape::StructureShape):
        (JSC::StructureShape::markAsFinal):
        (JSC::StructureShape::addProperty):
        (JSC::StructureShape::propertyHash):
        (JSC::StructureShape::leastUpperBound):
        (JSC::StructureShape::stringRepresentation):
        * runtime/TypeSet.h: Added.
        (JSC::StructureShape::create):
        (JSC::TypeSet::create):
        * runtime/VM.cpp:
        (JSC::VM::VM):
        (JSC::VM::getTypesForVariableInRange):
        (JSC::VM::updateHighFidelityTypeProfileState):
        (JSC::VM::dumpHighFidelityProfilingTypes):
        * runtime/VM.h:
        (JSC::VM::isProfilingTypesWithHighFidelity):
        (JSC::VM::highFidelityLog):
        (JSC::VM::highFidelityTypeProfiler):
        (JSC::VM::nextLocation):
        (JSC::VM::getNextUniqueVariableID):</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018700</commentid>
    <comment_count>25</comment_count>
      <attachid>233830</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-26 12:01:03 -0700</bug_when>
    <thetext>Comment on attachment 233830
patch

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

I will land this.

&gt; Source/JavaScriptCore/runtime/HighFidelityLog.cpp:91
&gt; +    LogEntry* temp = m_logStartPtr;
&gt; +    m_logStartPtr = m_nextBuffer;
&gt; +    m_nextBuffer = temp;
&gt; +    

std::swap()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018708</commentid>
    <comment_count>26</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-26 12:38:31 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/170490</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019210</commentid>
    <comment_count>27</comment_count>
      <attachid>234049</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-28 10:08:37 -0700</bug_when>
    <thetext>Created attachment 234049
patch

This patch re-works locations from line/column tuple to a start/end character offset.

Also, the profile_types_with_high_fidelity opcode is emitted in more places:
- At the call site of functions after they return (to capture their return values)
- At the beginning of the function that is called to profile its arguments.
- At getById/getByValue sites.

A side table of assignmentExpressionInfo is created (though the word assignment is misleading, it should really be highFidelityProfileExpressionInfo; I will rename this in the next patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019533</commentid>
    <comment_count>28</comment_count>
      <attachid>234137</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-06-30 18:40:52 -0700</bug_when>
    <thetext>Created attachment 234137
patch

2014-06-30  Saam Barati  &lt;sbarati@apple.com&gt;

        Web Inspector: debugger should be able to show variable types
        https://bugs.webkit.org/show_bug.cgi?id=133395

        Reviewed by NOBODY (OOPS!).

        More operations are now being recorded by the profile_types_with_high_fidelity 
        opcode. Specifically: function parameters, function return values,
        function &apos;this&apos; value, get_by_id, get_by_value, function return values
        at the call site. Added more flags to the profile_types_with_high_fidelity
        opcode so more focused tasks can take place when the instruction is
        being linked in CodeBlock. Re-worked the type profiler to search 
        through character offset ranges when asked for the type of an expression
        at a given offset.

        * bytecode/CodeBlock.cpp:
        (JSC::CodeBlock::CodeBlock):
        * bytecode/CodeBlock.h:
        (JSC::CodeBlock::returnStatementTypeSet):
        * bytecode/TypeLocation.h:
        * bytecode/UnlinkedCodeBlock.cpp:
        (JSC::UnlinkedCodeBlock::highFidelityTypeProfileExpressionInfoForBytecodeOffset):
        (JSC::UnlinkedCodeBlock::addHighFidelityTypeProfileExpressionInfo):
        * bytecode/UnlinkedCodeBlock.h:
        * bytecompiler/BytecodeGenerator.cpp:
        (JSC::BytecodeGenerator::emitMove):
        (JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity):
        (JSC::BytecodeGenerator::emitPutById):
        (JSC::BytecodeGenerator::emitPutByVal):
        * bytecompiler/BytecodeGenerator.h:
        (JSC::BytecodeGenerator::emitHighFidelityTypeProfilingExpressionInfo):
        * bytecompiler/NodesCodegen.cpp:
        (JSC::BracketAccessorNode::emitBytecode):
        (JSC::DotAccessorNode::emitBytecode):
        (JSC::FunctionCallValueNode::emitBytecode):
        (JSC::FunctionCallResolveNode::emitBytecode):
        (JSC::FunctionCallBracketNode::emitBytecode):
        (JSC::FunctionCallDotNode::emitBytecode):
        (JSC::CallFunctionCallDotNode::emitBytecode):
        (JSC::ApplyFunctionCallDotNode::emitBytecode):
        (JSC::PostfixNode::emitResolve):
        (JSC::PostfixNode::emitBracket):
        (JSC::PostfixNode::emitDot):
        (JSC::PrefixNode::emitResolve):
        (JSC::PrefixNode::emitBracket):
        (JSC::PrefixNode::emitDot):
        (JSC::ReadModifyResolveNode::emitBytecode):
        (JSC::AssignResolveNode::emitBytecode):
        (JSC::AssignDotNode::emitBytecode):
        (JSC::ReadModifyDotNode::emitBytecode):
        (JSC::AssignBracketNode::emitBytecode):
        (JSC::ReadModifyBracketNode::emitBytecode):
        (JSC::ReturnNode::emitBytecode):
        (JSC::FunctionBodyNode::emitBytecode):
        (JSC::FuncDeclNode::emitBytecode):
        * inspector/agents/InspectorRuntimeAgent.cpp:
        (Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableAtOffset):
        (Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableInTextRange): Deleted.
        * inspector/agents/InspectorRuntimeAgent.h:
        * inspector/protocol/Runtime.json:
        * runtime/HighFidelityLog.cpp:
        (JSC::HighFidelityLog::processHighFidelityLog):
        * runtime/HighFidelityTypeProfiler.cpp:
        (JSC::HighFidelityTypeProfiler::getTypesForVariableInAtOffset):
        (JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableAtOffset):
        (JSC::HighFidelityTypeProfiler::getLocalTypesForVariableAtOffset):
        (JSC::HighFidelityTypeProfiler::insertNewLocation):
        (JSC::HighFidelityTypeProfiler::findLocation):
        (JSC::HighFidelityTypeProfiler::getTypesForVariableInRange): Deleted.
        (JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableInRange): Deleted.
        (JSC::HighFidelityTypeProfiler::getLocalTypesForVariableInRange): Deleted.
        (JSC::HighFidelityTypeProfiler::getLocationBasedHash): Deleted.
        * runtime/HighFidelityTypeProfiler.h:
        (JSC::LocationKey::LocationKey): Deleted.
        (JSC::LocationKey::hash): Deleted.
        (JSC::LocationKey::operator==): Deleted.
        * runtime/VM.cpp:
        (JSC::VM::getTypesForVariableAtOffset):
        (JSC::VM::dumpHighFidelityProfilingTypes):
        (JSC::VM::getTypesForVariableInRange): Deleted.
        * runtime/VM.h:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019898</commentid>
    <comment_count>29</comment_count>
      <attachid>234237</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-07-01 20:34:25 -0700</bug_when>
    <thetext>Created attachment 234237
patch

2014-07-01  Saam Barati  &lt;sbarati@apple.com&gt;

        Web Inspector: debugger should be able to show variable types
        https://bugs.webkit.org/show_bug.cgi?id=133395

        Reviewed by NOBODY (OOPS!).

        More operations are now being recorded by the profile_types_with_high_fidelity 
        opcode. Specifically: function parameters, function return values,
        function &apos;this&apos; value, get_by_id, get_by_value, resolve nodes, function return 
        values at the call site. Added more flags to the profile_types_with_high_fidelity
        opcode so more focused tasks can take place when the instruction is
        being linked in CodeBlock. Re-worked the type profiler to search 
        through character offset ranges when asked for the type of an expression
        at a given offset. Removed redundant calls to Structure::toStructureShape
        in HighFidelityLog and TypeSet by caching calls based on StructureID.

        * bytecode/BytecodeList.json:
        * bytecode/BytecodeUseDef.h:
        (JSC::computeUsesForBytecodeOffset):
        (JSC::computeDefsForBytecodeOffset):
        * bytecode/CodeBlock.cpp:
        (JSC::CodeBlock::CodeBlock):
        (JSC::CodeBlock::finalizeUnconditionally):
        (JSC::CodeBlock::scopeDependentProfile):
        * bytecode/CodeBlock.h:
        (JSC::CodeBlock::returnStatementTypeSet):
        * bytecode/TypeLocation.h:
        * bytecode/UnlinkedCodeBlock.cpp:
        (JSC::UnlinkedCodeBlock::highFidelityTypeProfileExpressionInfoForBytecodeOffset):
        (JSC::UnlinkedCodeBlock::addHighFidelityTypeProfileExpressionInfo):
        * bytecode/UnlinkedCodeBlock.h:
        * bytecompiler/BytecodeGenerator.cpp:
        (JSC::BytecodeGenerator::emitMove):
        (JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity):
        (JSC::BytecodeGenerator::emitGetFromScopeWithProfile):
        (JSC::BytecodeGenerator::emitPutToScope):
        (JSC::BytecodeGenerator::emitPutToScopeWithProfile):
        (JSC::BytecodeGenerator::emitPutById):
        (JSC::BytecodeGenerator::emitPutByVal):
        * bytecompiler/BytecodeGenerator.h:
        (JSC::BytecodeGenerator::emitHighFidelityTypeProfilingExpressionInfo):
        * bytecompiler/NodesCodegen.cpp:
        (JSC::ResolveNode::emitBytecode):
        (JSC::BracketAccessorNode::emitBytecode):
        (JSC::DotAccessorNode::emitBytecode):
        (JSC::FunctionCallValueNode::emitBytecode):
        (JSC::FunctionCallResolveNode::emitBytecode):
        (JSC::FunctionCallBracketNode::emitBytecode):
        (JSC::FunctionCallDotNode::emitBytecode):
        (JSC::CallFunctionCallDotNode::emitBytecode):
        (JSC::ApplyFunctionCallDotNode::emitBytecode):
        (JSC::PostfixNode::emitResolve):
        (JSC::PostfixNode::emitBracket):
        (JSC::PostfixNode::emitDot):
        (JSC::PrefixNode::emitResolve):
        (JSC::PrefixNode::emitBracket):
        (JSC::PrefixNode::emitDot):
        (JSC::ReadModifyResolveNode::emitBytecode):
        (JSC::AssignResolveNode::emitBytecode):
        (JSC::AssignDotNode::emitBytecode):
        (JSC::ReadModifyDotNode::emitBytecode):
        (JSC::AssignBracketNode::emitBytecode):
        (JSC::ReadModifyBracketNode::emitBytecode):
        (JSC::ReturnNode::emitBytecode):
        (JSC::FunctionBodyNode::emitBytecode):
        * inspector/agents/InspectorRuntimeAgent.cpp:
        (Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableAtOffset):
        (Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableInTextRange): Deleted.
        * inspector/agents/InspectorRuntimeAgent.h:
        * inspector/protocol/Runtime.json:
        * llint/LLIntSlowPaths.cpp:
        (JSC::LLInt::getFromScopeCommon):
        (JSC::LLInt::LLINT_SLOW_PATH_DECL):
        * llint/LLIntSlowPaths.h:
        * llint/LowLevelInterpreter.asm:
        * runtime/HighFidelityLog.cpp:
        (JSC::HighFidelityLog::processHighFidelityLog):
        (JSC::HighFidelityLog::actuallyProcessLogThreadFunction):
        (JSC::HighFidelityLog::recordTypeInformationForLocation): Deleted.
        * runtime/HighFidelityLog.h:
        (JSC::HighFidelityLog::recordTypeInformationForLocation):
        * runtime/HighFidelityTypeProfiler.cpp:
        (JSC::HighFidelityTypeProfiler::getTypesForVariableInAtOffset):
        (JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableAtOffset):
        (JSC::HighFidelityTypeProfiler::getLocalTypesForVariableAtOffset):
        (JSC::HighFidelityTypeProfiler::insertNewLocation):
        (JSC::HighFidelityTypeProfiler::findLocation):
        (JSC::HighFidelityTypeProfiler::getTypesForVariableInRange): Deleted.
        (JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableInRange): Deleted.
        (JSC::HighFidelityTypeProfiler::getLocalTypesForVariableInRange): Deleted.
        (JSC::HighFidelityTypeProfiler::getLocationBasedHash): Deleted.
        * runtime/HighFidelityTypeProfiler.h:
        (JSC::LocationKey::LocationKey): Deleted.
        (JSC::LocationKey::hash): Deleted.
        (JSC::LocationKey::operator==): Deleted.
        * runtime/Structure.h:
        * runtime/TypeSet.cpp:
        (JSC::TypeSet::TypeSet):
        (JSC::TypeSet::addTypeForValue):
        (JSC::TypeSet::seenTypes):
        (JSC::TypeSet::removeDuplicatesInStructureHistory): Deleted.
        * runtime/TypeSet.h:
        * runtime/VM.cpp:
        (JSC::VM::getTypesForVariableAtOffset):
        (JSC::VM::dumpHighFidelityProfilingTypes):
        (JSC::VM::getTypesForVariableInRange): Deleted.
        * runtime/VM.h:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020317</commentid>
    <comment_count>30</comment_count>
      <attachid>234237</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-03 11:14:37 -0700</bug_when>
    <thetext>Comment on attachment 234237
patch

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

R=me, but can you post a new patch to a different bug, and also fix the one indentation issue?

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:584
&gt; +        public:

You don&apos;t need this.  Struct members are public by default.  Also, ordinarily this wouldn&apos;t be indented.  Example:

class Foo {
public:
    int m_bar;
}

Notice how &quot;public:&quot; aligns with &quot;class&quot;.

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:586
&gt; +            unsigned m_startDivot;
&gt; +            unsigned m_endDivot;

Deindent by four spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027336</commentid>
    <comment_count>31</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-08-06 16:12:54 -0700</bug_when>
    <thetext>Landed missing build changes in r172184: &lt;http://trac.webkit.org/r172184&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232278</attachid>
            <date>2014-05-29 19:12:27 -0700</date>
            <delta_ts>2014-06-18 08:32:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>12264</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpp
bmRleCA0MjY3YTY5Li5kY2U4MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xMjIsOCArMTIyLDcgQEAKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2RlYnVnIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9wcm9maWxlX3dpbGxfY2FsbCIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV9kaWRfY2FsbCIsICJsZW5ndGgiIDogMiB9LAotICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0aCIgOiAyIH0sCi0gICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSIsICJsZW5n
dGgiIDogMiB9CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9lbmQiLCAibGVuZ3RoIiA6IDIg
fQogICAgICAgICBdCiAgICAgfSwKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IGE3M2VkZDIuLjkyNDQ5ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC01NCw5
ICs1NCw2IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9w
X2luaXRfbGF6eV9yZWc6CiAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOgogICAgIGNhc2Ugb3BfZW50
ZXI6Ci0gICAgLy9zYiBUT0RPOiBTaG91bGQgdGhpcyBmdW5jdG9yIGJlIGNhbGxlZCB3aXRoIG9u
ZSBvcGVyYW5kPwotICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6
Ci0gICAgLy9zYgogICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF90b3VjaF9lbnRyeToK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjkwLDkgKzI4Nyw2IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsCiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICBjYXNlIG9wX3B1dF9ieV9p
bmRleDoKICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FyZ3VtZW50czoKLSAgICAvL3NiCi0gICAgY2Fz
ZSBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKLSAgICAvL3NiCiAgICAgY2Fz
ZSBvcF90b3VjaF9lbnRyeToKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBs
ZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5T
SU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYzRmZDVkNy4u
ZTU0OWI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTEwMDIsMTAgKzEwMDIsNiBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmUoUmVnaXN0ZXJJRCogZHN0LCBDYXB0dXJl
TW9kZSBjYXB0dXJlTW9kZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMtPmluZGV4KCkp
OwogICAgIGlmIChjYXB0dXJlTW9kZSA9PSBJc0NhcHR1cmVkKQogICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQod2F0Y2hhYmxlVmFyaWFibGUoZHN0LT5pbmRleCgpKSk7Ci0KLSAgICBpZiAo
IWRzdC0+aXNUZW1wb3JhcnkoKSkKLSAgICAgICAgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoZHN0KTsKLQogICAgIHJldHVybiBkc3Q7CiB9CgpAQCAtMTExNCwxMyArMTExMCw2IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcChPcGNvZGVJRCBv
cGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzIt
PmluZGV4KCkpOwogICAgIHJldHVybiBkc3Q7CiB9Ci0vL3NiCi12b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiBkc3QpCi17
Ci0gICAgZW1pdE9wY29kZShvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci19Ci0vL3NiCgogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCBi
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IDExNzllMmYuLmRkZThlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAg
LTMzMSw5ICszMzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKCiAgICAgICAgICAgICByZXR1cm4gZW1p
dE5vZGUobik7CiAgICAgICAgIH0KLSAgICAgICAgLy9zYgotICAgICAgICB2b2lkIGVtaXRQcm9m
aWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KFJlZ2lzdGVySUQqIGRzdCk7Ci0gICAgICAgIC8vc2IK
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGNm
MWEyZDEuLjVhMTA5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtNTM0LDgzICs1MzQsNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbmV3X3JlZ2V4cCkKICAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVh
dGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJl
Z0V4cCkpOwogfQoKLSNpZm5kZWYgTkRFQlVHCi1lbnVtIFJ1bnRpbWVUeXBlIHsKLSAgICBUeXBl
RnVuY3Rpb24sCi0gICAgVHlwZVVuZGVmaW5lZCwKLSAgICBUeXBlTnVsbCwKLSAgICBUeXBlQm9v
bGVhbiwKLSAgICBUeXBlTnVtYmVyLAotICAgIFR5cGVTdHJpbmcsCi0gICAgVHlwZU9iamVjdAot
fTsKLQotUnVudGltZVR5cGUgZ2F0aGVyVHlwZShKU1ZhbHVlJiB2KTsKLVJ1bnRpbWVUeXBlIGdh
dGhlclR5cGUoSlNWYWx1ZSYgdikgewotICAgIGlmICh2LmlzRnVuY3Rpb24oKSkKLSAgICAgICAg
cmV0dXJuIFR5cGVGdW5jdGlvbjsKLSAgICBlbHNlIGlmICh2LmlzVW5kZWZpbmVkKCkpCi0gICAg
ICAgIHJldHVybiBUeXBlVW5kZWZpbmVkOwotICAgIGVsc2UgaWYgKHYuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBUeXBlTnVsbDsKLSAgICBlbHNlIGlmICh2LmlzQm9vbGVhbigpKQotICAgICAg
ICByZXR1cm4gVHlwZUJvb2xlYW47Ci0gICAgZWxzZSBpZiAodi5pc1N0cmluZygpKQotICAgICAg
ICByZXR1cm4gVHlwZVN0cmluZzsKLSAgICBlbHNlIGlmICh2LmlzU3RyaW5nKCkpCi0gICAgICAg
IHJldHVybiBUeXBlU3RyaW5nOwotICAgIGVsc2UgaWYgKHYuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIFR5cGVPYmplY3Q7Ci0gICAgZWxzZQotICAgICAgICBDUkFTSCgpOwotfQotI2VuZGlm
Ci0KLS8vaGVhZGVyID0+IGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50XyMjbmFt
ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKLUxMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSkKLXsKLSAgICBMTElO
VF9CRUdJTigpOwotCi0gICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RSZWcocGNbMV0udS5vcGVyYW5k
KTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIGNv
bnN0IGNoYXIqIHZhcmlhYmxlTmFtZSA9IGNvZGVCbG9jay0+bmFtZUZvclJlZ2lzdGVyKGRlc3RS
ZWcpLmFzY2lpKCkuZGF0YSgpOwotICAgIHByaW50ZigicmVnaXN0ZXIgbmFtZTogJXNcbiIsIHZh
cmlhYmxlTmFtZSk7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgY29uc3QgY2hhciogdCA9IE5VTEw7
Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKLSAgICBSdW50aW1l
VHlwZSB0eXBlID0gZ2F0aGVyVHlwZSh2YWx1ZSk7Ci0gICAgY29uc3QgY2hhciogdmFsdWVTdHJp
bmcgPSB2YWx1ZS5nZXRTdHJpbmcoZXhlYykuYXNjaWkoKS5kYXRhKCk7Ci0gICAgc3dpdGNoICh0
eXBlKSB7Ci0gICAgY2FzZSBUeXBlRnVuY3Rpb246Ci0gICAgICAgIHQgPSAiRnVuY3Rpb24iOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGVVbmRlZmluZWQ6Ci0gICAgICAgIHQgPSAiVW5k
ZWZpbmVkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlTnVsbDoKLSAgICAgICAgdCA9
ICJOdWxsIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlQm9vbGVhbjoKLSAgICAgICAg
dCA9ICJCb29sZWFuIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlTnVtYmVyOgotICAg
ICAgICB0ID0gIk51bWJlciI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHlwZVN0cmluZzoK
LSAgICAgICAgdCA9ICJTdHJpbmciOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGVPYmpl
Y3Q6Ci0gICAgICAgIHQgPSAiT2JqZWN0IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
cHJpbnRmKCJSdW50aW1lIHR5cGU6ICVzLCB2YWx1ZTolc1xuIiwgdCwgdmFsdWVTdHJpbmcpOwot
I2VuZGlmCi0KLSAgICBMTElOVF9FTkRfSU1QTCgpOwotfQotCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY2hlY2tfaGFzX2luc3RhbmNlKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IGJlYTM4
M2YuLjljNmYxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCkBAIC03MCw5ICs3MCw2IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmV3X2FycmF5KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV3X2FycmF5X3dpdGhfc2l6ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX25ld19hcnJheV9idWZmZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9uZXdfcmVnZXhwKTsKLS8vc2IKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkpOwotLy9zYgogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBlMzM2ZmUw
Li5mZmQxMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMjMyLDggKzEyMzIsMyBAQCBlbmQKIF9sbGludF9vcF9p
bml0X2dsb2JhbF9jb25zdF9ub3A6CiAgICAgZGlzcGF0Y2goNSkKCi0jc2IKLV9sbGludF9vcF9w
cm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSkKLSAgICBkaXNwYXRj
aCgyKQotI3NiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhMmFhYjI1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIu
aCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLVBhc3NSZWZQdHI8SGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyPiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OlBhc3NSZWZQdHI8SGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyPmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIoKSk7Ci19Ci0KLQotCi19IC8vbmFtZXNwYWNlIEpTQwotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NmVmZjMuLjAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyX2gKLSNkZWZpbmUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gKLQotbmFtZXNw
YWNlIEpTQyB7Ci0KLWNsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlciA6IHB1YmxpYyBSZWZD
b3VudGVkPEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcj4gewotCi1wdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyPiBjcmVhdGUoKTsKLQotfTsKLQot
fSAvL25hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBlNjU5MjMwLi5hMTg1YTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJ
dGVyYXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIgog
I2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCkBAIC0yMzAsNyArMjI5LDYgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9jb2RlQ2FjaGUo
Q29kZUNhY2hlOjpjcmVhdGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCiAg
ICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhp
cykpCi0gICAgLCBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcihIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXI6OmNyZWF0ZSgpKQogewogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0
aGlzKTsKICAgICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggY2JmMTcwZC4uMDdiNDlmMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC03NCw3ICs3NCw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAg
ICBjbGFzcyBIYW5kbGVTdGFjazsKLSAgICBjbGFzcyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI7
CiAgICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKQEAgLTMxNCw5ICszMTMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBzZXRFbmFibGVkUHJvZmlsZXIoTGVnYWN5UHJvZmlsZXIqKTsKCiAgICAgICAg
IHZvaWQqIGVuYWJsZWRQcm9maWxlckFkZHJlc3MoKSB7IHJldHVybiAmbV9lbmFibGVkUHJvZmls
ZXI7IH0KLSAgICAgICAgLy9zYgotICAgICAgICBSZWZQdHI8SGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyPiBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjsKLSAgICAgICAgLy9zYgoKICNpZiBFTkFC
TEUoSklUKSAmJiBFTkFCTEUoTExJTlQpCiAgICAgICAgIGJvb2wgY2FuVXNlSklUKCkgeyByZXR1
cm4gbV9jYW5Vc2VKSVQ7IH0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDJjZjI5ZDQu
LjAwMDAwMDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>232512</attachid>
            <date>2014-06-04 17:27:59 -0700</date>
            <delta_ts>2014-06-18 09:34:24 -0700</delta_ts>
            <desc>Continued progress</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>47485</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzM1M2FhMC4uMDY1MjhhNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgyMSw2ICs4MjEsMTEgQEAKIAkJNDEzNTlDRjMw
RkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0
ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZvdW5k
YXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
ICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAwRUY3
QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1MkFGRjQ0MDE5M0NDREEzMDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkFG
RjQzRjE5M0NDREEzMDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi87IH07
CisJCTUyQUZGNDQyMTkzRDBFMkUwMDFEQUFENCAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJE
dW1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkFG
RjQ0MTE5M0QwRTJFMDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5oICov
OyB9OworCQk1MkFGRjQ0NDE5M0QwRTQ5MDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyRHVtcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MkFGRjQ0MzE5M0QwRTQ5MDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVt
cC5jcHAgKi87IH07CisJCTUyREM5QzEwMTkzOTMwOTgwMEZBNzQ2MyAvKiBUeXBlU2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkRDOUMwRjE5Mzkz
MDk4MDBGQTc0NjMgLyogVHlwZVNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTUyREM5QzEyMTkzOTMwQjEwMEZBNzQ2MyAvKiBUeXBlU2V0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyREM5QzEx
MTkzOTMwQjEwMEZBNzQ2MyAvKiBUeXBlU2V0LmNwcCAqLzsgfTsKIAkJNTUxMDUwMjYxOEVCODI3
NTAwMDAxRjNFIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4OEYwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2Fs
bGJhY2tGdW5jdGlvbi5oICovOyB9OwogCQk1NTQwNzU3MjE4REE1OEFEMDBFRkY3RjIgLyogQXJn
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNG
NjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLzsgfTsKIAkJNTU0MDc1NzMxOERB
NThBRDAwRUZGN0YyIC8qIEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyNTdERTYwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5o
ICovOyB9OwpAQCAtMjU5NSw2ICsyNjAwLDEyIEBACiAJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4
NCAvKiBqc2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0ganNjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0
OyB9OwogCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07CiAJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGli
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIv
bGlib2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJNTJBRkY0M0Yx
OTNDQ0RBMzAwMURBQUQ0IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaDsgcGF0aCA9IHByb2ZpbGVyL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkFGRjQ0
MTE5M0QwRTJFMDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmg7IHBhdGggPSBwcm9maWxl
ci9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUyQUZGNDQzMTkzRDBFNDkwMDFEQUFENCAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXJEdW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1
bXAuY3BwOyBwYXRoID0gcHJvZmlsZXIvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQUZGNDQ4MTkzRkQzNTkwMDFEQUFENCAv
KiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFR5cGVTZXQuaDsgcGF0aCA9IHByb2ZpbGVyL1R5
cGVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJEQzlDMEYxOTM5MzA5ODAw
RkE3NDYzIC8qIFR5cGVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVHlwZVNldC5oOyBwYXRoID0gcHJv
ZmlsZXIvVHlwZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkRDOUMxMTE5
MzkzMEIxMDBGQTc0NjMgLyogVHlwZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUeXBlU2V0
LmNwcDsgcGF0aCA9IHByb2ZpbGVyL1R5cGVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NTQwNzU4NDE4RjRBMzc1MDA2MDJBNUQgLyogQ29tcGlsZVJ1bnRpbWVUb0xMVk1J
Ui54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBDb21waWxlUnVudGlt
ZVRvTExWTUlSLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwN0FD
ODE4REE1OEFEMDBFRkY3RjIgLyogbGliQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi5hICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmE7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVENTM3MjZEMEUxQzU0NkIwMDIxRTU0
OSAvKiBUcmFjaW5nLmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVHJhY2luZy5kOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ0MSw2ICszNDUyLDcgQEAKIAkJMDg2N0Q2OTFGRTg0
MDI4RkMwMkFBQzA3IC8qIEphdmFTY3JpcHRDb3JlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MkFGRjQ0ODE5M0ZEMzU5MDAxREFBRDQgLyogVHlwZVNl
dC5oICovLAogCQkJCTY1MjlGQjMwMThCMkQ2MzkwMEM2MTEwMiAvKiBnZW5lcmF0ZS1ieXRlY29k
ZS1maWxlcyAqLywKIAkJCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9nICov
LAogCQkJCUY2OTJBODU0MDI1NTU5N0QwMUZGNjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLywK
QEAgLTQ4NTUsNiArNDg2Nyw5IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTk1RTNCQzA0MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRpZmllci5oICovLAor
CQkJCTUyQUZGNDNGMTkzQ0NEQTMwMDFEQUFENCAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIu
aCAqLywKKwkJCQk1MkFGRjQ0MzE5M0QwRTQ5MDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyRHVtcC5jcHAgKi8sCisJCQkJNTJBRkY0NDExOTNEMEUyRTAwMURBQUQ0IC8qIEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlckR1bXAuaCAqLywKIAkJCQk5NUFCODMyRTBEQTQyQ0FEMDBCQzgz
RjMgLyogTGVnYWN5UHJvZmlsZXIuY3BwICovLAogCQkJCTk1QUI4MzJGMERBNDJDQUQwMEJDODNG
MyAvKiBMZWdhY3lQcm9maWxlci5oICovLAogCQkJCTk1NzQyRjYzMEREMTFGNUEwMDA5MTdGQiAv
KiBQcm9maWxlLmNwcCAqLywKQEAgLTQ4OTAsNiArNDkwNSw4IEBACiAJCQkJMEZCMTA1OEExNjc1
NDgyRTAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdFNpdGUuaCAqLywKIAkJCQkwRjEzOTEyNjE2
NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAgKi8sCiAJCQkJ
MEYxMzkxMjcxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCAq
LywKKwkJCQk1MkRDOUMxMTE5MzkzMEIxMDBGQTc0NjMgLyogVHlwZVNldC5jcHAgKi8sCisJCQkJ
NTJEQzlDMEYxOTM5MzA5ODAwRkE3NDYzIC8qIFR5cGVTZXQuaCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gcHJvZmlsZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTQ5NSw2ICs1NTEy
LDcgQEAKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFS
TUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJEQzlDMTAxOTM5MzA5ODAwRkE3NDYz
IC8qIFR5cGVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwMzIwMThCRkZCRTEwMDVBMDgx
MSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0
MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1MjQ4RjkxOTE0
NDJEOTAwQjdGREU0IC8qIFZhcmlhYmxlV2F0Y2hwb2ludFNldElubGluZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtNjE3Nyw2ICs2MTk1LDggQEAKIAkJCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEg
LyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjFDQkExODYxMjQ0QzAwODQ1
RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
QjFDQkUxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJBRkY0NDIxOTNEMEUyRTAwMURBQUQ0IC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlckR1bXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyQUZGNDQw
MTkzQ0NEQTMwMDFEQUFENCAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzMxNDEyMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU3RDIzRUUxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNz
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5RDE1RUQ4RTQ2MDBGMTY3QjIgLyogUmVq
ZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTY4MjIsNiArNjg0Miw3IEBACiAJCQlpc2EgPSBQQlhT
b3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKKwkJCQk1MkRDOUMxMjE5MzkzMEIxMDBGQTc0NjMgLyogVHlwZVNldC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJh
Y3RQQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyog
QXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTcwNjYsNiArNzA4Nyw3IEBACiAJCQkJMTRC
QTdBOTcxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI0
RDMxRTIxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUMyRTUyNkJEMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTJBRkY0NDQxOTNEMEU0OTAwMURBQUQ0IC8qIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlckR1bXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZF
MjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5
Q0UxMDdFQzM3NjAwNDI3QTQ4IC8qIElkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTVGRDAwNzUxODlCMDM4QzAwNjMzMjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgppbmRleCBkY2U4MWU3Li40MjY3YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xMjIsNyArMTIyLDggQEAKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlYnVnIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3dpbGxfY2FsbCIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV9kaWRfY2FsbCIsICJsZW5ndGgiIDog
MiB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0aCIgOiAyIH0KKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VuZCIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkiLCAibGVu
Z3RoIiA6IDIgfQogICAgICAgICBdCiAgICAgfSwKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDkyNDQ5ZjkuLmE3M2VkZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
CkBAIC01NCw2ICs1NCw5IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAg
ICBjYXNlIG9wX2luaXRfbGF6eV9yZWc6CiAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOgogICAgIGNh
c2Ugb3BfZW50ZXI6CisgICAgLy9zYiBUT0RPOiBTaG91bGQgdGhpcyBmdW5jdG9yIGJlIGNhbGxl
ZCB3aXRoIG9uZSBvcGVyYW5kPworICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hf
ZmlkZWxpdHk6CisgICAgLy9zYgogICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF90b3Vj
aF9lbnRyeToKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3LDYgKzI5MCw5IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICBjYXNlIG9w
X3B1dF9ieV9pbmRleDoKICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICAvL3Ni
CisgICAgY2FzZSBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKKyAgICAvL3Ni
CiAgICAgY2FzZSBvcF90b3VjaF9lbnRyeToKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMo
b3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENP
REVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNzc1NjNhOS4uODY4MzgzMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE4MjcsNiAr
MTgyNywxMiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogCiAgICAgbV9oZWFwLT5tX2NvZGVC
bG9ja3MuYWRkKHRoaXMpOwogICAgIG1faGVhcC0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHNpemVv
ZihDb2RlQmxvY2spICsgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9u
KSk7CisKKyAgICAvL3NldHVwIG9wdGlvbmFsIHByb2ZpbGluZyBvZiB0eXBlcworICAgIC8vVE9E
TzogbWFrZSB0aGlzIG9ubHkgaGFwcGVuIGNvbmRpdGlvbmFsbHkKKyAgICBtX2hpZ2hGaWRlbGl0
eVR5cGVIaXN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxPcGVyYW5kczxUeXBlU2V0Pj4obV9udW1Q
YXJhbWV0ZXJzLCBtX251bVZhcnMpOworICAgIFR5cGVTZXQgYmFzZVR5cGU7CisgICAgbV9oaWdo
RmlkZWxpdHlUeXBlSGlzdG9yeS0+ZmlsbChiYXNlVHlwZSk7CiB9CiAKIENvZGVCbG9jazo6fkNv
ZGVCbG9jaygpCkBAIC0zNDU3LDYgKzM0NjMsOSBAQCBib29sIENvZGVCbG9jazo6dXNlc09wY29k
ZShPcGNvZGVJRCBvcGNvZGVJRCkKIAogU3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVy
KFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiB7CisgICAgaWYgKCFzeW1ib2xUYWJs
ZSgpKSAKKyAgICAgICAgcmV0dXJuICIiOworCiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRv
ciBlbmQgPSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICBmb3IgKFN5bWJvbFRhYmxl
OjpNYXA6Oml0ZXJhdG9yIHB0ciA9IHN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IHB0ciAh
PSBlbmQ7ICsrcHRyKSB7CkBAIC0zNjE5LDQgKzM2MjgsMjEgQEAgREZHOjpDYXBhYmlsaXR5TGV2
ZWwgQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWwoKQogfQogI2VuZGlmCiAKK3ZvaWQgQ29kZUJs
b2NrOjpyZWNvcmRUeXBlRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlZywgSlNWYWx1ZSB2
YWwpCit7CisgICAgVHlwZVNldCYgdHlwZVNldCA9IG1faGlnaEZpZGVsaXR5VHlwZUhpc3Rvcnkt
Pm9wZXJhbmQocmVnKTsKKyAgICBSdW50aW1lVHlwZSB0eXBlID0gVHlwZVNldDo6Z2V0UnVudGlt
ZVR5cGVGb3JWYWx1ZSh2YWwpOworICAgIHR5cGVTZXQuYWRkVHlwZSh0eXBlKTsKKyAgICAvL1N0
cmluZyBuYW1lID0gdGhpcy0+bmFtZUZvclJlZ2lzdGVyKHJlZyk7CisgICAgLy9TdHJpbmcgc2Vl
blR5cGVzID0gdHlwZVNldC5zZWVuVHlwZXMoKTsKKyAgICAvL3ByaW50ZigidmFyPSVzLCB0eXBl
cz0lc1xuIixuYW1lLmFzY2lpKCkuZGF0YSgpLCBzZWVuVHlwZXMuYXNjaWkoKS5kYXRhKCkpOwor
fQorCitTdHJpbmcgQ29kZUJsb2NrOjpydW50aW1lVHlwZXNGb3JWYXJpYWJsZU5hbWUoU3RyaW5n
JiB2YXJpYWJsZU5hbWUpCit7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRh
YmxlKCktPmdldCh2YXJpYWJsZU5hbWUuaW1wbCgpKTsKKyAgICBUeXBlU2V0JiB0eXBlU2V0ID0g
bV9oaWdoRmlkZWxpdHlUeXBlSGlzdG9yeS0+b3BlcmFuZChlbnRyeS5nZXRJbmRleCgpKTsgCisg
ICAgcmV0dXJuIHR5cGVTZXQuc2VlblR5cGVzKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDYyMjMyNzEu
LmRjN2QyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJQcm9maWxlckpldHRpc29uUmVhc29uLmgiCiAj
aW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIK
KyNpbmNsdWRlICJUeXBlU2V0LmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFsaXplci5o
IgogI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5o
IgpAQCAtNDA0LDcgKzQwNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUo
KTsKIAotICAgIFN0cmluZyBuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcik7
CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgc2V0TnVtYmVyT2ZCeVZhbEluZm9zKHNpemVf
dCBzaXplKSB7IG1fYnlWYWxJbmZvcy5yZXNpemVUb0ZpdChzaXplKTsgfQpAQCAtOTM5LDYgKzk0
MCwzOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCk7IC8v
IFdpbGwgb25seSByZXR1cm4gdmFsaWQgcmVzdWx0cyB3aGVuIGNhbGxlZCBkdXJpbmcgR0MuIEFz
c3VtZXMgdGhhdCB5b3UndmUgYWxyZWFkeSBlc3RhYmxpc2hlZCB0aGF0IHRoZSBvd25lciBleGVj
dXRhYmxlIGlzIGxpdmUuCiAKKyAgICB2b2lkIHJlY29yZFR5cGVGb3JSZWdpc3RlcihWaXJ0dWFs
UmVnaXN0ZXIsIEpTVmFsdWUgdik7CisgICAgT3BlcmFuZHM8VHlwZVNldD4mIGdldEhpZ2hGaWRl
bGl0eVR5cGVIaXN0b3J5KCkgeyByZXR1cm4gKihtX2hpZ2hGaWRlbGl0eVR5cGVIaXN0b3J5Lmdl
dCgpKTsgfQorICAgIFN0cmluZyBydW50aW1lVHlwZXNGb3JWYXJpYWJsZU5hbWUoU3RyaW5nJik7
CisKKyAgICB2b2lkIGR1bXBSZWdpc3RlckluZm9Gb3JEZWJ1Z2dpbmcoKSAKKyAgICB7CisgICAg
ICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB0aGlzLT5vd25lckV4ZWN1dGFibGUo
KTsKKyAgICAgICAgcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAgICAgICAgcHJpbnRmKCJBY2Nl
c2luZyBjb2RlYmxvY2tcbiIpOworICAgICAgICBpZiAoISFtX2hhc2gpCisgICAgICAgICAgICBw
cmludGYoIkhhc2g6ICVkXG4iLCBtX2hhc2guZ2V0SGFzaCgpKTsKKyAgICAgICAgcHJpbnRmKCIt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICAgICAgcHJpbnRmKCJVUkw6JXNcbiIsIGV4
ZWN1dGFibGUtPnNvdXJjZVVSTCgpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgcHJpbnRmKCJz
dGFydGluZzogW0xpbmU6JWQsIENvbHVtbjolZF1cbiIsIGV4ZWN1dGFibGUtPmxpbmVObygpLCBl
eGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKyAgICAgICAgcHJpbnRmKCJlbmRpbmc6IFtMaW5l
OiVkLCBDb2x1bW46JWRdXG4iLCBleGVjdXRhYmxlLT5sYXN0TGluZSgpLCBleGVjdXRhYmxlLT5l
bmRDb2x1bW4oKSk7CisgICAgICAgIHByaW50ZigiY2hhcmFjdGVyIG9mZnNldDogW1N0YXJ0OiVk
LCBFbmQ6JWRdXG4iLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgpLCBleGVjdXRh
YmxlLT5zb3VyY2UoKS5lbmRPZmZzZXQoKSk7CisgICAgICAgIHByaW50ZigiLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLVxuIik7CisgICAgICAgIFN0cmluZyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3Vy
Y2UoKS50b1N0cmluZygpOworICAgICAgICBwcmludGYoIiVzXG4iLCBzb3VyY2UuYXNjaWkoKS5k
YXRhKCkpOworICAgICAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworCisg
ICAgICAgIE9wZXJhbmRzPFR5cGVTZXQ+JiB0eXBlSGlzdG9yeSA9IHRoaXMtPmdldEhpZ2hGaWRl
bGl0eVR5cGVIaXN0b3J5KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gdHlwZUhp
c3Rvcnkuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVnID0gdHlwZUhpc3RvcnkudmlydHVhbFJlZ2lzdGVyQXQoaSk7CisgICAgICAgICAgICBU
eXBlU2V0JiB0eXBlU2V0ID0gdHlwZUhpc3RvcnkuYXQoaSk7CisgICAgICAgICAgICBTdHJpbmcg
bmFtZSA9IHRoaXMtPm5hbWVGb3JSZWdpc3RlcihyZWcpOworICAgICAgICAgICAgU3RyaW5nIHNl
ZW5UeXBlcyA9IHR5cGVTZXQuc2VlblR5cGVzKCk7CisgICAgICAgICAgICBpZiAobmFtZS5sZW5n
dGgoKSkKKyAgICAgICAgICAgICAgICBwcmludGYoInZhcj0+XCIlc1wiICA6OjogdHlwZXM9Pnsg
JXN9XG4iLG5hbWUuYXNjaWkoKS5kYXRhKCksIHNlZW5UeXBlcy5hc2NpaSgpLmRhdGEoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAgICB9CisKIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIG92
ZXJyaWRlOwpAQCAtMTAwNyw2ICsxMDQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fcmFy
ZURhdGEgPSBhZG9wdFB0cihuZXcgUmFyZURhdGEpOwogICAgIH0KIAorCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICB2b2lkIHJlc2V0U3R1YkludGVybmFsKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogICAgIHZvaWQgcmVzZXRTdHViRHVyaW5nR0NJbnRlcm5hbChSZXBhdGNoQnVm
ZmVyJiwgU3RydWN0dXJlU3R1YkluZm8mKTsKQEAgLTEwODgsNiArMTEyMyw5IEBAIHByaXZhdGU6
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBtX2xpdmVu
ZXNzQW5hbHlzaXM7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8T3BlcmFuZHM8VHlwZVNldD4+IG1f
aGlnaEZpZGVsaXR5VHlwZUhpc3Rvcnk7CisKKwogICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5oCmluZGV4IDRlMzM5ODg2Li45ZTgy
ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SGFzaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNo
LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Qg
eyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNoOyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgZ2V0SGFzaCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09wZXJhbmRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMu
aAppbmRleCBmMjFlMDVmLi4xOTQ0NjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3BlcmFuZHMuaApAQCAtMTkwLDYgKzE5MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHNbaW5kZXhdOwogICAgICAgICByZXR1cm4gbV9sb2NhbHNbaW5kZXgg
LSBudW1iZXJPZkFyZ3VtZW50cygpXTsKICAgICB9CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1
YWxSZWdpc3RlckF0KHNpemVfdCBpbmRleCkgCisgICAgeworICAgICAgICBpZiAoaW5kZXggPCBu
dW1iZXJPZkFyZ3VtZW50cygpKQorICAgICAgICAgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KGluZGV4KTsKKyAgICAgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGluZGV4IC0gbnVtYmVyT2ZBcmd1bWVudHMoKSk7CisgICAgfQogICAgIGNvbnN0IFQmIG9wZXJh
dG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KICAgICBUJiBv
cGVyYXRvcltdKHNpemVfdCBpbmRleCkgeyByZXR1cm4gYXQoaW5kZXgpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggZTU0OWI4My4uMGYyZjM2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTEwMDIs
NiArMTAwMiwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmUoUmVn
aXN0ZXJJRCogZHN0LCBDYXB0dXJlTW9kZSBjYXB0dXJlTW9kZQogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChzcmMtPmluZGV4KCkpOwogICAgIGlmIChjYXB0dXJlTW9kZSA9PSBJc0NhcHR1cmVk
KQogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQod2F0Y2hhYmxlVmFyaWFibGUoZHN0LT5p
bmRleCgpKSk7CisKKyAgICAvL1RPRE86IG5vdCBmaXJpbmcgZm9yIHVuZGVmaW5lZCBhbmQgYXNz
aWdubWVudHMgdG8gZnVuY3Rpb25zCisgICAgaWYgKCFkc3QtPmlzVGVtcG9yYXJ5KCkpCisgICAg
ICAgIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KGRzdCk7CisKICAgICByZXR1cm4g
ZHN0OwogfQogCkBAIC0xMTEwLDYgKzExMTUsMTMgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRFcXVhbGl0eU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjMi0+aW5kZXgoKSk7CiAgICAgcmV0dXJuIGRz
dDsKIH0KKy8vc2IKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlVHlwZXNXaXRo
SGlnaEZpZGVsaXR5KFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX3Byb2Zp
bGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKK30KKy8vc2IKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCBiKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGRk
ZThlNzYuLjExNzllMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMzMSw2ICszMzEsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICAgICAgcmV0dXJuIGVtaXROb2RlKG4pOwogICAgICAgICB9Cisg
ICAgICAgIC8vc2IKKyAgICAgICAgdm9pZCBlbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0
eShSZWdpc3RlcklEKiBkc3QpOworICAgICAgICAvL3NiCiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29sKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dExvYWQoUmVnaXN0ZXJJRCogZHN0LCBkb3VibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5jcHAKaW5kZXggZDhkNjlhMi4uNzgzNGMxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1
ZGUgIkNvbXBsZXRpb24uaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgpAQCAtMTkxLDYgKzE5MiwxNSBAQCB2b2lkIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6cnVuKEVycm9yU3RyaW5nKikKIHsKIH0KIAordm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZShFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgaW5fdmFyaWFibGVOYW1lLCBpbnQgaW5fc3RhcnRMaW5lLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGluX3N0YXJ0Q29sdW1uLCBpbnQgaW5fZW5kTGluZSwgaW50IGluX2VuZENv
bHVtbiwgU3RyaW5nKiBvdXRfdHlwZXMpIAoreworICAgIFZNJiB2bSA9IGdsb2JhbFZNKCk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB2bS5maW5kU21hbGxlc3RFbmNsb3NpbmdDb2RlQmxv
Y2soaW5fc3RhcnRMaW5lLCBpbl9zdGFydENvbHVtbiwgaW5fZW5kTGluZSwgaW5fZW5kQ29sdW1u
KTsKKyAgICBTdHJpbmcgdmFyTmFtZShpbl92YXJpYWJsZU5hbWUpOworICAgIG91dF90eXBlcyA9
IG5ldyBTdHJpbmcoY29kZUJsb2NrLT5ydW50aW1lVHlwZXNGb3JWYXJpYWJsZU5hbWUodmFyTmFt
ZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IGQ2YzFlZWEuLjNjOTcx
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC02Niw2ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQ
cm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0
eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBvdmVycmlkZSBmaW5hbDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBvYmplY3RHcm91cCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHJ1bihFcnJv
clN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRSdW50aW1lVHlwZUZvclZh
cmlhYmxlSW5UZXh0UmFuZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGluX3ZhcmlhYmxl
TmFtZSwgaW50IGluX3N0YXJ0TGluZSwgaW50IGluX3N0YXJ0Q29sdW1uLCBpbnQgaW5fZW5kTGlu
ZSwgaW50IGluX2VuZENvbHVtbiwgU3RyaW5nKiBvdXRfdHlwZXMpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzZXRTY3JpcHREZWJ1Z1NlcnZlcihTY3JpcHREZWJ1Z1NlcnZlciogc2NyaXB0RGVidWdT
ZXJ2ZXIpIHsgbV9zY3JpcHREZWJ1Z1NlcnZlciA9IHNjcmlwdERlYnVnU2VydmVyOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUnVudGlt
ZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1l
Lmpzb24KaW5kZXggZjdiZjEzMy4uZmU0NzFlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24KQEAgLTE5Niw2ICsxOTYs
MjAgQEAKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCiAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgcmVwb3J0aW5nIG9mIGV4ZWN1dGlvbiBjb250
ZXh0cyBjcmVhdGlvbi4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1l
IjogImdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZSIsCisgICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhcmlhYmxlTmFtZSIs
ICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJWYXJpYWJsZSB3ZSB3YW50IHR5cGUg
aW5mcm9tYXRpb24gZm9yLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXJ0TGlu
ZSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAic3RhcnQgbGluZSBmb3IgdmFy
aWFibGUgbmFtZSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXJ0Q29sdW1uIiwg
InR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJzdGFydCBjb2x1bW4gZm9yIHZhcmlh
YmxlIG5hbWUiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRMaW5lIiwgInR5cGUi
OiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJlbmQgbGluZSBmb3IgdmFyaWFibGUgbmFtZSIg
fSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuZENvbHVtbiIsICJ0eXBlIjogImludGVn
ZXIiLCAiZGVzY3JpcHRpb24iOiAiZW5kIGNvbHVtbiBmb3IgdmFyaWFibGUgbmFtZSIgfQorICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidHlwZXMiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVHlwZXMg
Zm9yIHJlcXVlc3RlZCB2YXJpYWJsZS4iIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiUmV0dXJucyBkZXRhaWxlZCBpbmZvcm10YXRpb24gb24gZ2l2ZW4gZnVu
Y3Rpb24uIgogICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAppbmRleCBhZWQ3YWYxLi43Y2I1NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjQs
NiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkJ5
dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29t
cGxldGlvbi5oIgogI2luY2x1ZGUgIkNvcGllZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKQEAgLTM3LDExICszOCwxMyBAQAogI2luY2x1ZGUgIkpTTG9jay5o
IgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUg
Ik9wZXJhbmRzLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNh
bXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgorI2lu
Y2x1ZGUgIlR5cGVTZXQuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4K
ICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTM0NSw2ICszNDgsOSBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKik7
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFyU2FtcGxp
bmdGbGFncyhFeGVjU3RhdGUqKTsKICNlbmRpZgogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50VmFy
aWFibGVzSW5Db2RlQmxvY2tHaXZlblJhbmdlKEV4ZWNTdGF0ZSopOworCiBzdHJ1Y3QgU2NyaXB0
IHsKICAgICBib29sIGlzRmlsZTsKICAgICBjaGFyKiBhcmd1bWVudDsKQEAgLTQ4Nyw2ICs0OTMs
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlSW1wdXJlR2V0
dGVyIiwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIsIDEpOwogICAgICAgICBhZGRGdW5jdGlv
bih2bSwgInNldEltcHVyZUdldHRlckRlbGVnYXRlIiwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJE
ZWxlZ2F0ZSwgMik7CiAKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJwcm9maWxlVHlwZXNXaXRo
SGlnaEZpZGVsaXR5IiwgZnVuY3Rpb25Qcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5LCAwKTsK
KyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJwcmludFZhcmlhYmxlc0luQ29kZUJsb2NrR2l2ZW5S
YW5nZSIsIGZ1bmN0aW9uUHJpbnRWYXJpYWJsZXNJbkNvZGVCbG9ja0dpdmVuUmFuZ2UsIDQpOwor
ICAgICAgICAKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGds
b2JhbEV4ZWMoKSwgMCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRz
LnNpemUoKTsgKytpKQogICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbEV4
ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0pKTsKQEAgLTkxMSw2
ICs5MjAsMzUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1ha2VNYXNx
dWVyYWRlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShNYXNx
dWVyYWRlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkp
OwogfQogCisKK2NsYXNzIEhpZ2hGaWRlbGl0eVR5cGVGdW5jdG9yIHsKK3B1YmxpYzoKKworICAg
IGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICB7CisgICAgICAgIGNv
ZGVCbG9jay0+ZHVtcFJlZ2lzdGVySW5mb0ZvckRlYnVnZ2luZygpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEhp
Z2hGaWRlbGl0eVR5cGVGdW5jdG9yIGZ1bmN0b3I7CisgICAgLy9ub3RlLCB0aGlzIGlzbid0IGdv
aW5nIHRocm91Z2ggYWxsIGV4ZWN1dGFibGVzLiBKdXN0IHRob3NlIHRoYXQgaGF2ZSBiZWVuIGV4
ZWN1dGVkIChpLmUsIHR1cm5lZCBpbnRvIGNvZGVibG9ja3MpCisgICAgZXhlYy0+aGVhcCgpLT5m
b3JFYWNoQ29kZUJsb2NrKGZ1bmN0b3IpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Q
cmludFZhcmlhYmxlc0luQ29kZUJsb2NrR2l2ZW5SYW5nZShFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgQ29kZUJsb2NrKiBlbmNsb3NpbmdCbG9jayA9IGV4ZWMtPnZtKCkuZmluZFNtYWxsZXN0RW5j
bG9zaW5nQ29kZUJsb2NrKGV4ZWMtPmFyZ3VtZW50KDApLmFzVUludDMyKCksIGV4ZWMtPmFyZ3Vt
ZW50KDEpLmFzVUludDMyKCksIGV4ZWMtPmFyZ3VtZW50KDIpLmFzVUludDMyKCksIGV4ZWMtPmFy
Z3VtZW50KDMpLmFzVUludDMyKCkpOworICAgIHByaW50ZigiXG5Gb3VuZCBDb2RlQmxvY2tcbiIp
OworICAgIGVuY2xvc2luZ0Jsb2NrLT5kdW1wUmVnaXN0ZXJJbmZvRm9yRGVidWdnaW5nKCk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworCisKIC8vIFVz
ZSBTRUggZm9yIFJlbGVhc2UgYnVpbGRzIG9ubHkgdG8gZ2V0IHJpZCBvZiB0aGUgY3Jhc2ggcmVw
b3J0IGRpYWxvZwogLy8gKGx1Y2tpbHkgdGhlIHNhbWUgdGVzdHMgZmFpbCBpbiBSZWxlYXNlIGFu
ZCBEZWJ1ZyBidWlsZHMgc28gZmFyKS4gTmVlZCB0bwogLy8gYmUgaW4gYSBzZXBhcmF0ZSBtYWlu
IGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGpzY21haW4gZnVuY3Rpb24gcmVxdWlyZXMgb2JqZWN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1
YTEwOTY4Li40ODk5NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTUzNCw2ICs1MzQsMTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX25ld19yZWdleHApCiAgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3Jl
YXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCBy
ZWdFeHApKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlw
ZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgZXhlYy0+
Y29kZUJsb2NrKCktPnJlY29yZFR5cGVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIocGNbMV0u
dS5vcGVyYW5kKSwgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkRfSU1QTCgp
OworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfaGFzX2luc3RhbmNl
KQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCmluZGV4IDljNmYxMjIuLmJlYTM4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC03MCw2ICs3MCw5IEBAIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5KTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FycmF5X3dpdGhfc2l6ZSk7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV9idWZmZXIpOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfcmVnZXhwKTsKKy8vc2IKK0xMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hf
ZmlkZWxpdHkpOworLy9zYgogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9j
aGVja19oYXNfaW5zdGFuY2UpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9pbnN0YW5jZW9mKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0
X2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQppbmRleCBmZmQxMzgzLi5lMzM2ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMjMyLDMg
KzEyMzIsOCBAQCBlbmQKIF9sbGludF9vcF9pbml0X2dsb2JhbF9jb25zdF9ub3A6CiAgICAgZGlz
cGF0Y2goNSkKIAorI3NiCitfbGxpbnRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxp
dHk6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJvZmlsZV90eXBlc193aXRo
X2hpZ2hfZmlkZWxpdHkpCisgICAgZGlzcGF0Y2goMikKKyNzYgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYmI4NWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gKKyNk
ZWZpbmUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gKKworI2luY2x1ZGUgIk9wZXJhbmRzLmgi
CisjaW5jbHVkZSAiVHlwZVNldC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIGNsYXNzIFR5
cGVTZXQ7CisKKworY2xhc3MgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyIHsKKworcHVibGljOgor
ICAgIHZpcnR1YWwgdm9pZCBhbmFseXplQWxsVHlwZXMoT3BlcmFuZHM8VHlwZVNldD4mLCBDb2Rl
QmxvY2sqKTsKKyAgICB2aXJ0dWFsIH5IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKTsKK307CisK
KworfSAvL25hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9IaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXJEdW1wLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9I
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yMDVmOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1bXAuY3BwCkBAIC0wLDAgKzEs
MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisKKy8vI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1bXAuaCIKKy8vCisvL3Zv
aWQgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcDo6YW5hbHl6ZUFsbFR5cGVzKE9wZXJhbmRz
PFR5cGVTZXQ+JiBvcGVyYW5kcywgQ29kZUJsb2NrKiBjb2RlQmxvY2spIG92ZXJyaWRlCisvL3sK
Ky8vICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGggPSBvcGVyYW5kcy5zaXplKCk7IGkgPCBzaXpl
OyBpKyspIHsKKy8vICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgciA9IG9wZXJhbmRzLnZpcnR1YWxS
ZWdpc3RlckF0KGkpOworLy8gICAgICAgIFR5cGVTZXQmIHR5cGVTZXQgPSBvcGVyYW5kcy5hdChp
KTsKKy8vICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gY29kZUJsb2NrLT5uYW1lRm9yUmVnaXN0
ZXIocikuYXNjaWkoKS5kYXRhKCk7CisvLyAgICAgICAgcHJpbnRmKCJyZWcgbmFtZT0lcywgdHlw
ZXM9JXMiLCBuYW1lLCB0eXBlU2V0LnNlZW5UeXBlcygpLmFzY2lpKCkuZGF0YSgpKTsKKy8vICAg
IH0gICAgICAgICAgIAorLy99CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMDdjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5o
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvLyNpZm5kZWYgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcF9oCisv
LyNkZWZpbmUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcF9oCisvLworLy8jaW5jbHVkZSAi
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCisvLworLy9uYW1lc3BhY2UgSlNDIHsKKy8vCisv
L2NsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1bXAgOiBIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIgeworLy8KKy8vICAgIHZvaWQgYW5hbHl6ZUFsbFR5cGVzKE9wZXJhbmRzPFR5cGVTZXQ+
JiwgQ29kZUJsb2NrKikgb3ZlcnJpZGU7CisvLworLy99OworLy8KKy8vCisvL30gLy9uYW1lc3Bh
Y2UgSlNDCisvLworLy8jZW5kaWYgLy9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9UeXBlU2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9UeXBlU2V0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43NmJhMjUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1R5cGVTZXQuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlR5cGVTZXQuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitU
eXBlU2V0OjpUeXBlU2V0KCkKKyAgICA6IG1fc2VlblR5cGVzKFR5cGVOb3RoaW5nKQoreworfQor
CitSdW50aW1lVHlwZSBUeXBlU2V0OjpnZXRSdW50aW1lVHlwZUZvclZhbHVlKEpTVmFsdWUgdikK
K3sKKyAgICBSdW50aW1lVHlwZSByZXQ7CisgICAgaWYgKHYuaXNGdW5jdGlvbigpKQorICAgICAg
ICByZXQgPSBUeXBlRnVuY3Rpb247CisgICAgZWxzZSBpZiAodi5pc1VuZGVmaW5lZCgpKQorICAg
ICAgICByZXQgPSBUeXBlVW5kZWZpbmVkOworICAgIGVsc2UgaWYgKHYuaXNOdWxsKCkpCisgICAg
ICAgIHJldCA9IFR5cGVOdWxsOworICAgIGVsc2UgaWYgKHYuaXNCb29sZWFuKCkpCisgICAgICAg
IHJldCA9IFR5cGVCb29sZWFuOworICAgIGVsc2UgaWYgKHYuaXNTdHJpbmcoKSkKKyAgICAgICAg
cmV0ID0gVHlwZVN0cmluZzsKKyAgICBlbHNlIGlmICh2LmlzT2JqZWN0KCkpCisgICAgICAgIHJl
dCA9IFR5cGVPYmplY3Q7CisgICAgZWxzZSBpZiAodi5pc051bWJlcigpKQorICAgICAgICByZXQg
PSBUeXBlTnVtYmVyOworICAgIGVsc2UKKyAgICAgICAgQ1JBU0goKTsKKworICAgIHJldHVybiBy
ZXQ7Cit9CisKK3ZvaWQgVHlwZVNldDo6YWRkVHlwZShSdW50aW1lVHlwZSB0KQoreworICAgIG1f
c2VlblR5cGVzID0gbV9zZWVuVHlwZXMgfCB0OworICAgIC8vZHVtcFNlZW5UeXBlcygpOworfQor
CitXVEY6OlN0cmluZyBUeXBlU2V0OjpzZWVuVHlwZXMoKSAKK3sKKyAgICBXVEY6OlN0cmluZyBz
ZWVuKCIiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlRnVuY3Rpb24pCisgICAgICAgICBz
ZWVuLmFwcGVuZCgiRnVuY3Rpb24gIik7CisKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlVW5k
ZWZpbmVkKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIlVuZGVmaW5lZCAiKTsKKworICAgIGlmICht
X3NlZW5UeXBlcyAmIFR5cGVOdWxsKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIk51bGwgIik7CisK
KyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9vbGVhbikKKyAgICAgICAgIHNlZW4uYXBwZW5k
KCJCb29sZWFuICIpOworCisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bWJlcikKKyAgICAg
ICAgIHNlZW4uYXBwZW5kKCJOdW1iZXIgIik7CisKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBl
U3RyaW5nKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIlN0cmluZyAiKTsKKworICAgIGlmIChtX3Nl
ZW5UeXBlcyAmIFR5cGVPYmplY3QpCisgICAgICAgICBzZWVuLmFwcGVuZCgiT2JqZWN0ICIpOwor
CisgICAgcmV0dXJuIHNlZW47Cit9CisKK3ZvaWQgVHlwZVNldDo6ZHVtcFNlZW5UeXBlcygpCit7
CisgICAgcHJpbnRmKCIlcyIsIHNlZW5UeXBlcygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBwcmlu
dGYoIlxuIik7Cit9CisKKworfSAvL25hbWVzcGFjZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1R5cGVTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9UeXBlU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ODQ5Yjc3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9UeXBlU2V0LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVHlwZVNldF9oCisjZGVmaW5lIFR5cGVT
ZXRfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCisgICAgY2xhc3MgSlNWYWx1ZTsKKworICAgIGVudW0gUnVudGltZVR5cGUgeworICAgICAg
ICBUeXBlTm90aGluZyAgID0gMHgwLAorICAgICAgICBUeXBlRnVuY3Rpb24gID0gMHgxLAorICAg
ICAgICBUeXBlVW5kZWZpbmVkID0gMHgyLAorICAgICAgICBUeXBlTnVsbCAgICAgID0gMHg0LAor
ICAgICAgICBUeXBlQm9vbGVhbiAgID0gMHg4LAorICAgICAgICBUeXBlTnVtYmVyICAgID0gMHgx
MCwKKyAgICAgICAgVHlwZVN0cmluZyAgICA9IDB4MjAsCisgICAgICAgIFR5cGVPYmplY3QgICAg
PSAweDQwCisgICAgfTsKKworCisKK2NsYXNzIFR5cGVTZXQgeworCitwdWJsaWM6CisgICAgVHlw
ZVNldCgpOworICAgIHZvaWQgYWRkVHlwZShSdW50aW1lVHlwZSB0KTsKKyAgICBzdGF0aWMgUnVu
dGltZVR5cGUgZ2V0UnVudGltZVR5cGVGb3JWYWx1ZShKU1ZhbHVlIHYpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIFdURjo6U3RyaW5nIHNlZW5UeXBlcygpOworCitwcml2YXRlOgorICAgIHVpbnQz
Ml90IG1fc2VlblR5cGVzOworICAgIHZvaWQgZHVtcFNlZW5UeXBlcygpOworCit9OworCisKK30g
Ly9uYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvL1R5cGVTZXRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCmluZGV4IGExODVhM2QuLmFhODFhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCisv
LyNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKKy8vI2luY2x1ZGUgIkhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlckR1bXAuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVl
LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBl
ci5oIgpAQCAtODAsNyArODIsOSBAQAogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgi
CiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMu
aCIKKyNpbmNsdWRlICJUeXBlU2V0LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIK
Ky8vI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgi
CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTMyMCw2ICszMjQsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5
cGUpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGlzIGxhc3QsIGFzIGEgZnJlZSB3YXkgb2YgYXNzZXJ0
aW5nIHRoYXQgVk0gaW5pdGlhbGl6YXRpb24gaXRzZWxmCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMu
CiAgICAgbV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFy
cmF5Q29udHJvbGxlcigpKTsKKworICAgIC8vbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcj4oKTsKIH0KIAogVk06On5W
TSgpCkBAIC05MTIsNiArOTE4LDE0NyBAQCB2b2lkIFZNOjpzZXRFbmFibGVkUHJvZmlsZXIoTGVn
YWN5UHJvZmlsZXIqIHByb2ZpbGVyKQogICAgIH0KIH0KIAorCitjbGFzcyBOZWFyZXN0Q29kZUJs
b2NrUmFuZ2VGdW5jdG9yIHsKK3B1YmxpYzoKKworICAgIE5lYXJlc3RDb2RlQmxvY2tSYW5nZUZ1
bmN0b3IodW5zaWduZWQgaW50IHN0YXJ0TGluZSwgdW5zaWduZWQgaW50IHN0YXJ0Q29sdW1uLCB1
bnNpZ25lZCBpbnQgZW5kTGluZSwgdW5zaWduZWQgaW50IGVuZENvbHVtbikgCisgICAgICAgIDog
bV90YXJnZXRTdGFydExpbmUoc3RhcnRMaW5lKQorICAgICAgICAsIG1fdGFyZ2V0U3RhcnRDb2x1
bW4oc3RhcnRDb2x1bW4pCisgICAgICAgICwgbV90YXJnZXRFbmRMaW5lKGVuZExpbmUpCisgICAg
ICAgICwgbV90YXJnZXRFbmRDb2x1bW4oZW5kQ29sdW1uKSAKKyAgICB7CisgICAgfQorCisgICAg
Ym9vbCBvcGVyYXRvcigpKENvZGVCbG9jayogY29kZUJsb2NrKQorICAgIHsKKyAgICAgICAgLy9U
T0RPOiB3aHkgd291bGQgbGluZSBudW1iZXJzIG1heWJlIGJlIG5lZ2F0aXZlIChpLmUsIGV4ZWN1
dGFibGUgdXNlcyBpbnRzIGZvciBsaW5lbm8pCisKKyAgICAgICAgU2NyaXB0RXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CisgICAgICAgIHVuc2ln
bmVkIHN0YXJ0TGluZSA9IGV4ZWN1dGFibGUtPmxpbmVObygpOworICAgICAgICB1bnNpZ25lZCBz
dGFydENvbHVtbiA9IGV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCk7CisgICAgICAgIHVuc2lnbmVk
IGVuZExpbmUgPSBleGVjdXRhYmxlLT5sYXN0TGluZSgpOworICAgICAgICB1bnNpZ25lZCBlbmRD
b2x1bW4gPSBleGVjdXRhYmxlLT5lbmRDb2x1bW4oKTsKKworICAgICAgICBpZiAoIWVuY2xvc2Vz
VGFyZ2V0UmFuZ2Uoc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uKSkg
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHN0YXJ0TGluZSA+IG1f
c3RhcnRMaW5lIHx8IChzdGFydExpbmUgPT0gbV9zdGFydExpbmUgJiYgc3RhcnRDb2x1bW4gPiBt
X3N0YXJ0Q29sdW1uKSkgeworICAgICAgICAgICAgbV9iZXN0Q29kZUJsb2NrID0gY29kZUJsb2Nr
OworICAgICAgICAgICAgbV9zdGFydExpbmUgPSBzdGFydExpbmU7CisgICAgICAgICAgICBtX3N0
YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CisgICAgICAgICAgICBtX2VuZExpbmUgPSBlbmRMaW5l
OworICAgICAgICAgICAgbV9lbmRDb2x1bW4gPSBlbmRDb2x1bW47CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQ29kZUJsb2NrKiBiZXN0Q29kZUJsb2Nr
KCkgeyByZXR1cm4gbV9iZXN0Q29kZUJsb2NrOyB9CisKK3ByaXZhdGU6CisKKyAgICBDb2RlQmxv
Y2sqIG1fYmVzdENvZGVCbG9jazsKKyAgICB1bnNpZ25lZCBtX3N0YXJ0TGluZSA9IDA7CisgICAg
dW5zaWduZWQgbV9lbmRMaW5lID0gVUlOVF9NQVg7CisgICAgdW5zaWduZWQgbV9zdGFydENvbHVt
biA9IDA7CisgICAgdW5zaWduZWQgbV9lbmRDb2x1bW4gPSBVSU5UX01BWDsKKworICAgIHVuc2ln
bmVkIG1fdGFyZ2V0U3RhcnRMaW5lOworICAgIHVuc2lnbmVkIG1fdGFyZ2V0U3RhcnRDb2x1bW47
CisgICAgdW5zaWduZWQgbV90YXJnZXRFbmRMaW5lOworICAgIHVuc2lnbmVkIG1fdGFyZ2V0RW5k
Q29sdW1uOworCisgICAgYm9vbCBlbmNsb3Nlc1RhcmdldFJhbmdlKHVuc2lnbmVkIHN0YXJ0TGlu
ZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENv
bHVtbikKKyAgICB7CisgICAgICAgLy9lbnN1cmUgd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSB0aGlz
IHdpdGggdGhlIGZpcnN0IGNvbXBhcmlzb24KKyAgICAgICAvL2Z1bmN0aW9uIGNoZWNrKCkgewor
ICAgICAgIC8vICAgIGZ1bmN0aW9uIHRhcmdldCgpIHsKKyAgICAgICAvLyAgICB9CisgICAgICAg
Ly99CisgICAgICAgLy8KKyAgICAgICAvL29yIHRoaXM6CisgICAgICAgLy9mdW5jdGlvbiBjaGVj
aygpIHsgZnVuY3Rpb24gdGFyZ2V0KCl7fSB9CisgICAgICAgLy8KKyAgICAgICAvL29yIGEgY29t
YmluYXRpb24gb2YgdGhlIHR3bworICAgICAgIAorICAgICAgIGlmICghKHN0YXJ0TGluZSA8PSBt
X3RhcmdldFN0YXJ0TGluZSAmJiBlbmRMaW5lID49IG1fdGFyZ2V0RW5kTGluZSkpCisgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgIGlmIChzdGFydExpbmUgPCBtX3RhcmdldFN0YXJ0
TGluZSkgeworICAgICAgICAgICBpZiAoZW5kTGluZSA+IG1fdGFyZ2V0RW5kTGluZSkKKyAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgIEFTU0VSVChlbmRMaW5lID09IG1f
dGFyZ2V0RW5kTGluZSk7CisKKyAgICAgICAgICAgaWYgKGVuZENvbHVtbiA+PSBtX3RhcmdldEVu
ZENvbHVtbikKKyAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgIEFTU0VS
VChlbmRDb2x1bW4gPCBtX3RhcmdldEVuZENvbHVtbik7CisgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICB9CisKKyAgICAgICBBU1NFUlQoc3RhcnRMaW5lID09IG1fdGFyZ2V0U3RhcnRM
aW5lKTsKKworICAgICAgIGlmIChzdGFydENvbHVtbiA8PSBtX3RhcmdldFN0YXJ0Q29sdW1uKSB7
CisKKyAgICAgICAgICAgaWYgKGVuZExpbmUgPiBtX3RhcmdldEVuZExpbmUpCisgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgCisgICAgICAgICAgIEFTU0VSVChlbmRMaW5l
ID09IG1fdGFyZ2V0RW5kTGluZSk7CisKKyAgICAgICAgICAgaWYgKGVuZENvbHVtbiA+PSBtX3Rh
cmdldEVuZENvbHVtbikgCisgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAg
ICBBU1NFUlQoZW5kQ29sdW1uIDwgbV90YXJnZXRFbmRDb2x1bW4pOworICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgfSAKKworICAgICAgIEFTU0VSVChzdGFydENvbHVtbiA+IG1fdGFy
Z2V0U3RhcnRDb2x1bW4pOworICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9OworCitDb2Rl
QmxvY2sqIFZNOjpmaW5kU21hbGxlc3RFbmNsb3NpbmdDb2RlQmxvY2sodW5zaWduZWQgc3RhcnRM
aW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5k
Q29sdW1uKQoreworICAgIE5lYXJlc3RDb2RlQmxvY2tSYW5nZUZ1bmN0b3IgZnVuY3RvcihzdGFy
dExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4pOworICAgIC8vVE9ETzogdGhp
cyBpc24ndCBnb2luZyB0aHJvdWdoIGFsbCBleGVjdXRhYmxlcy4gSnVzdCB0aG9zZSB0aGF0IGhh
dmUgYmVlbiBleGVjdXRlZCAoaS5lLCB0dXJuZWQgaW50byBjb2RlYmxvY2tzKQorICAgIC8vIHNv
LCB3ZSBzaG91bGQgcmVhbGx5IGl0ZXJhdHJlIHRocm91Z2ggdGhlIGhlYXAgc2VhcmNoaW5nIGZv
ciBleGVjdXRhYmxlcywgYW5kIGZpbmQgY29ycmVzcG9uZGluZyByYW5nZXMgdGhhdCB3YXkKKyAg
ICBoZWFwLmZvckVhY2hDb2RlQmxvY2soZnVuY3Rvcik7CisgICAgcmV0dXJuIGZ1bmN0b3IuYmVz
dENvZGVCbG9jaygpOworfQorCisvL2NsYXNzIER1bXBIaWdoRmlkZWxpdHlUeXBlc0Z1bmN0b3Ig
eworLy9wdWJsaWM6CisvLyAgICBEdW1wSGlnaEZpZGVsaXR5VHlwZXNGdW5jdG9yKEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlciogcHJvZmlsZXIpCisvLyAgICAgICAgOiBtX3Byb2ZpbGVyKHByb2Zp
bGVyKQorLy8gICAgeworLy8gICAgfQorLy8KKy8vICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKKy8vICAgIHsKKy8vICAgICAgICBtX3Byb2ZpbGVyLT5hbmFseXplQWxs
VHlwZXMoY29kZUJsb2NrLT5nZXRIaWdoRmlkZWxpdHlUeXBlSGlzdG9yeSgpLCBjb2RlQmxvY2sp
OworLy8gICAgICAgIHJldHVybiBmYWxzZTsKKy8vICAgIH0KKy8vICAgIEhpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlciogbV9wcm9maWxlcjsKKy8vfTsKKworLy92b2lkIFZNOjpzZXRIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIoc3RkOjp1bmlxdWVfcHRyPEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcj4g
cHJvZmlsZXIpIAorLy97IAorLy8gICAgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIgPSBzdGQ6
Om1vdmUocHJvZmlsZXIpOyAKKy8vfQorLy8KKy8vdm9pZCBWTTo6cHJvZmlsZUluY29taW5nVHlw
ZUZvclJlZ2lzdGVyKENvZGVCbG9jayosIFR5cGVTZXQmLCBWaXJ0dWFsUmVnaXN0ZXIpCisvL3sK
Ky8vICAgIGlmIChpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisvLyAgICAg
ICAgLy9EdW1wSGlnaEZpZGVsaXR5VHlwZXNGdW5jdG9yIGZ1bmN0b3IobV9oaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuZ2V0KCkpOworLy8gICAgICAgIC8vaGVhcC5mb3JFYWNoQ29kZUJsb2NrKGZ1
bmN0b3IpOworLy8gICAgICAgIC8vcHJpbnRmKCJWTSBJUyBwcm9maWxpbmcgdHlwZXNcbiIpOwor
Ly8gICAgfSBlbHNlIHsKKy8vICAgICAgICAvL3ByaW50ZigiVk0gSVMgTk9UIHByb2ZpbGluZyB0
eXBlc1xuIik7CisvLyAgICB9CisvL30KKwogdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0qIHZt
KQogewogICAgIGxvZ1Nhbml0aXplU3RhY2sodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggMDdiNDlmMy4uZTlkYTg5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CkBAIC05MiwxMCArOTIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKFJFR0VYUF9U
UkFDSU5HKQogICAgIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgorICAgIGNsYXNzIFR5cGVTZXQ7CiAg
ICAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiAgICAgY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJs
b2NrOwogICAgIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKKyAgICBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiAgICAg
Y2xhc3MgVk1FbnRyeVNjb3BlOwogICAgIGNsYXNzIFdhdGNocG9pbnQ7CiAgICAgY2xhc3MgV2F0
Y2hwb2ludFNldDsKQEAgLTIwOSw2ICsyMTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICB2b2lkIG1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJlYWRzKCkgeyBoZWFwLm1hY2hpbmVUaHJl
YWRzKCkubWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVhZHMoKTsgfQogCisKICAgICBwcml2YXRl
OgogICAgICAgICBSZWZQdHI8SlNMb2NrPiBtX2FwaUxvY2s7CiAKQEAgLTMxNCw2ICszMTcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkKiBlbmFibGVkUHJvZmlsZXJBZGRyZXNz
KCkgeyByZXR1cm4gJm1fZW5hYmxlZFByb2ZpbGVyOyB9CiAKKwogI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShMTElOVCkKICAgICAgICAgYm9vbCBjYW5Vc2VKSVQoKSB7IHJldHVybiBtX2NhblVz
ZUpJVDsgfQogI2VsaWYgRU5BQkxFKEpJVCkKQEAgLTUxMCw2ICs1MTQsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVjdXRhYmxlcygp
IHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgQ29kZUJsb2NrKiBmaW5kU21hbGxlc3RFbmNsb3NpbmdDb2RlQmxvY2sodW5z
aWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwg
dW5zaWduZWQgZW5kQ29sdW1uKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDbGVhckV4Y2Vw
dGlvblNjb3BlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRp
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oCmlu
ZGV4IDVjNTZiNzguLjZlZWQwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvQmlkaUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jp
ZGlDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEJpZGlDb250ZXh0KiBw
YXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudC5nZXQoKTsgfQogICAgIHVuc2lnbmVkIGNo
YXIgbGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2xldmVsOyB9CiAgICAgVUNoYXJEaXJlY3Rpb24g
ZGlyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VUNoYXJEaXJlY3Rpb24+KG1fZGlyZWN0
aW9uKTsgfQotICAgIGJvb2wgb3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlOyB9
Citib29sIG92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZTsgfQogICAgIEJpZGlF
bWJlZGRpbmdTb3VyY2Ugc291cmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmlkaUVt
YmVkZGluZ1NvdXJjZT4obV9zb3VyY2UpOyB9CiAKICAgICBQYXNzUmVmUHRyPEJpZGlDb250ZXh0
PiBjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3Iu
anMKaW5kZXggMzhlNjA2YS4uNTRiM2QwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCkBAIC02Nyw2ICs2Nywz
OCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG1pbWVUeXBl
LCBkZWxlZ2F0ZSkKICAgICB0aGlzLl9mb3JtYXR0ZXJTb3VyY2VNYXAgPSBudWxsOwogCiAgICAg
dGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOworCisKKyAgICBmdW5jdGlvbiBtb3Vz
ZVVwVGVzdChldmVudCkgeworICAgICAgICB0aGlzLl90b2tlblRyYWNraW5nQ29udHJvbGxlci5l
bmFibGVkID0gdHJ1ZQorICAgICAgICB2YXIgdG9rZW5JbmZvID0gdGhpcy5fdG9rZW5UcmFja2lu
Z0NvbnRyb2xsZXIuX2hvdmVyZWRUb2tlbkluZm8KKyAgICAgICAgICAgLCB0b2tlbiAKKworICAg
ICAgICBpZiAoIXRva2VuSW5mbyB8fCAhdG9rZW5JbmZvLnRva2VuKQorICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgdG9rZW4gPSB0b2tlbkluZm8udG9rZW4KKyAgICAgICAgY29uc29sZS5s
b2coSlNPTi5zdHJpbmdpZnkodG9rZW5JbmZvLCB1bmRlZmluZWQsIDIpKQorCisgICAgICAgIGlm
ICh0b2tlbi5zdGF0ZS5sYXN0VHlwZSA9PT0gInZhcmlhYmxlIikgeworICAgICAgICAgICAgZnVu
Y3Rpb24gaGFuZGxlcihlcnJvciwgdHlwZVN0cmluZykgeworICAgICAgICAgICAgICAgIGlmIChl
cnJvcikgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiPT09PT09PT09PT09RVJS
T1I9PT09PT09PT0iKQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnNvbGUubG9nKCJSdW50aW1lIHR5cGVzIGZvciB2YXJpYWJsZToiICsgdG9rZW4uc3Ry
aW5nICsgIiBpczogIiArIHR5cGVTdHJpbmcpCisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vdmlydHVhbCB2b2lkIGdldFJ1bnRpbWVUeXBlRm9yVmFy
aWFibGVJblRleHRSYW5nZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5fdmFyaWFibGVO
YW1lLCBpbnQgaW5fc3RhcnRMaW5lLCBpbnQgaW5fc3RhcnRDb2x1bW4sIAorICAgICAgICAgICAg
Ly8gICAgICAgaW50IGluX2VuZExpbmUsIGludCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5
cGVzKSBvdmVycmlkZTsKKyAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRSdW50aW1lVHlwZUZv
clZhcmlhYmxlSW5UZXh0UmFuZ2UodG9rZW4uc3RyaW5nLCB0b2tlbkluZm8ucG9zaXRpb24ubGlu
ZSwgdG9rZW5JbmZvLnBvc2l0aW9uLmNoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5JbmZvLnBvc2l0aW9uLmxpbmUs
IHRva2VuSW5mby5wb3NpdGlvbi5jaCArIHRva2VuLnN0cmluZy5sZW5ndGgsIGhhbmRsZXIpCisK
KyAgICAgICAgfQorICAgIH0gCisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1
cCIsIG1vdXNlVXBUZXN0LmJpbmQodGhpcyksIHRydWUpOworICAgIAogfTsKIAogV2ViSW5zcGVj
dG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
cik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>232596</attachid>
            <date>2014-06-05 18:24:55 -0700</date>
            <delta_ts>2014-06-18 09:34:24 -0700</delta_ts>
            <desc>path</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>53107</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzM1M2FhMC4uNjA2YTg3NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgyMSw2ICs4MjEsMTAgQEAKIAkJNDEzNTlDRjMw
RkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0
ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZvdW5k
YXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
ICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAwRUY3
QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1MkFGRjQ0MDE5M0NDREEzMDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkFG
RjQzRjE5M0NDREEzMDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi87IH07
CisJCTUyQUZGNDQyMTkzRDBFMkUwMDFEQUFENCAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJE
dW1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkFG
RjQ0MTE5M0QwRTJFMDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5oICov
OyB9OworCQk1MkFGRjQ0NDE5M0QwRTQ5MDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyRHVtcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MkFGRjQ0MzE5M0QwRTQ5MDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVt
cC5jcHAgKi87IH07CisJCTUyREM5QzEyMTkzOTMwQjEwMEZBNzQ2MyAvKiBUeXBlU2V0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyREM5QzExMTkz
OTMwQjEwMEZBNzQ2MyAvKiBUeXBlU2V0LmNwcCAqLzsgfTsKIAkJNTUxMDUwMjYxOEVCODI3NTAw
MDAxRjNFIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4OEYwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJh
Y2tGdW5jdGlvbi5oICovOyB9OwogCQk1NTQwNzU3MjE4REE1OEFEMDBFRkY3RjIgLyogQXJnTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNjA1
MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLzsgfTsKIAkJNTU0MDc1NzMxOERBNThB
RDAwRUZGN0YyIC8qIEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMyNTdERTYwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5oICov
OyB9OwpAQCAtMjU5NSw2ICsyNTk5LDExIEBACiAJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAv
KiBqc2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0ganNjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB9
OwogCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29s
dXRlPiI7IH07CiAJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGliICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVk
Lm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGli
b2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJNTJBRkY0M0YxOTND
Q0RBMzAwMURBQUQ0IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaDsgcGF0aCA9IHByb2ZpbGVyL0hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkFGRjQ0MTE5
M0QwRTJFMDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmg7IHBhdGggPSBwcm9maWxlci9I
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUyQUZGNDQzMTkzRDBFNDkwMDFEQUFENCAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJE
dW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1bXAu
Y3BwOyBwYXRoID0gcHJvZmlsZXIvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQUZGNDQ4MTkzRkQzNTkwMDFEQUFENCAvKiBU
eXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFR5cGVTZXQuaDsgcGF0aCA9IHByb2ZpbGVyL1R5cGVT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJEQzlDMTExOTM5MzBCMTAwRkE3
NDYzIC8qIFR5cGVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZVNldC5jcHA7IHBhdGgg
PSBwcm9maWxlci9UeXBlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU0
MDc1ODQxOEY0QTM3NTAwNjAyQTVEIC8qIENvbXBpbGVSdW50aW1lVG9MTFZNSVIueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU0MDdBQzgxOERBNThBRDAw
RUZGN0YyIC8qIGxpYkNvbXBpbGVSdW50aW1lVG9MTFZNSVIuYSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXgg
PSAwOyBwYXRoID0gbGliQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi5hOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDUzNzI2RDBFMUM1NDZCMDAyMUU1NDkgLyogVHJhY2lu
Zy5kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRyYWNpbmcuZDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQ4NTQsNyArNDg2MywxMSBAQAogCQk5NUFCODMxQTBEQTQyQzY5MDBCQzgz
RjMgLyogcHJvZmlsZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTUyQUZGNDQ4MTkzRkQzNTkwMDFEQUFENCAvKiBUeXBlU2V0LmggKi8sCiAJCQkJOTVF
M0JDMDQwRTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggKi8sCisJCQkJNTJBRkY0
M0YxOTNDQ0RBMzAwMURBQUQ0IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovLAorCQkJ
CTUyQUZGNDQzMTkzRDBFNDkwMDFEQUFENCAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1w
LmNwcCAqLywKKwkJCQk1MkFGRjQ0MTE5M0QwRTJFMDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyRHVtcC5oICovLAogCQkJCTk1QUI4MzJFMERBNDJDQUQwMEJDODNGMyAvKiBMZWdh
Y3lQcm9maWxlci5jcHAgKi8sCiAJCQkJOTVBQjgzMkYwREE0MkNBRDAwQkM4M0YzIC8qIExlZ2Fj
eVByb2ZpbGVyLmggKi8sCiAJCQkJOTU3NDJGNjMwREQxMUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUu
Y3BwICovLApAQCAtNDg5MCw2ICs0OTAzLDcgQEAKIAkJCQkwRkIxMDU4QTE2NzU0ODJFMDBGOEFC
NkUgLyogUHJvZmlsZXJPU1JFeGl0U2l0ZS5oICovLAogCQkJCTBGMTM5MTI2MTY3NzFDMzAwMDlD
Q0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcCAqLywKIAkJCQkwRjEzOTEyNzE2
NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oICovLAorCQkJCTUy
REM5QzExMTkzOTMwQjEwMEZBNzQ2MyAvKiBUeXBlU2V0LmNwcCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gcHJvZmlsZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjE3Nyw2ICs2MTkx
LDggQEAKIAkJCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY2QjFDQkExODYxMjQ0QzAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2Vy
dmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjFDQkUxODYxMjQ2QTAwODQ1RDk3
IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTJBRkY0NDIxOTNEMEUyRTAwMURBQUQ0IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
ckR1bXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyQUZGNDQwMTkzQ0NEQTMwMDFEQUFENCAvKiBI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzMxNDEyMTgx
NDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU3RDIz
RUUxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkI3RjM5RDE1RUQ4RTQ2MDBGMTY3QjIgLyogUmVqZWN0LmggaW4gSGVhZGVycyAqLywK
QEAgLTY4MjIsNiArNjgzOCw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1MkRDOUMx
MjE5MzkzMEIxMDBGQTc0NjMgLyogVHlwZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZB
NTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTcwNjYsNiArNzA4Myw3IEBACiAJCQkJMTRCQTdBOTcxM0FBREZGODAwNUI3QzJD
IC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI0RDMxRTIxNjFDRDY5NTAwMkFBNERC
IC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyRTUyNkJEMTU5MEVG
MDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTJBRkY0NDQx
OTNEMEU0OTAwMURBQUQ0IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1bXAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0UxMDdFQzM3NjAwNDI3QTQ4IC8q
IElkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNzUxODlCMDM4QzAwNjMz
MjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBkY2U4MWU3
Li40MjY3YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uCkBAIC0xMjIsNyArMTIyLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2RlYnVnIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9w
cm9maWxlX3dpbGxfY2FsbCIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcHJvZmlsZV9kaWRfY2FsbCIsICJsZW5ndGgiIDogMiB9LAotICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfZW5kIiwgImxlbmd0aCIgOiAyIH0KKyAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2VuZCIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJv
ZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkiLCAibGVuZ3RoIiA6IDIgfQogICAgICAgICBd
CiAgICAgfSwKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCmluZGV4IDkyNDQ5ZjkuLmE3M2VkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC01NCw2ICs1NCw5IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2luaXRfbGF6eV9y
ZWc6CiAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOgogICAgIGNhc2Ugb3BfZW50ZXI6CisgICAgLy9z
YiBUT0RPOiBTaG91bGQgdGhpcyBmdW5jdG9yIGJlIGNhbGxlZCB3aXRoIG9uZSBvcGVyYW5kPwor
ICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CisgICAgLy9zYgog
ICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF90b3VjaF9lbnRyeToKICAgICAgICAgcmV0
dXJuOwpAQCAtMjg3LDYgKzI5MCw5IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICBjYXNlIG9wX3B1dF9ieV9pbmRleDoKICAgICBj
YXNlIG9wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICAvL3NiCisgICAgY2FzZSBvcF9wcm9maWxl
X3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKKyAgICAvL3NiCiAgICAgY2FzZSBvcF90b3VjaF9l
bnRyeToKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ug
b3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hF
TFBFUl9PUENPREVTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggNzc1NjNhOS4uZTc3OGRmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE4MjcsMTAgKzE4MjcsMTggQEAgQ29kZUJsb2Nr
OjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW4KIAogICAgIG1faGVhcC0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsKICAg
ICBtX2hlYXAtPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplb2YoQ29kZUJsb2NrKSArIG1faW5z
dHJ1Y3Rpb25zLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikpOworCisgICAgLy9zZXR1cCBv
cHRpb25hbCBwcm9maWxpbmcgb2YgdHlwZXMKKyAgICAvL1RPRE86IG1ha2UgdGhpcyBvbmx5IGhh
cHBlbiBjb25kaXRpb25hbGx5CisgICAgbV9oaWdoRmlkZWxpdHlUeXBlSGlzdG9yeSA9IHN0ZDo6
bWFrZV91bmlxdWU8T3BlcmFuZHM8VHlwZVNldD4+KG1fbnVtUGFyYW1ldGVycywgbV9udW1WYXJz
KTsKKyAgICBUeXBlU2V0IGJhc2VUeXBlOworICAgIG1faGlnaEZpZGVsaXR5VHlwZUhpc3Rvcnkt
PmZpbGwoYmFzZVR5cGUpOwogfQogCiBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogeworICAgIG93
bmVyRXhlY3V0YWJsZSgpLT5tZXJnZUluY29taW5nSGlnaEZpZGVsaXR5UHJvZmlsZVR5cGVzKGdl
dEhpZ2hGaWRlbGl0eVR5cGVIaXN0b3J5KCksIHN5bWJvbFRhYmxlKCkpOworCiAgICAgaWYgKG1f
dm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKICAgICAgICAgbV92bS0+bV9wZXJCeXRlY29kZVBy
b2ZpbGVyLT5ub3RpZnlEZXN0cnVjdGlvbih0aGlzKTsKIApAQCAtMzQ1Nyw2ICszNDY1LDkgQEAg
Ym9vbCBDb2RlQmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2RlSUQgb3Bjb2RlSUQpCiAKIFN0cmluZyBD
b2RlQmxvY2s6Om5hbWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
KQogeworICAgIGlmICghc3ltYm9sVGFibGUoKSkgCisgICAgICAgIHJldHVybiAiIjsKKwogICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAg
U3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tl
cik7CiAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBwdHIgPSBzeW1ib2xUYWJs
ZSgpLT5iZWdpbihsb2NrZXIpOyBwdHIgIT0gZW5kOyArK3B0cikgewpAQCAtMzYxOSw0ICszNjMw
LDMwIEBAIERGRzo6Q2FwYWJpbGl0eUxldmVsIENvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsKCkK
IH0KICNlbmRpZgogCit2b2lkIENvZGVCbG9jazo6cmVjb3JkVHlwZUZvclJlZ2lzdGVyKFZpcnR1
YWxSZWdpc3RlciByZWcsIEpTVmFsdWUgdmFsKQoreworICAgIFR5cGVTZXQmIHR5cGVTZXQgPSBt
X2hpZ2hGaWRlbGl0eVR5cGVIaXN0b3J5LT5vcGVyYW5kKHJlZyk7CisgICAgUnVudGltZVR5cGUg
dHlwZSA9IFR5cGVTZXQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFsdWUodmFsKTsKKyAgICB0eXBlU2V0
LmFkZFR5cGUodHlwZSk7CisgICAgLy9TdHJpbmcgbmFtZSA9IHRoaXMtPm5hbWVGb3JSZWdpc3Rl
cihyZWcpOworICAgIC8vU3RyaW5nIHNlZW5UeXBlcyA9IHR5cGVTZXQuc2VlblR5cGVzKCk7Cisg
ICAgLy9wcmludGYoInZhcj0lcywgdHlwZXM9JXNcbiIsbmFtZS5hc2NpaSgpLmRhdGEoKSwgc2Vl
blR5cGVzLmFzY2lpKCkuZGF0YSgpKTsKK30KKworU3RyaW5nIENvZGVCbG9jazo6cnVudGltZVR5
cGVzRm9yVmFyaWFibGVOYW1lKGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lKQoreworICAgIElk
ZW50aWZpZXIgaWRlbnQodm0oKSwgdmFyaWFibGVOYW1lKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CisgICAgaWYgKCFlbnRy
eS5pc051bGwoKSkgeworICAgICAgICBpbnQgaW5kZXggPSBlbnRyeS5nZXRJbmRleCgpOworICAg
ICAgICBUeXBlU2V0JiB0eXBlU2V0ID0gbV9oaWdoRmlkZWxpdHlUeXBlSGlzdG9yeS0+b3BlcmFu
ZChpbmRleCk7IAorICAgICAgICBTdHJpbmcgc2VlblR5cGVzKHR5cGVTZXQuc2VlblR5cGVzKCkp
OworICAgICAgICByZXR1cm4gc2VlblR5cGVzOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vcHJp
bnRmKCJObyByZWdpc3RlciBpbmRleCwgZW50cnkgaXMgTnVsbFxuIik7CisgICAgICAgIC8vcmV0
dXJuICJ7VmFyaWFibGUgTm90IEZvdW5kfSI7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCmluZGV4IDYyMjMyNzEuLjFkNGQ5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJQcm9m
aWxlckpldHRpc29uUmVhc29uLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKKyNpbmNsdWRlICJUeXBlU2V0LmgiCiAjaW5jbHVkZSAi
VW5jb25kaXRpb25hbEZpbmFsaXplci5oIgogI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgogI2lu
Y2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAtNDA0LDcgKzQwNSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotICAgIFN0cmluZyBuYW1lRm9yUmVnaXN0ZXIo
VmlydHVhbFJlZ2lzdGVyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFtZUZvclJl
Z2lzdGVyKFZpcnR1YWxSZWdpc3Rlcik7CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgc2V0
TnVtYmVyT2ZCeVZhbEluZm9zKHNpemVfdCBzaXplKSB7IG1fYnlWYWxJbmZvcy5yZXNpemVUb0Zp
dChzaXplKTsgfQpAQCAtOTM5LDYgKzk0MCwzNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzS25v
d25Ub0JlTGl2ZUR1cmluZ0dDKCk7IC8vIFdpbGwgb25seSByZXR1cm4gdmFsaWQgcmVzdWx0cyB3
aGVuIGNhbGxlZCBkdXJpbmcgR0MuIEFzc3VtZXMgdGhhdCB5b3UndmUgYWxyZWFkeSBlc3RhYmxp
c2hlZCB0aGF0IHRoZSBvd25lciBleGVjdXRhYmxlIGlzIGxpdmUuCiAKKyAgICB2b2lkIHJlY29y
ZFR5cGVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIsIEpTVmFsdWUgdik7CisgICAgT3BlcmFu
ZHM8VHlwZVNldD4mIGdldEhpZ2hGaWRlbGl0eVR5cGVIaXN0b3J5KCkgeyByZXR1cm4gKihtX2hp
Z2hGaWRlbGl0eVR5cGVIaXN0b3J5LmdldCgpKTsgfQorICAgIFN0cmluZyBydW50aW1lVHlwZXNG
b3JWYXJpYWJsZU5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIGR1bXBSZWdpc3Rlcklu
Zm9Gb3JEZWJ1Z2dpbmcoKSAKKyAgICB7CisgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSB0aGlzLT5vd25lckV4ZWN1dGFibGUoKTsKKyAgICAgICAgcHJpbnRmKCI9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09XG4iKTsKKyAgICAgICAgcHJpbnRmKCJBY2Nlc2luZyBjb2RlYmxvY2tcbiIpOworICAgICAg
ICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworICAgICAgICBwcmludGYoIlVS
TDolc1xuIiwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAg
ICBwcmludGYoInN0YXJ0aW5nOiBbTGluZTolZCwgQ29sdW1uOiVkXVxuIiwgZXhlY3V0YWJsZS0+
bGluZU5vKCksIGV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkpOworICAgICAgICBwcmludGYoImVu
ZGluZzogW0xpbmU6JWQsIENvbHVtbjolZF1cbiIsIGV4ZWN1dGFibGUtPmxhc3RMaW5lKCksIGV4
ZWN1dGFibGUtPmVuZENvbHVtbigpKTsKKyAgICAgICAgcHJpbnRmKCJjaGFyYWN0ZXIgb2Zmc2V0
OiBbU3RhcnQ6JWQsIEVuZDolZF1cbiIsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0
KCksIGV4ZWN1dGFibGUtPnNvdXJjZSgpLmVuZE9mZnNldCgpKTsKKyAgICAgICAgcHJpbnRmKCIt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWN1
dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CisgICAgICAgIHByaW50ZigiJXNcbiIsIHNvdXJj
ZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LVxuIik7CisKKyAgICAgICAgT3BlcmFuZHM8VHlwZVNldD4mIHR5cGVIaXN0b3J5ID0gdGhpcy0+
Z2V0SGlnaEZpZGVsaXR5VHlwZUhpc3RvcnkoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDAsIHNp
emUgPSB0eXBlSGlzdG9yeS5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciByZWcgPSB0eXBlSGlzdG9yeS52aXJ0dWFsUmVnaXN0ZXJBdChpKTsKKyAg
ICAgICAgICAgIFR5cGVTZXQmIHR5cGVTZXQgPSB0eXBlSGlzdG9yeS5hdChpKTsKKyAgICAgICAg
ICAgIFN0cmluZyBuYW1lID0gdGhpcy0+bmFtZUZvclJlZ2lzdGVyKHJlZyk7CisgICAgICAgICAg
ICBTdHJpbmcgc2VlblR5cGVzID0gdHlwZVNldC5zZWVuVHlwZXMoKTsKKyAgICAgICAgICAgIGlm
IChuYW1lLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHByaW50ZigidmFyPT5cIiVzXCIgcmVn
PT5cIiVkXCIgIDo6OiB0eXBlcz0+eyAlc31cbiIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIHR5cGVI
aXN0b3J5Lm9wZXJhbmRGb3JJbmRleChpKSwgc2VlblR5cGVzLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgfQorICAgICAgICBwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworICAgIH0KKwogcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkgb3Zl
cnJpZGU7CkBAIC0xMDA3LDYgKzEwMzksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9yYXJl
RGF0YSA9IGFkb3B0UHRyKG5ldyBSYXJlRGF0YSk7CiAgICAgfQogCisKICNpZiBFTkFCTEUoSklU
KQogICAgIHZvaWQgcmVzZXRTdHViSW50ZXJuYWwoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0
dWJJbmZvJik7CiAgICAgdm9pZCByZXNldFN0dWJEdXJpbmdHQ0ludGVybmFsKFJlcGF0Y2hCdWZm
ZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwpAQCAtMTA4OCw2ICsxMTIxLDkgQEAgcHJpdmF0ZToK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IG1fbGl2ZW5l
c3NBbmFseXNpczsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxPcGVyYW5kczxUeXBlU2V0Pj4gbV9o
aWdoRmlkZWxpdHlUeXBlSGlzdG9yeTsKKworCiAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0hhc2guaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmgKaW5kZXggNGUzMzk4ODYuLjllODJl
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tI
YXNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0hhc2gu
aApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJl
dHVybiBtX2hhc2g7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBnZXRIYXNoKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3BlcmFuZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5o
CmluZGV4IGYyMWUwNWYuLjE5NDQ2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGVyYW5kcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGVyYW5kcy5oCkBAIC0xOTAsNiArMTkwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50c1tpbmRleF07CiAgICAgICAgIHJldHVybiBtX2xvY2Fsc1tpbmRleCAt
IG51bWJlck9mQXJndW1lbnRzKCldOwogICAgIH0KKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVh
bFJlZ2lzdGVyQXQoc2l6ZV90IGluZGV4KSAKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA8IG51
bWJlck9mQXJndW1lbnRzKCkpCisgICAgICAgICAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoaW5kZXgpOworICAgICAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aW5kZXggLSBudW1iZXJPZkFyZ3VtZW50cygpKTsKKyAgICB9CiAgICAgY29uc3QgVCYgb3BlcmF0
b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQogICAgIFQmIG9w
ZXJhdG9yW10oc2l6ZV90IGluZGV4KSB7IHJldHVybiBhdChpbmRleCk7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCBlNTQ5YjgzLi4wZjJmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTAwMiw2
ICsxMDAyLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZShSZWdp
c3RlcklEKiBkc3QsIENhcHR1cmVNb2RlIGNhcHR1cmVNb2RlCiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHNyYy0+aW5kZXgoKSk7CiAgICAgaWYgKGNhcHR1cmVNb2RlID09IElzQ2FwdHVyZWQp
CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh3YXRjaGFibGVWYXJpYWJsZShkc3QtPmlu
ZGV4KCkpKTsKKworICAgIC8vVE9ETzogbm90IGZpcmluZyBmb3IgdW5kZWZpbmVkIGFuZCBhc3Np
Z25tZW50cyB0byBmdW5jdGlvbnMKKyAgICBpZiAoIWRzdC0+aXNUZW1wb3JhcnkoKSkKKyAgICAg
ICAgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZHN0KTsKKwogICAgIHJldHVybiBk
c3Q7CiB9CiAKQEAgLTExMTAsNiArMTExNSwxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdAog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMyLT5pbmRleCgpKTsKICAgICByZXR1cm4gZHN0
OwogfQorLy9zYgordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVUeXBlc1dpdGhI
aWdoRmlkZWxpdHkoUmVnaXN0ZXJJRCogZHN0KQoreworICAgIGVtaXRPcGNvZGUob3BfcHJvZmls
ZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChk
c3QtPmluZGV4KCkpOworfQorLy9zYgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29sIGIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZGRl
OGU3Ni4uMTE3OWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzMxLDYgKzMzMSw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgICAgICByZXR1cm4gZW1pdE5vZGUobik7CiAgICAgICAgIH0KKyAg
ICAgICAgLy9zYgorICAgICAgICB2b2lkIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5
KFJlZ2lzdGVySUQqIGRzdCk7CisgICAgICAgIC8vc2IKIAogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGJvb2wpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcAppbmRleCBkOGQ2OWEyLi4wZmNiMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVk
ZSAiQ29tcGxldGlvbi5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCkBAIC0xOTEsNiArMTkyLDE4IEBAIHZvaWQgSW5zcGVjdG9y
UnVudGltZUFnZW50OjpydW4oRXJyb3JTdHJpbmcqKQogewogfQogCit2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5fdXJs
LCBpbnQgaW5fc3RhcnRMaW5lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluX3N0YXJ0Q29sdW1uLCBpbnQgaW5f
ZW5kTGluZSwgaW50IGluX2VuZENvbHVtbiwgU3RyaW5nKiBvdXRfdHlwZXMpIAoreworICAgIFZN
JiB2bSA9IGdsb2JhbFZNKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB2bS5maW5kU21h
bGxlc3RFbmNsb3NpbmdDb2RlQmxvY2soaW5fc3RhcnRMaW5lLCBpbl9zdGFydENvbHVtbiwgaW5f
ZW5kTGluZSwgaW5fZW5kQ29sdW1uLCBpbl91cmwpOworICAgIC8vY29kZUJsb2NrLT5kdW1wUmVn
aXN0ZXJJbmZvRm9yRGVidWdnaW5nKCk7CisgICAgLy9wcmludGYoIlxuR2V0dGluIHJ1bnRpbWUg
dHlwZSBmb3IgdmFyaWFibGU6JyVzJyBpbiBmaWxlOiAnJXMnXG4iLCBpbl92YXJpYWJsZU5hbWUu
YXNjaWkoKS5kYXRhKCksIGluX3VybC5hc2NpaSgpLmRhdGEoKSk7CisgICAgU3RyaW5nKiB0eXBl
cyA9IG5ldyBTdHJpbmcoY29kZUJsb2NrLT5ydW50aW1lVHlwZXNGb3JWYXJpYWJsZU5hbWUoaW5f
dmFyaWFibGVOYW1lKSk7CisgICAgLy9wcmludGYoInR5cGVzIDo6OiAnJXMnXG4iLCB0eXBlcy0+
YXNjaWkoKS5kYXRhKCkpOworICAgICpvdXRfdHlwZXMgPSAqdHlwZXM7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUnVudGltZUFnZW50LmgKaW5kZXggZDZjMWVlYS4uZDczYjI5NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29u
c3QgYm9vbCogb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+
JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRl
cm5hbFByb3BlcnRpZXMpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNl
T2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKSBvdmVy
cmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5fdmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcm
IGluX3VybCwgaW50IGluX3N0YXJ0TGluZSwgaW50IGluX3N0YXJ0Q29sdW1uLCBpbnQgaW5fZW5k
TGluZSwgaW50IGluX2VuZENvbHVtbiwgU3RyaW5nKiBvdXRfdHlwZXMpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBzZXRTY3JpcHREZWJ1Z1NlcnZlcihTY3JpcHREZWJ1Z1NlcnZlciogc2NyaXB0RGVi
dWdTZXJ2ZXIpIHsgbV9zY3JpcHREZWJ1Z1NlcnZlciA9IHNjcmlwdERlYnVnU2VydmVyOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUnVu
dGltZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50
aW1lLmpzb24KaW5kZXggZjdiZjEzMy4uNDU2ODQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24KQEAgLTE5Niw2ICsx
OTYsMjEgQEAKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCiAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgcmVwb3J0aW5nIG9mIGV4ZWN1dGlvbiBj
b250ZXh0cyBjcmVhdGlvbi4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJu
YW1lIjogImdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZSIsCisgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhcmlhYmxlTmFt
ZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJWYXJpYWJsZSB3ZSB3YW50IHR5
cGUgaW5mcm9tYXRpb24gZm9yLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIs
ICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJ1cmwgZm9yIGNvZGUgd2UncmUgaW50
ZXJlc3RlZCBpbiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXJ0TGluZSIsICJ0
eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAic3RhcnQgbGluZSBmb3IgdmFyaWFibGUg
bmFtZSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXJ0Q29sdW1uIiwgInR5cGUi
OiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJzdGFydCBjb2x1bW4gZm9yIHZhcmlhYmxlIG5h
bWUiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRMaW5lIiwgInR5cGUiOiAiaW50
ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJlbmQgbGluZSBmb3IgdmFyaWFibGUgbmFtZSIgfSwKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImVuZENvbHVtbiIsICJ0eXBlIjogImludGVnZXIiLCAi
ZGVzY3JpcHRpb24iOiAiZW5kIGNvbHVtbiBmb3IgdmFyaWFibGUgbmFtZSIgfQorICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAidHlwZXMiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVHlwZXMgZm9yIHJl
cXVlc3RlZCB2YXJpYWJsZS4iIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiUmV0dXJucyBkZXRhaWxlZCBpbmZvcm10YXRpb24gb24gZ2l2ZW4gZnVuY3Rpb24u
IgogICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApp
bmRleCBhZWQ3YWYxLi40ZjUyZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjQsNiArMjQs
NyBAQAogCiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
R2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29tcGxldGlv
bi5oIgogI2luY2x1ZGUgIkNvcGllZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkhlbHBlcnMuaCIKQEAgLTM3LDExICszOCwxMyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2lu
Y2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIk9wZXJh
bmRzLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5n
VG9vbC5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJh
cmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgorI2luY2x1ZGUg
IlR5cGVTZXQuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDxzdGRsaWIuaD4KQEAgLTM0NSw2ICszNDgsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNsZWFyU2FtcGxpbmdGbGFn
cyhFeGVjU3RhdGUqKTsKICNlbmRpZgogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50VmFyaWFibGVz
SW5Db2RlQmxvY2tHaXZlblJhbmdlKEV4ZWNTdGF0ZSopOworCiBzdHJ1Y3QgU2NyaXB0IHsKICAg
ICBib29sIGlzRmlsZTsKICAgICBjaGFyKiBhcmd1bWVudDsKQEAgLTQ4Nyw2ICs0OTMsOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlSW1wdXJlR2V0dGVyIiwg
ZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwg
InNldEltcHVyZUdldHRlckRlbGVnYXRlIiwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0
ZSwgMik7CiAKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJwcm9maWxlVHlwZXNXaXRoSGlnaEZp
ZGVsaXR5IiwgZnVuY3Rpb25Qcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5LCAwKTsKKyAgICAg
ICAgYWRkRnVuY3Rpb24odm0sICJwcmludFZhcmlhYmxlc0luQ29kZUJsb2NrR2l2ZW5SYW5nZSIs
IGZ1bmN0aW9uUHJpbnRWYXJpYWJsZXNJbkNvZGVCbG9ja0dpdmVuUmFuZ2UsIDQpOworICAgICAg
ICAKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4
ZWMoKSwgMCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUo
KTsgKytpKQogICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbEV4ZWMoKSwg
aSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNbaV0pKTsKQEAgLTkxMSw2ICs5MjAs
MzcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRl
cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShNYXNxdWVyYWRl
cjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOwogfQog
CisKK2NsYXNzIEhpZ2hGaWRlbGl0eVR5cGVGdW5jdG9yIHsKK3B1YmxpYzoKKworICAgIGJvb2wg
b3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICB7CisgICAgICAgIGNvZGVCbG9j
ay0+ZHVtcFJlZ2lzdGVySW5mb0ZvckRlYnVnZ2luZygpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb2Zp
bGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEhpZ2hGaWRl
bGl0eVR5cGVGdW5jdG9yIGZ1bmN0b3I7CisgICAgLy9ub3RlLCB0aGlzIGlzbid0IGdvaW5nIHRo
cm91Z2ggYWxsIGV4ZWN1dGFibGVzLiBKdXN0IHRob3NlIHRoYXQgaGF2ZSBiZWVuIGV4ZWN1dGVk
IChpLmUsIHR1cm5lZCBpbnRvIGNvZGVibG9ja3MpCisgICAgZXhlYy0+aGVhcCgpLT5mb3JFYWNo
Q29kZUJsb2NrKGZ1bmN0b3IpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFZh
cmlhYmxlc0luQ29kZUJsb2NrR2l2ZW5SYW5nZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQ29k
ZUJsb2NrKiBlbmNsb3NpbmdCbG9jayA9IGV4ZWMtPnZtKCkuZmluZFNtYWxsZXN0RW5jbG9zaW5n
Q29kZUJsb2NrKGV4ZWMtPmFyZ3VtZW50KDApLmFzVUludDMyKCksIGV4ZWMtPmFyZ3VtZW50KDEp
LmFzVUludDMyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLmFzVUludDMy
KCksIGV4ZWMtPmFyZ3VtZW50KDMpLmFzVUludDMyKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCkpOworICAgIHByaW50
ZigiXG5Gb3VuZCBDb2RlQmxvY2tcbiIpOworICAgIGVuY2xvc2luZ0Jsb2NrLT5kdW1wUmVnaXN0
ZXJJbmZvRm9yRGVidWdnaW5nKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKK30KKworCisKIC8vIFVzZSBTRUggZm9yIFJlbGVhc2UgYnVpbGRzIG9ubHkgdG8g
Z2V0IHJpZCBvZiB0aGUgY3Jhc2ggcmVwb3J0IGRpYWxvZwogLy8gKGx1Y2tpbHkgdGhlIHNhbWUg
dGVzdHMgZmFpbCBpbiBSZWxlYXNlIGFuZCBEZWJ1ZyBidWlsZHMgc28gZmFyKS4gTmVlZCB0bwog
Ly8gYmUgaW4gYSBzZXBhcmF0ZSBtYWluIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGpzY21haW4gZnVu
Y3Rpb24gcmVxdWlyZXMgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCA1YTEwOTY4Li40ODk5NzhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTUzNCw2ICs1MzQsMTMg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19yZWdleHApCiAgICAgTExJTlRf
UkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPnJlY29yZFR5cGVGb3JSZWdpc3Rl
cihWaXJ0dWFsUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkuanNWYWx1ZSgp
KTsKKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfY2hlY2tfaGFzX2luc3RhbmNlKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDljNmYxMjIuLmJl
YTM4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5o
CkBAIC03MCw2ICs3MCw5IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV3X2FycmF5KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Fy
cmF5X3dpdGhfc2l6ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
d19hcnJheV9idWZmZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9u
ZXdfcmVnZXhwKTsKKy8vc2IKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkpOworLy9zYgogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBmZmQxMzgzLi5lMzM2
ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCkBAIC0xMjMyLDMgKzEyMzIsOCBAQCBlbmQKIF9sbGludF9vcF9pbml0X2ds
b2JhbF9jb25zdF9ub3A6CiAgICAgZGlzcGF0Y2goNSkKIAorI3NiCitfbGxpbnRfb3BfcHJvZmls
ZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkpCisgICAgZGlzcGF0Y2goMikK
KyNzYgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmZhYmI4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyX2gKKyNkZWZpbmUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gK
KworI2luY2x1ZGUgIk9wZXJhbmRzLmgiCisjaW5jbHVkZSAiVHlwZVNldC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworICAgIGNsYXNzIFR5cGVTZXQ7CisKKworY2xhc3MgSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyIHsKKworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBhbmFseXplQWxsVHlwZXMo
T3BlcmFuZHM8VHlwZVNldD4mLCBDb2RlQmxvY2sqKTsKKyAgICB2aXJ0dWFsIH5IaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIoKTsKK307CisKKworfSAvL25hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDVmOGE0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlckR1bXAuY3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKy8vI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlckR1bXAuaCIKKy8vCisvL3ZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcDo6
YW5hbHl6ZUFsbFR5cGVzKE9wZXJhbmRzPFR5cGVTZXQ+JiBvcGVyYW5kcywgQ29kZUJsb2NrKiBj
b2RlQmxvY2spIG92ZXJyaWRlCisvL3sKKy8vICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGggPSBv
cGVyYW5kcy5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKy8vICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgciA9IG9wZXJhbmRzLnZpcnR1YWxSZWdpc3RlckF0KGkpOworLy8gICAgICAgIFR5cGVTZXQm
IHR5cGVTZXQgPSBvcGVyYW5kcy5hdChpKTsKKy8vICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0g
Y29kZUJsb2NrLT5uYW1lRm9yUmVnaXN0ZXIocikuYXNjaWkoKS5kYXRhKCk7CisvLyAgICAgICAg
cHJpbnRmKCJyZWcgbmFtZT0lcywgdHlwZXM9JXMiLCBuYW1lLCB0eXBlU2V0LnNlZW5UeXBlcygp
LmFzY2lpKCkuZGF0YSgpKTsKKy8vICAgIH0gICAgICAgICAgIAorLy99CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJE
dW1wLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyRHVtcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMDdjNzUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyNpZm5kZWYgSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyRHVtcF9oCisvLyNkZWZpbmUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
RHVtcF9oCisvLworLy8jaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCisvLwor
Ly9uYW1lc3BhY2UgSlNDIHsKKy8vCisvL2NsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1
bXAgOiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIgeworLy8KKy8vICAgIHZvaWQgYW5hbHl6ZUFs
bFR5cGVzKE9wZXJhbmRzPFR5cGVTZXQ+JiwgQ29kZUJsb2NrKikgb3ZlcnJpZGU7CisvLworLy99
OworLy8KKy8vCisvL30gLy9uYW1lc3BhY2UgSlNDCisvLworLy8jZW5kaWYgLy9IaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXJEdW1wX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9UeXBl
U2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODI1M2RkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1R5cGVTZXQuY3Bw
CkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlR5cGVTZXQuaCIK
KworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitUeXBlU2V0OjpUeXBlU2V0KCkKKyAgICA6IG1fc2VlblR5
cGVzKFR5cGVOb3RoaW5nKQoreworfQorCitSdW50aW1lVHlwZSBUeXBlU2V0OjpnZXRSdW50aW1l
VHlwZUZvclZhbHVlKEpTVmFsdWUgdikKK3sKKyAgICBSdW50aW1lVHlwZSByZXQ7CisgICAgaWYg
KHYuaXNGdW5jdGlvbigpKQorICAgICAgICByZXQgPSBUeXBlRnVuY3Rpb247CisgICAgZWxzZSBp
ZiAodi5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXQgPSBUeXBlVW5kZWZpbmVkOworICAgIGVs
c2UgaWYgKHYuaXNOdWxsKCkpCisgICAgICAgIHJldCA9IFR5cGVOdWxsOworICAgIGVsc2UgaWYg
KHYuaXNCb29sZWFuKCkpCisgICAgICAgIHJldCA9IFR5cGVCb29sZWFuOworICAgIGVsc2UgaWYg
KHYuaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0ID0gVHlwZVN0cmluZzsKKyAgICBlbHNlIGlmICh2
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldCA9IFR5cGVPYmplY3Q7CisgICAgZWxzZSBpZiAodi5p
c051bWJlcigpKQorICAgICAgICByZXQgPSBUeXBlTnVtYmVyOworICAgIGVsc2UKKyAgICAgICAg
Q1JBU0goKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQgVHlwZVNldDo6YWRkVHlwZShS
dW50aW1lVHlwZSB0KQoreworICAgIG1fc2VlblR5cGVzID0gbV9zZWVuVHlwZXMgfCB0OworICAg
IC8vZHVtcFNlZW5UeXBlcygpOworfQorCit2b2lkIFR5cGVTZXQ6Om1lcmdlV2l0aFR5cGVTZXQo
Y29uc3QgVHlwZVNldCYgb3RoZXIpCit7CisgICAgbV9zZWVuVHlwZXMgfD0gb3RoZXIubV9zZWVu
VHlwZXM7Cit9CisKK1dURjo6U3RyaW5nIFR5cGVTZXQ6OnNlZW5UeXBlcygpIAoreworICAgIFdU
Rjo6U3RyaW5nIHNlZW4oIiIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVGdW5jdGlvbikK
KyAgICAgICAgIHNlZW4uYXBwZW5kKCJGdW5jdGlvbiAiKTsKKworICAgIGlmIChtX3NlZW5UeXBl
cyAmIFR5cGVVbmRlZmluZWQpCisgICAgICAgICBzZWVuLmFwcGVuZCgiVW5kZWZpbmVkICIpOwor
CisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bGwpCisgICAgICAgICBzZWVuLmFwcGVuZCgi
TnVsbCAiKTsKKworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVCb29sZWFuKQorICAgICAgICAg
c2Vlbi5hcHBlbmQoIkJvb2xlYW4gIik7CisKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTnVt
YmVyKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIk51bWJlciAiKTsKKworICAgIGlmIChtX3NlZW5U
eXBlcyAmIFR5cGVTdHJpbmcpCisgICAgICAgICBzZWVuLmFwcGVuZCgiU3RyaW5nICIpOworCisg
ICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU9iamVjdCkKKyAgICAgICAgIHNlZW4uYXBwZW5kKCJP
YmplY3QgIik7CisKKyAgICByZXR1cm4gc2VlbjsKK30KKwordm9pZCBUeXBlU2V0OjpkdW1wU2Vl
blR5cGVzKCkKK3sKKyAgICBwcmludGYoIiVzIiwgc2VlblR5cGVzKCkuYXNjaWkoKS5kYXRhKCkp
OworICAgIHByaW50ZigiXG4iKTsKK30KKworCit9IC8vbmFtZXNwYWNlIEpTQworCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvVHlwZVNldC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1R5cGVTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4wZDFiNzRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1R5cGVTZXQuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUeXBlU2V0X2gKKyNk
ZWZpbmUgVHlwZVNldF9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKKyAgICBjbGFzcyBKU1ZhbHVlOworCisgICAgZW51bSBSdW50aW1lVHlw
ZSB7CisgICAgICAgIFR5cGVOb3RoaW5nICAgPSAweDAsCisgICAgICAgIFR5cGVGdW5jdGlvbiAg
PSAweDEsCisgICAgICAgIFR5cGVVbmRlZmluZWQgPSAweDIsCisgICAgICAgIFR5cGVOdWxsICAg
ICAgPSAweDQsCisgICAgICAgIFR5cGVCb29sZWFuICAgPSAweDgsCisgICAgICAgIFR5cGVOdW1i
ZXIgICAgPSAweDEwLAorICAgICAgICBUeXBlU3RyaW5nICAgID0gMHgyMCwKKyAgICAgICAgVHlw
ZU9iamVjdCAgICA9IDB4NDAKKyAgICB9OworCisKKworY2xhc3MgVHlwZVNldCB7CisKK3B1Ymxp
YzoKKyAgICBUeXBlU2V0KCk7CisgICAgdm9pZCBhZGRUeXBlKFJ1bnRpbWVUeXBlIHQpOworICAg
IHZvaWQgbWVyZ2VXaXRoVHlwZVNldChjb25zdCBUeXBlU2V0Jik7CisgICAgc3RhdGljIFJ1bnRp
bWVUeXBlIGdldFJ1bnRpbWVUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2KTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBXVEY6OlN0cmluZyBzZWVuVHlwZXMoKTsKKworcHJpdmF0ZToKKyAgICB1aW50MzJf
dCBtX3NlZW5UeXBlczsKKyAgICB2b2lkIGR1bXBTZWVuVHlwZXMoKTsKKworfTsKKworCit9IC8v
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy9UeXBlU2V0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggZGUzODhlMS4uYjhiNGIxMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5j
bHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIlR5cGVTZXQuaCIKICNpbmNsdWRl
IDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTMzMSw2ICszMzIsMzcgQEAgSlNPYmplY3Qq
IFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAogICAgIHJldHVybiAw
OwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Om1lcmdlSW5jb21pbmdIaWdoRmlkZWxpdHlQ
cm9maWxlVHlwZXMoT3BlcmFuZHM8VHlwZVNldD4mIHR5cGVzRm9yT3BlcmFuZHMsIFN5bWJvbFRh
YmxlKiBzeW1ib2xUYWJsZSkKK3sKKyAgICBwcmludGYoIk1lcmdpbmcgaW5jb21pbmcgdHlwZXNc
biIpOworICAgIC8vT3BlcmFuZHM8U3RyaW5nPmludmVyc2VTeW1ib2xUYWJsZSgpOworICAgIEhh
c2hNYXA8aW50LCBTdHJpbmc+IGludmVyc2VTeW1ib2xUYWJsZTsKKyAgICBDb25jdXJyZW50SklU
TG9ja2VyKiBsb2NrZXIgPSBuZXcgQ29uY3VycmVudEpJVExvY2tlcihzeW1ib2xUYWJsZS0+bV9s
b2NrKTsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHN5bWJvbFRhYmxlLT5iZWdpbigqbG9ja2VyKSwg
ZW5kID0gc3ltYm9sVGFibGUtPmVuZCgqbG9ja2VyKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewor
ICAgICAgICBTdHJpbmcgdmFyTmFtZShpdGVyLT5rZXkpOworICAgICAgICBpbnZlcnNlU3ltYm9s
VGFibGUuc2V0KGl0ZXItPnZhbHVlLmdldEluZGV4KCksIHZhck5hbWUpOworICAgIH0KKyAgICBk
ZWxldGUgbG9ja2VyOworCisgICAgZm9yIChpbnQgaSA9IDAsIHNpemUgPSB0eXBlc0Zvck9wZXJh
bmRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpbnQgcmVnSWQgPSB0eXBlc0Zv
ck9wZXJhbmRzLm9wZXJhbmRGb3JJbmRleChpKTsKKyAgICAgICAgYXV0byBpdGVyID0gaW52ZXJz
ZVN5bWJvbFRhYmxlLmZpbmQocmVnSWQpOworICAgICAgICBhdXRvIGVuZCA9IGludmVyc2VTeW1i
b2xUYWJsZS5lbmQoKTsKKyAgICAgICAgaWYgKGl0ZXIgIT0gZW5kKSB7CisgICAgICAgICAgICBT
dHJpbmcgdmFyTmFtZSA9IGl0ZXItPnZhbHVlOyAKKyAgICAgICAgICAgIFR5cGVTZXQmIHR5cGVT
ZXQgPSB0eXBlc0Zvck9wZXJhbmRzLmF0KGkpOworICAgICAgICAgICAgYXV0byBpdGVyMiA9IG1f
dmFyaWFibGVUb1R5cGVTZXRNYXAuZmluZCh2YXJOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gZW5k
MiA9IG1fdmFyaWFibGVUb1R5cGVTZXRNYXAuZW5kKCk7CisgICAgICAgICAgICBpZiAoaXRlcjIg
IT0gZW5kMikgeworICAgICAgICAgICAgICAgIHR5cGVTZXQubWVyZ2VXaXRoVHlwZVNldChpdGVy
Mi0+dmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV92YXJpYWJsZVRvVHlwZVNl
dE1hcC5zZXQodmFyTmFtZSwgdHlwZVNldCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBwcmludGYoIm5vIGVudHJ5IGluIHN5bWJvbCB0YWJsZSBmb3IgcmVnaXN0ZXI6ICVkXG4iLCBy
ZWdJZCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIGNvbnN0IENsYXNzSW5mbyBFdmFsRXhlY3V0
YWJsZTo6c19pbmZvID0geyAiRXZhbEV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19p
bmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV2YWxFeGVjdXRhYmxlKSB9OwogCiBFdmFs
RXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCkgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYjU4YTU3Yi4uNjU4Zjk5NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIlJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oIgogI2luY2x1ZGUg
IlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJUeXBl
U2V0LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCkBAIC00MzEsOCArNDMyLDEzIEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hDb2RlQmxvY2soRnVuY3RvciYmKTsKIAor
ICAgIHZvaWQgbWVyZ2VJbmNvbWluZ0hpZ2hGaWRlbGl0eVByb2ZpbGVUeXBlcyhPcGVyYW5kczxU
eXBlU2V0PiYsIFN5bWJvbFRhYmxlKik7CisKKwogcHJpdmF0ZToKICAgICBKU09iamVjdCogcHJl
cGFyZUZvckV4ZWN1dGlvbkltcGwoRXhlY1N0YXRlKiwgSlNGdW5jdGlvbiosIEpTU2NvcGUqKiwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVHlw
ZVNldD4gVHlwZVNldE1hcDsgCisgICAgVHlwZVNldE1hcCBtX3ZhcmlhYmxlVG9UeXBlU2V0TWFw
OyAgIAogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYTE4NWEzZC4uZTc0NzQ2OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDcsNiArNDcsOCBAQAogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0
aW9uU2NvcGUuaCIKKy8vI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIgorLy8j
aW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5oIgogI2luY2x1ZGUgIkhvc3RD
YWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5j
cmVtZW50YWxTd2VlcGVyLmgiCkBAIC04MSw2ICs4Myw3IEBACiAjaW5jbHVkZSAiU3Ryb25nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtl
ZENvZGVCbG9jay5oIgorLy8jaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAi
V2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgpAQCAtMzIwLDYgKzMyMyw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICAvLyBJbml0aWFsaXplIHRoaXMgbGFzdCwgYXMgYSBmcmVl
IHdheSBvZiBhc3NlcnRpbmcgdGhhdCBWTSBpbml0aWFsaXphdGlvbiBpdHNlbGYKICAgICAvLyB3
b24ndCB1c2UgdGhpcy4KICAgICBtX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3
IFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOworCisgICAgLy9tX2hpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyPigp
OwogfQogCiBWTTo6flZNKCkKQEAgLTkxMiw2ICs5MTcsMTI1IEBAIHZvaWQgVk06OnNldEVuYWJs
ZWRQcm9maWxlcihMZWdhY3lQcm9maWxlciogcHJvZmlsZXIpCiAgICAgfQogfQogCisKK2NsYXNz
IE5lYXJlc3RDb2RlQmxvY2tSYW5nZUZ1bmN0b3IgeworcHVibGljOgorCisgICAgTmVhcmVzdENv
ZGVCbG9ja1JhbmdlRnVuY3Rvcih1bnNpZ25lZCBpbnQgc3RhcnRMaW5lLCB1bnNpZ25lZCBpbnQg
c3RhcnRDb2x1bW4sIHVuc2lnbmVkIGludCBlbmRMaW5lLCB1bnNpZ25lZCBpbnQgZW5kQ29sdW1u
LCBTdHJpbmcgdXJsKSAKKyAgICAgICAgOiBtX3RhcmdldFN0YXJ0TGluZShzdGFydExpbmUpCisg
ICAgICAgICwgbV90YXJnZXRTdGFydENvbHVtbihzdGFydENvbHVtbikKKyAgICAgICAgLCBtX3Rh
cmdldEVuZExpbmUoZW5kTGluZSkKKyAgICAgICAgLCBtX3RhcmdldEVuZENvbHVtbihlbmRDb2x1
bW4pIAorICAgICAgICAsIG1fdXJsKHVybCkKKyAgICB7CisgICAgICAgIC8vcHJpbnRmKCJGdW5j
dG9yIHdpdGggc291cmNlIHVybCAnJXMnXG4iLCBtX3VybC5hc2NpaSgpLmRhdGEoKSk7CisgICAg
fQorCisgICAgYm9vbCBvcGVyYXRvcigpKENvZGVCbG9jayogY29kZUJsb2NrKQorICAgIHsKKyAg
ICAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCk7CisKKyAgICAgICAgaWYgKG1fdXJsICE9IGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgp
KSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvL1RP
RE86IHdoeSB3b3VsZCBsaW5lIG51bWJlcnMgbWF5YmUgYmUgbmVnYXRpdmUgKGkuZSwgZXhlY3V0
YWJsZSB1c2VzIGludHMgZm9yIGxpbmVubykKKyAgICAgICAgLy9jb2RlQmxvY2stPmR1bXBSZWdp
c3RlckluZm9Gb3JEZWJ1Z2dpbmcoKTsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRMaW5lID0gZXhl
Y3V0YWJsZS0+bGluZU5vKCk7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gZXhlY3V0
YWJsZS0+c3RhcnRDb2x1bW4oKTsKKyAgICAgICAgdW5zaWduZWQgZW5kTGluZSA9IGV4ZWN1dGFi
bGUtPmxhc3RMaW5lKCk7CisgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IGV4ZWN1dGFibGUt
PmVuZENvbHVtbigpOworCisgICAgICAgIGlmICghZW5jbG9zZXNUYXJnZXRSYW5nZShzdGFydExp
bmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4pKSAKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpZiAoc3RhcnRMaW5lID4gbV9zdGFydExpbmUgfHwgKHN0YXJ0
TGluZSA9PSBtX3N0YXJ0TGluZSAmJiBzdGFydENvbHVtbiA+IG1fc3RhcnRDb2x1bW4pKSB7Cisg
ICAgICAgICAgICBtX2Jlc3RDb2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgICAgICAgICBtX3N0
YXJ0TGluZSA9IHN0YXJ0TGluZTsKKyAgICAgICAgICAgIG1fc3RhcnRDb2x1bW4gPSBzdGFydENv
bHVtbjsKKyAgICAgICAgICAgIG1fZW5kTGluZSA9IGVuZExpbmU7CisgICAgICAgICAgICBtX2Vu
ZENvbHVtbiA9IGVuZENvbHVtbjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBDb2RlQmxvY2sqIGJlc3RDb2RlQmxvY2soKSB7IHJldHVybiBtX2Jlc3RD
b2RlQmxvY2s7IH0KKworcHJpdmF0ZToKKworICAgIENvZGVCbG9jayogbV9iZXN0Q29kZUJsb2Nr
OworICAgIHVuc2lnbmVkIG1fc3RhcnRMaW5lID0gMDsKKyAgICB1bnNpZ25lZCBtX2VuZExpbmUg
PSBVSU5UX01BWDsKKyAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uID0gMDsKKyAgICB1bnNpZ25l
ZCBtX2VuZENvbHVtbiA9IFVJTlRfTUFYOworCisgICAgdW5zaWduZWQgbV90YXJnZXRTdGFydExp
bmU7CisgICAgdW5zaWduZWQgbV90YXJnZXRTdGFydENvbHVtbjsKKyAgICB1bnNpZ25lZCBtX3Rh
cmdldEVuZExpbmU7CisgICAgdW5zaWduZWQgbV90YXJnZXRFbmRDb2x1bW47CisKKyAgICBTdHJp
bmcgbV91cmw7CisKKyAgICBib29sIGVuY2xvc2VzVGFyZ2V0UmFuZ2UodW5zaWduZWQgc3RhcnRM
aW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5k
Q29sdW1uKQorICAgIHsKKyAgICAgICAvL2Vuc3VyZSB3ZSBoYXZlIHNvbWV0aGluZyBsaWtlIHRo
aXMgd2l0aCB0aGUgZmlyc3QgY29tcGFyaXNvbgorICAgICAgIC8vZnVuY3Rpb24gY2hlY2soKSB7
CisgICAgICAgLy8gICAgZnVuY3Rpb24gdGFyZ2V0KCkgeworICAgICAgIC8vICAgIH0KKyAgICAg
ICAvL30KKyAgICAgICAvLworICAgICAgIC8vb3IgdGhpczoKKyAgICAgICAvL2Z1bmN0aW9uIGNo
ZWNrKCkgeyBmdW5jdGlvbiB0YXJnZXQoKXt9IH0KKyAgICAgICAvLworICAgICAgIC8vb3IgYSBj
b21iaW5hdGlvbiBvZiB0aGUgdHdvCisgICAgICAgCisgICAgICAgaWYgKCEoc3RhcnRMaW5lIDw9
IG1fdGFyZ2V0U3RhcnRMaW5lICYmIGVuZExpbmUgPj0gbV90YXJnZXRFbmRMaW5lKSkKKyAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgaWYgKHN0YXJ0TGluZSA8IG1fdGFyZ2V0U3Rh
cnRMaW5lKSB7CisgICAgICAgICAgIGlmIChlbmRMaW5lID4gbV90YXJnZXRFbmRMaW5lKQorICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgQVNTRVJUKGVuZExpbmUgPT0g
bV90YXJnZXRFbmRMaW5lKTsKKworICAgICAgICAgICBpZiAoZW5kQ29sdW1uID49IG1fdGFyZ2V0
RW5kQ29sdW1uKQorICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgQVNT
RVJUKGVuZENvbHVtbiA8IG1fdGFyZ2V0RW5kQ29sdW1uKTsKKyAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgIH0KKworICAgICAgIEFTU0VSVChzdGFydExpbmUgPT0gbV90YXJnZXRTdGFy
dExpbmUpOworCisgICAgICAgaWYgKHN0YXJ0Q29sdW1uIDw9IG1fdGFyZ2V0U3RhcnRDb2x1bW4p
IHsKKworICAgICAgICAgICBpZiAoZW5kTGluZSA+IG1fdGFyZ2V0RW5kTGluZSkKKyAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAKKyAgICAgICAgICAgQVNTRVJUKGVuZExp
bmUgPT0gbV90YXJnZXRFbmRMaW5lKTsKKworICAgICAgICAgICBpZiAoZW5kQ29sdW1uID49IG1f
dGFyZ2V0RW5kQ29sdW1uKSAKKyAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
ICAgIEFTU0VSVChlbmRDb2x1bW4gPCBtX3RhcmdldEVuZENvbHVtbik7CisgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICB9IAorCisgICAgICAgQVNTRVJUKHN0YXJ0Q29sdW1uID4gbV90
YXJnZXRTdGFydENvbHVtbik7CisgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307CisKK0Nv
ZGVCbG9jayogVk06OmZpbmRTbWFsbGVzdEVuY2xvc2luZ0NvZGVCbG9jayh1bnNpZ25lZCBzdGFy
dExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBl
bmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIE5lYXJlc3RDb2RlQmxvY2tSYW5n
ZUZ1bmN0b3IgZnVuY3RvcihzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1
bW4sIHVybCk7CisgICAgLy9UT0RPOiB0aGlzIGlzbid0IGdvaW5nIHRocm91Z2ggYWxsIGV4ZWN1
dGFibGVzLiBKdXN0IHRob3NlIHRoYXQgaGF2ZSBiZWVuIGV4ZWN1dGVkIChpLmUsIHR1cm5lZCBp
bnRvIGNvZGVibG9ja3MpCisgICAgLy8gc28sIHdlIHNob3VsZCByZWFsbHkgaXRlcmF0cmUgdGhy
b3VnaCB0aGUgaGVhcCBzZWFyY2hpbmcgZm9yIGV4ZWN1dGFibGVzLCBhbmQgZmluZCBjb3JyZXNw
b25kaW5nIHJhbmdlcyB0aGF0IHdheQorICAgIGhlYXAuZm9yRWFjaENvZGVCbG9jayhmdW5jdG9y
KTsKKyAgICByZXR1cm4gZnVuY3Rvci5iZXN0Q29kZUJsb2NrKCk7Cit9CisKIHZvaWQgc2FuaXRp
emVTdGFja0ZvclZNKFZNKiB2bSkKIHsKICAgICBsb2dTYW5pdGl6ZVN0YWNrKHZtKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDA3YjQ5ZjMuLjc2YmNkMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtOTYsNiArOTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworICAgIGNs
YXNzIFZpcnR1YWxSZWdpc3RlcjsKICAgICBjbGFzcyBWTUVudHJ5U2NvcGU7CiAgICAgY2xhc3Mg
V2F0Y2hwb2ludDsKICAgICBjbGFzcyBXYXRjaHBvaW50U2V0OwpAQCAtMjA5LDYgKzIxMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgbWFrZVVzYWJsZUZyb21NdWx0aXBsZVRo
cmVhZHMoKSB7IGhlYXAubWFjaGluZVRocmVhZHMoKS5tYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhy
ZWFkcygpOyB9CiAKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxKU0xvY2s+IG1fYXBp
TG9jazsKIApAQCAtMzE0LDYgKzMxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZv
aWQqIGVuYWJsZWRQcm9maWxlckFkZHJlc3MoKSB7IHJldHVybiAmbV9lbmFibGVkUHJvZmlsZXI7
IH0KIAorCiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKExMSU5UKQogICAgICAgICBib29sIGNh
blVzZUpJVCgpIHsgcmV0dXJuIG1fY2FuVXNlSklUOyB9CiAjZWxpZiBFTkFCTEUoSklUKQpAQCAt
NTEwLDYgKzUxMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEJ1aWx0aW5FeGVjdXRh
YmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMu
Z2V0KCk7IH0KIAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBDb2RlQmxvY2sqIGZpbmRTbWFs
bGVzdEVuY2xvc2luZ0NvZGVCbG9jayh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmlu
ZyYgdXJsKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDbGVhckV4Y2VwdGlvblNjb3BlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oCmluZGV4IDVjNTZiNzgu
LjZlZWQwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmgK
QEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEJpZGlDb250ZXh0KiBwYXJlbnQoKSBjb25z
dCB7IHJldHVybiBtX3BhcmVudC5nZXQoKTsgfQogICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWwoKSBj
b25zdCB7IHJldHVybiBtX2xldmVsOyB9CiAgICAgVUNoYXJEaXJlY3Rpb24gZGlyKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8VUNoYXJEaXJlY3Rpb24+KG1fZGlyZWN0aW9uKTsgfQotICAg
IGJvb2wgb3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlOyB9Citib29sIG92ZXJy
aWRlKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZTsgfQogICAgIEJpZGlFbWJlZGRpbmdTb3Vy
Y2Ugc291cmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmlkaUVtYmVkZGluZ1NvdXJj
ZT4obV9zb3VyY2UpOyB9CiAKICAgICBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBjb3B5U3RhY2tS
ZW1vdmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4
dEVkaXRvci5qcwppbmRleCBjNGVjZWUxLi5kMGRiYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5qcwpAQCAtMTA4MywzMCArMTA4Myw0OSBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSAh
PT0gdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5jYW5kaWRhdGUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgICAgICB2YXIgZGF0YSA9IFdlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3QuZnJvbVBheWxvYWQocmVzdWx0KTsKLSAgICAgICAgICAgIHN3aXRjaCAoZGF0YS50eXBl
KSB7Ci0gICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6Ci0gICAgICAgICAgICAgICAgdGhpcy5f
c2hvd1BvcG92ZXJGb3JGdW5jdGlvbihkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgIm9iamVjdCI6Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGEuc3VidHlw
ZSA9PT0gInJlZ2V4cCIpIAotICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZv
clJlZ0V4cChkYXRhKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHRoaXMuX3Nob3dQb3BvdmVyRm9yT2JqZWN0KGRhdGEpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG93
UG9wb3ZlckZvclN0cmluZyhkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgIm51bWJlciI6Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JO
dW1iZXIoZGF0YSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJi
b29sZWFuIjoKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvckJvb2xlYW4oZGF0
YSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJ1bmRlZmluZWQi
OgotICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yVW5kZWZpbmVkKGRhdGEpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdmFyIGRhdGEgPSBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlc3VsdCkKKyAgICAgICAgICAgICAgICwgdXJs
ID0gdGhpcy5fc291cmNlQ29kZS51cmwKKyAgICAgICAgICAgICAgICwgZGlzcGxheSA9IF9kaXNw
bGF5LmJpbmQodGhpcykKKworICAgICAgICAgICAgZnVuY3Rpb24gX2Rpc3BsYXkoKSB7CisgICAg
ICAgICAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlICJm
dW5jdGlvbiI6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yRnVuY3Rp
b24oZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgIm9iamVjdCI6CisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN1YnR5cGUgPT09ICJy
ZWdleHAiKSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yUmVn
RXhwKGRhdGEpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9zaG93UG9wb3ZlckZvck9iamVjdChkYXRhKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JTdHJpbmcoZGF0YSk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yTnVtYmVyKGRhdGEpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JCb29sZWFuKGRhdGEpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAg
ICAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvclVuZGVmaW5lZChkYXRhKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmhvdmVyZWRUb2tlbi5zdGF0ZS5sYXN0VHlwZSA9
PT0gInZhcmlhYmxlIikgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZXIoZXJyb3Is
IHR5cGVTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5fZGVzY3JpcHRpb24gKz0g
IlxuIiArICJUeXBlczogeyIgKyB0eXBlU3RyaW5nICsgIn0iCisgICAgICAgICAgICAgICAgICAg
IGRpc3BsYXkoKQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZhciByYW5n
ZSA9IGNhbmRpZGF0ZS5ob3ZlcmVkVG9rZW5SYW5nZQorICAgICAgICAgICAgICAgIFJ1bnRpbWVB
Z2VudC5nZXRSdW50aW1lVHlwZUZvclZhcmlhYmxlSW5UZXh0UmFuZ2UoY2FuZGlkYXRlLmhvdmVy
ZWRUb2tlbi5zdHJpbmcsIHVybCwgcmFuZ2Uuc3RhcnQubGluZSwgcmFuZ2Uuc3RhcnQuY2gsIHJh
bmdlLmVuZC5saW5lLCByYW5nZS5lbmQuY2gsIGhhbmRsZXIpCisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpc3BsYXkoKQorICAgICAgICAgICAgfQorCisKICAgICAgICAg
fQogCiAgICAgICAgIERlYnVnZ2VyQWdlbnQuZXZhbHVhdGVPbkNhbGxGcmFtZS5pbnZva2Uoe2Nh
bGxGcmFtZUlkOiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZS5p
ZCwgZXhwcmVzc2lvbjogY2FuZGlkYXRlLmV4cHJlc3Npb24sIG9iamVjdEdyb3VwOiAicG9wb3Zl
ciIsIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogdHJ1ZX0sIHBvcHVsYXRl
LmJpbmQodGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKaW5kZXggMzhlNjA2YS4uMTdmMWRkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRv
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0
RWRpdG9yLmpzCkBAIC02Nyw2ICs2Nyw0MCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvciA9IGZ1
bmN0aW9uKGVsZW1lbnQsIG1pbWVUeXBlLCBkZWxlZ2F0ZSkKICAgICB0aGlzLl9mb3JtYXR0ZXJT
b3VyY2VNYXAgPSBudWxsOwogCiAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxs
OworCisgICAgdmFyIHVybCA9IGRlbGVnYXRlID8gZGVsZWdhdGUuc291cmNlQ29kZS51cmwgOiBu
dWxsOworICAgIC8vZnVuY3Rpb24gbW91c2VVcFRlc3QoZXZlbnQpIHsKKyAgICAvLyAgICB0aGlz
Ll90b2tlblRyYWNraW5nQ29udHJvbGxlci5lbmFibGVkID0gdHJ1ZQorICAgIC8vICAgIHZhciB0
b2tlbkluZm8gPSB0aGlzLl90b2tlblRyYWNraW5nQ29udHJvbGxlci5faG92ZXJlZFRva2VuSW5m
bworICAgIC8vICAgICAgICwgdG9rZW4gCisKKyAgICAvLyAgICBpZiAoIXRva2VuSW5mbyB8fCAh
dG9rZW5JbmZvLnRva2VuKQorICAgIC8vICAgICAgICByZXR1cm4KKworICAgIC8vICAgIGlmICgh
dXJsKSB7CisgICAgLy8gICAgICAgIGNvbnNvbGUubG9nKCJcbk5PIFVSTCIpCisgICAgLy8gICAg
ICAgIHJldHVybgorICAgIC8vICAgIH0gZWxzZSB7CisgICAgLy8gICAgICAgIGNvbnNvbGUubG9n
KCJcblVSTDogIiArIHVybCkKKyAgICAvLyAgICB9CisKKworICAgIC8vICAgIHRva2VuID0gdG9r
ZW5JbmZvLnRva2VuCisgICAgLy8gICAgLy9jb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh0b2tl
bkluZm8sIHVuZGVmaW5lZCwgMikpCisKKyAgICAvLyAgICBpZiAodG9rZW4uc3RhdGUubGFzdFR5
cGUgPT09ICJ2YXJpYWJsZSIpIHsKKyAgICAvLyAgICAgICAgZnVuY3Rpb24gaGFuZGxlcihlcnJv
ciwgdHlwZVN0cmluZykgeworICAgIC8vICAgICAgICAgICAgaWYgKGVycm9yKSAKKyAgICAvLyAg
ICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRVJST1IgZnJvbSBoYW5kbGVyOiAiICsgZXJyb3Ip
CisgICAgLy8gICAgICAgICAgICBjb25zb2xlLmxvZygiXG5SdW50aW1lIHR5cGVzIGZvciB2YXJp
YWJsZTogJyIgKyB0b2tlbi5zdHJpbmcgKyAiJyBpczogJyIgKyB0eXBlU3RyaW5nICsgIiciKQor
ICAgIC8vICAgICAgICB9CisgICAgLy8gICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRSdW50aW1lVHlw
ZUZvclZhcmlhYmxlSW5UZXh0UmFuZ2UodG9rZW4uc3RyaW5nLCB1cmwsIHRva2VuSW5mby5wb3Np
dGlvbi5saW5lLCB0b2tlbkluZm8ucG9zaXRpb24uY2gsIAorICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuSW5mby5wb3Np
dGlvbi5saW5lLCB0b2tlbkluZm8ucG9zaXRpb24uY2ggKyB0b2tlbi5zdHJpbmcubGVuZ3RoLCBo
YW5kbGVyKQorICAgIC8vICAgIH0KKyAgICAvL30gCisgICAgLy8vL2RvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNldXAiLCBtb3VzZVVwVGVzdC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICAv
L2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIG1vdXNlVXBUZXN0LmJpbmQo
dGhpcyksIHRydWUpOworICAgIAogfTsKIAogV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGV4dEVkaXRvcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>232788</attachid>
            <date>2014-06-10 08:52:48 -0700</date>
            <delta_ts>2014-06-18 09:34:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>51647</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzA5YTczMy4uNjIzOTU2OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcxMiw3ICs3MTIsNyBAQAogCQkxNDc0QzMzQjE2
QUEyRDk1MDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NDRBMzE2QUEyQzcwMDBBNjVBRjAgLyogUHJvdG90
eXBlTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMTQ3NEMzM0MxNkFBMkQ5QjAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NDRBMjE2QUEyQzcwMDBB
NjVBRjAgLyogUHJvdG90eXBlTWFwLmNwcCAqLzsgfTsKIAkJMTQ3ODI5N0IxMzc5RThBODAwQTdD
MkEzIC8qIEhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDZGQTVBODEzNzhGNkIwMDAzNjI3QTMgLyogSGFuZGxlVHlwZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxNDdCODNBQzBF
NkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0N0I4M0FBMEU2REI4QzkwMDQ3
NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAv
KiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3QjgzQUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyLmggKi87IH07CiAJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAv
KiBQdXRQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0N0I4NDYyMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDdGMzlC
RDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlz
dC5jcHAgKi87IH07CiAJCTE0N0YzOUJFMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmd1bWVudHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNTdERTUw
RTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi87IH07CkBAIC04MjMsMTAgKzgyMyw5
IEBACiAJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEw
QzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CiAJCTQ0NDNBRTMzMTZFMTg4RDkw
MDc2RjExMCAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3Vu
ZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlh
cnIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTUz
OUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTJBRkY0NDAxOTNDQ0RBMzAwMURBQUQ0IC8qIEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTJBRkY0M0YxOTNDQ0RBMzAwMURBQUQ0IC8qIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5oICovOyB9OwotCQk1MkFGRjQ0MjE5M0QwRTJFMDAxREFBRDQgLyogSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyRHVtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTJBRkY0NDExOTNEMEUyRTAwMURBQUQ0IC8qIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlckR1bXAuaCAqLzsgfTsKLQkJNTJBRkY0NDQxOTNEMEU0OTAwMURBQUQ0IC8qIEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlckR1bXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTJBRkY0NDMxOTNEMEU0OTAwMURBQUQ0IC8qIEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlckR1bXAuY3BwICovOyB9OwogCQk1MkRDOUMxMjE5MzkzMEIxMDBGQTc0NjMg
LyogVHlwZVNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MkRDOUMxMTE5MzkzMEIxMDBGQTc0NjMgLyogVHlwZVNldC5jcHAgKi87IH07CisJCTUy
RkFEREVCMTk0NjdBMjQwMEM4QkJFNSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkFEREVBMTk0NjdB
MjQwMEM4QkJFNSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkZBRERFRDE5NDY3QTdBMDBDOEJC
RTUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkFEREVDMTk0NjdBN0EwMEM4QkJFNSAvKiBIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwICovOyB9OwogCQk1NTEwNTAyNjE4RUI4Mjc1MDAwMDFG
M0UgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDQwRjg4RjBBNTA4QjEwMDAwNUYwNjEgLyogSlNDYWxsYmFja0Z1
bmN0aW9uLmggKi87IH07CiAJCTU1NDA3NTcyMThEQTU4QUQwMEVGRjdGMiAvKiBBcmdMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBF
MjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovOyB9OwogCQk1NTQwNzU3MzE4REE1OEFEMDBF
RkY3RjIgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzI1N0RFNjBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggKi87IH07
CkBAIC0yNjAzLDExICsyNjAyLDEwIEBACiAJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBq
c2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0ganNjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB9Owog
CQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRl
PiI7IH07CiAJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGliICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlib2Jq
Yy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJNTJBRkY0M0YxOTNDQ0RB
MzAwMURBQUQ0IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaDsgcGF0aCA9IHByb2ZpbGVyL0hpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MkFGRjQ0MTE5M0Qw
RTJFMDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmg7IHBhdGggPSBwcm9maWxlci9IaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTUyQUZGNDQzMTkzRDBFNDkwMDFEQUFENCAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1w
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1bXAuY3Bw
OyBwYXRoID0gcHJvZmlsZXIvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQUZGNDQ4MTkzRkQzNTkwMDFEQUFENCAvKiBUeXBl
U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFR5cGVTZXQuaDsgcGF0aCA9IHByb2ZpbGVyL1R5cGVTZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJEQzlDMTExOTM5MzBCMTAwRkE3NDYz
IC8qIFR5cGVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZVNldC5jcHA7IHBhdGggPSBw
cm9maWxlci9UeXBlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGQURE
RUExOTQ2N0EyNDAwQzhCQkU1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTJGQURERUMxOTQ2N0E3QTAwQzhCQkU1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwNzU4NDE4RjRBMzc1MDA2MDJBNUQg
LyogQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NTQwN0FDODE4REE1OEFEMDBFRkY3RjIgLyogbGliQ29tcGlsZVJ1
bnRpbWVUb0xMVk1JUi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJDb21waWxl
UnVudGltZVRvTExWTUlSLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTVENTM3MjZEMEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gVHJhY2luZy5kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI3Niw2ICs0
Mjc0LDggQEAKIAkJCQkwRjJCNjZCMzE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oICovLAogCQkJCUJDMDJFOUI4MEUxODQ1NDUwMDBGOTI5NyAvKiBHZXR0
ZXJTZXR0ZXIuY3BwICovLAogCQkJCUJDMzM3QkRFMEUxQUYwQjgwMDc2OTE4QSAvKiBHZXR0ZXJT
ZXR0ZXIuaCAqLywKKwkJCQk1MkZBRERFQzE5NDY3QTdBMDBDOEJCRTUgLyogSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmNwcCAqLywKKwkJCQk1MkZBRERFQTE5NDY3QTI0MDBDOEJCRTUgLyogSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi8sCiAJCQkJOTMzQTM0OUQwMzhBRTgwRjAwODYzNUNF
IC8qIElkZW50aWZpZXIuY3BwICovLAogCQkJCTkzM0EzNDlBMDM4QUU3QzYwMDg2MzVDRSAvKiBJ
ZGVudGlmaWVyLmggKi8sCiAJCQkJODYwNkRERTkxOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZp
ZXJJbmxpbmVzLmggKi8sCkBAIC00ODcxLDkgKzQ4NzEsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJNTJBRkY0NDgxOTNGRDM1OTAwMURBQUQ0IC8qIFR5cGVTZXQuaCAqLywKIAkJCQk5NUUzQkMw
NDBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCAqLywKLQkJCQk1MkFGRjQzRjE5
M0NDREEzMDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi8sCi0JCQkJNTJB
RkY0NDMxOTNEMEU0OTAwMURBQUQ0IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1bXAuY3Bw
ICovLAotCQkJCTUyQUZGNDQxMTkzRDBFMkUwMDFEQUFENCAvKiBIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXJEdW1wLmggKi8sCiAJCQkJOTVBQjgzMkUwREE0MkNBRDAwQkM4M0YzIC8qIExlZ2FjeVBy
b2ZpbGVyLmNwcCAqLywKIAkJCQk5NUFCODMyRjBEQTQyQ0FEMDBCQzgzRjMgLyogTGVnYWN5UHJv
ZmlsZXIuaCAqLywKIAkJCQk5NTc0MkY2MzBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAg
Ki8sCkBAIC01NTE1LDggKzU1MTIsNyBAQAogCQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAv
KiBBcml0eUNoZWNrTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAw
Q0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjJDNDEw
MTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNDdC
ODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTJBMTExMjQ2MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJT
ZXR0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyRkFEREVCMTk0NjdBMjQwMEM4QkJFNSAvKiBI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwMzIwMThC
RkZCRTEwMDVBMDgxMSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFB
QkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkU1MjQ4RjkxOTE0NDJEOTAwQjdGREU0IC8qIFZhcmlhYmxlV2F0Y2hwb2ludFNldElubGluZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtNjE5OCw4ICs2MTk0LDYgQEAKIAkJCQk5NjlBMDcyQjBFRDFD
RTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjFDQkEx
ODYxMjQ0QzAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY2QjFDQkUxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9u
V3JhcHBlckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTJBRkY0NDIxOTNEMEUyRTAw
MURBQUQ0IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1bXAuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUyQUZGNDQwMTkzQ0NEQTMwMDFEQUFENCAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzMxNDEyMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3Rl
clNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU3RDIzRUUxODkxQjU1NDAwMzFDN0ZBIC8qIFJl
Z3VsYXJFeHByZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5RDE1RUQ4RTQ2MDBG
MTY3QjIgLyogUmVqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTY4NDUsNyArNjgzOSw3IEBACiAJ
CQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk1MkRDOUMxMjE5MzkzMEIxMDBGQTc0NjMgLyogVHlw
ZVNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MkZBRERFRDE5NDY3QTdBMDBDOEJCRTUgLyog
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkE1NDk3
MTZCODgzNTAwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtNzA5MSw3ICs3MDg1LDYgQEAKIAkJCQkxNEJBN0E5NzEzQUFERkY4MDA1QjdDMkMgLyog
SGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjREMzFFMjE2MUNENjk1MDAyQUE0REIgLyog
SGVhcFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJFNTI2QkQxNTkwRUYwMDAw
NTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MkFGRjQ0NDE5M0Qw
RTQ5MDAxREFBRDQgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRTEwN0VDMzc2MDA0MjdBNDggLyogSWRl
bnRpZmllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA3NTE4OUIwMzhDMDA2MzMyMzEg
LyogSWRlbnRpZmllcnNGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzM2Myw2ICs3MzU2
LDcgQEAKIAkJCQkwRkMzMTQxMzE4MTQ1NTkxMDAwMzMyMzIgLyogVGVtcFJlZ2lzdGVyU2V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTJDMTdCMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVu
bmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczODY1NTUxMTg2OTdCNDAwNTQwMjc5
IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MkRDOUMxMjE5Mzkz
MEIxMDBGQTc0NjMgLyogVHlwZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjcwNzE3
QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyQjY3MEExN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRjQyNzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCBlNzc4ZGY2Li41MjI3ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTgzNyw3ICsxODM3LDcgQEAgQ29kZUJsb2NrOjpDb2Rl
QmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9j
ayogdW5saW4KIAogQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKIHsKLSAgICBvd25lckV4ZWN1dGFi
bGUoKS0+bWVyZ2VJbmNvbWluZ0hpZ2hGaWRlbGl0eVByb2ZpbGVUeXBlcyhnZXRIaWdoRmlkZWxp
dHlUeXBlSGlzdG9yeSgpLCBzeW1ib2xUYWJsZSgpKTsKKyAgICBtX3ZtLT5tZXJnZUhpZ2hGaWRl
bGl0eVByb2ZpbGVUeXBlcyh0aGlzKTsKIAogICAgIGlmIChtX3ZtLT5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXIpCiAgICAgICAgIG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+bm90aWZ5RGVzdHJ1
Y3Rpb24odGhpcyk7CkBAIC0zNjMwLDMwICszNjMwLDEzIEBAIERGRzo6Q2FwYWJpbGl0eUxldmVs
IENvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsKCkKIH0KICNlbmRpZgogCi12b2lkIENvZGVCbG9j
azo6cmVjb3JkVHlwZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciByZWcsIEpTVmFsdWUgdmFs
KQordm9pZCBDb2RlQmxvY2s6OnJlY29yZFR5cGVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIg
cmVnLCBKU1ZhbHVlIHZhbCwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIFR5cGVTZXQmIHR5cGVT
ZXQgPSBtX2hpZ2hGaWRlbGl0eVR5cGVIaXN0b3J5LT5vcGVyYW5kKHJlZyk7Ci0gICAgUnVudGlt
ZVR5cGUgdHlwZSA9IFR5cGVTZXQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFsdWUodmFsKTsKLSAgICB0
eXBlU2V0LmFkZFR5cGUodHlwZSk7CisgICAgdHlwZVNldC5hZGRUeXBlRm9yVmFsdWUodmFsLCBl
eGVjKTsKICAgICAvL1N0cmluZyBuYW1lID0gdGhpcy0+bmFtZUZvclJlZ2lzdGVyKHJlZyk7CiAg
ICAgLy9TdHJpbmcgc2VlblR5cGVzID0gdHlwZVNldC5zZWVuVHlwZXMoKTsKICAgICAvL3ByaW50
ZigidmFyPSVzLCB0eXBlcz0lc1xuIixuYW1lLmFzY2lpKCkuZGF0YSgpLCBzZWVuVHlwZXMuYXNj
aWkoKS5kYXRhKCkpOwogfQogCi1TdHJpbmcgQ29kZUJsb2NrOjpydW50aW1lVHlwZXNGb3JWYXJp
YWJsZU5hbWUoY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUpCi17Ci0gICAgSWRlbnRpZmllciBp
ZGVudCh2bSgpLCB2YXJpYWJsZU5hbWUpOwotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBz
eW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQuaW1wbCgpKTsKLSAgICBpZiAoIWVudHJ5LmlzTnVsbCgp
KSB7Ci0gICAgICAgIGludCBpbmRleCA9IGVudHJ5LmdldEluZGV4KCk7Ci0gICAgICAgIFR5cGVT
ZXQmIHR5cGVTZXQgPSBtX2hpZ2hGaWRlbGl0eVR5cGVIaXN0b3J5LT5vcGVyYW5kKGluZGV4KTsg
Ci0gICAgICAgIFN0cmluZyBzZWVuVHlwZXModHlwZVNldC5zZWVuVHlwZXMoKSk7Ci0gICAgICAg
IHJldHVybiBzZWVuVHlwZXM7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy9wcmludGYoIk5vIHJl
Z2lzdGVyIGluZGV4LCBlbnRyeSBpcyBOdWxsXG4iKTsKLSAgICAgICAgLy9yZXR1cm4gIntWYXJp
YWJsZSBOb3QgRm91bmR9IjsKLSAgICAgICAgcmV0dXJuICIiOwotICAgIH0KLX0KLQogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
aW5kZXggMWQ0ZDkwMC4uYWYwODVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaApAQCAtOTQwLDkgKzk0MCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNL
bm93blRvQmVMaXZlRHVyaW5nR0MoKTsgLy8gV2lsbCBvbmx5IHJldHVybiB2YWxpZCByZXN1bHRz
IHdoZW4gY2FsbGVkIGR1cmluZyBHQy4gQXNzdW1lcyB0aGF0IHlvdSd2ZSBhbHJlYWR5IGVzdGFi
bGlzaGVkIHRoYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUgaXMgbGl2ZS4KIAotICAgIHZvaWQgcmVj
b3JkVHlwZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciwgSlNWYWx1ZSB2KTsKKyAgICB2b2lk
IHJlY29yZFR5cGVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIsIEpTVmFsdWUgdiwgRXhlY1N0
YXRlKik7CiAgICAgT3BlcmFuZHM8VHlwZVNldD4mIGdldEhpZ2hGaWRlbGl0eVR5cGVIaXN0b3J5
KCkgeyByZXR1cm4gKihtX2hpZ2hGaWRlbGl0eVR5cGVIaXN0b3J5LmdldCgpKTsgfQotICAgIFN0
cmluZyBydW50aW1lVHlwZXNGb3JWYXJpYWJsZU5hbWUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2
b2lkIGR1bXBSZWdpc3RlckluZm9Gb3JEZWJ1Z2dpbmcoKSAKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDIzMTMyZmMuLjkwMTYyNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC01ODYsNyArNTg2LDE0IEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgY29u
c3QgU2NyaXB0CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNjcmlwdFBhcnNlZChzY3JpcHRJ
RFN0ciwgc2NyaXB0VVJMLCBzY3JpcHQuc3RhcnRMaW5lLCBzY3JpcHQuc3RhcnRDb2x1bW4sIHNj
cmlwdC5lbmRMaW5lLCBzY3JpcHQuZW5kQ29sdW1uLCBpc0NvbnRlbnRTY3JpcHQsIHNvdXJjZU1h
cFVSTFBhcmFtLCBoYXNTb3VyY2VVUkxQYXJhbSk7CiAKICAgICBtX3NjcmlwdHMuc2V0KHNvdXJj
ZUlELCBzY3JpcHQpOwotCisgICAgLy9wcmludGYoImJlZ2luIHBhcnNlZCBzb3VyY2U6XG4iKTsg
IAorICAgIC8vcHJpbnRmKCJcdHNvdXJjZUlEPSclbHUnXG4iLCBzb3VyY2VJRCk7CisgICAgLy9w
cmludGYoIlx0dXJsPSclcydcbiIsIHNjcmlwdC51cmwuYXNjaWkoKS5kYXRhKCkpOworICAgIC8v
cHJpbnRmKCJcdHNvdXJjZT0nJXMnXG4iLCBzY3JpcHQuc291cmNlLmFzY2lpKCkuZGF0YSgpKTsK
KyAgICAvL3ByaW50ZigiXHRzb3VyY2VVUkw9JyVzJ1xuIiwgc2NyaXB0LnNvdXJjZVVSTC5hc2Np
aSgpLmRhdGEoKSk7CisgICAgLy9wcmludGYoIlx0c291cmNlTWFwcGluZ1VSTD0nJXMnXG4iLCBz
Y3JpcHQuc291cmNlTWFwcGluZ1VSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgLy9wcmludGYoIlx0
c3RhcnQvZW5kIGxpbmUgPVslZCwgJWRdIHN0YXJ0L2VuZCBjb2x1bW4gPSBbJWQsICVkXVxuIiwg
c2NyaXB0LnN0YXJ0TGluZSwgc2NyaXB0LmVuZExpbmUsIHNjcmlwdC5zdGFydENvbHVtbiwgc2Ny
aXB0LmVuZENvbHVtbik7CisgICAgLy9wcmludGYoImVuZCBwYXJzZWQgc291cmNlOlxuIik7ICAK
ICAgICBpZiAoc2NyaXB0VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCAwZmNiMWMwLi5jNjIwZjIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogCiAjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgotI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgpAQCAtMTkyLDE2ICsxOTIsMTIgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OnJ1bihFcnJvclN0cmluZyopCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRSdW50aW1lVHlwZUZvclZhcmlhYmxlSW5UZXh0UmFuZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGluX3ZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl91cmwsIGludCBpbl9zdGFy
dExpbmUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5fc3RhcnRDb2x1bW4sIGludCBpbl9lbmRMaW5lLCBpbnQg
aW5fZW5kQ29sdW1uLCBTdHJpbmcqIG91dF90eXBlcykgCit2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5faWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBpbl9zdGFydExpbmUsIGludCBpbl9zdGFydENvbHVtbiwgaW50IGluX2VuZExpbmUs
IGludCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5cGVzKSAKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxWTSgpOwotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdm0uZmluZFNtYWxsZXN0RW5j
bG9zaW5nQ29kZUJsb2NrKGluX3N0YXJ0TGluZSwgaW5fc3RhcnRDb2x1bW4sIGluX2VuZExpbmUs
IGluX2VuZENvbHVtbiwgaW5fdXJsKTsKLSAgICAvL2NvZGVCbG9jay0+ZHVtcFJlZ2lzdGVySW5m
b0ZvckRlYnVnZ2luZygpOwotICAgIC8vcHJpbnRmKCJcbkdldHRpbiBydW50aW1lIHR5cGUgZm9y
IHZhcmlhYmxlOiclcycgaW4gZmlsZTogJyVzJ1xuIiwgaW5fdmFyaWFibGVOYW1lLmFzY2lpKCku
ZGF0YSgpLCBpbl91cmwuYXNjaWkoKS5kYXRhKCkpOwotICAgIFN0cmluZyogdHlwZXMgPSBuZXcg
U3RyaW5nKGNvZGVCbG9jay0+cnVudGltZVR5cGVzRm9yVmFyaWFibGVOYW1lKGluX3ZhcmlhYmxl
TmFtZSkpOwotICAgIC8vcHJpbnRmKCJ0eXBlcyA6OjogJyVzJ1xuIiwgdHlwZXMtPmFzY2lpKCku
ZGF0YSgpKTsKLSAgICAqb3V0X3R5cGVzID0gKnR5cGVzOworICAgIFN0cmluZyB0eXBlcyh2bS5n
ZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShpbl9zdGFydExpbmUsIGluX3N0YXJ0Q29sdW1uLCBp
bl9lbmRMaW5lLCBpbl9lbmRDb2x1bW4sIGluX3ZhcmlhYmxlTmFtZSwgaW5faWQpKTsKKyAgICAq
b3V0X3R5cGVzID0gdHlwZXM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCBkNzNiMjk1Li5mNDg0MzkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBj
b25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9y
Pj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGlu
dGVybmFsUHJvcGVydGllcykgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VPYmplY3RHcm91cChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApIG92
ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcqKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgaW5fdXJsLCBpbnQgaW5fc3RhcnRMaW5lLCBpbnQgaW5fc3RhcnRDb2x1bW4sIGludCBpbl9l
bmRMaW5lLCBpbnQgaW5fZW5kQ29sdW1uLCBTdHJpbmcqIG91dF90eXBlcykgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5fdmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGlu
X2lkLCBpbnQgaW5fc3RhcnRMaW5lLCBpbnQgaW5fc3RhcnRDb2x1bW4sIGludCBpbl9lbmRMaW5l
LCBpbnQgaW5fZW5kQ29sdW1uLCBTdHJpbmcqIG91dF90eXBlcykgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIHNldFNjcmlwdERlYnVnU2VydmVyKFNjcmlwdERlYnVnU2VydmVyKiBzY3JpcHREZWJ1Z1Nl
cnZlcikgeyBtX3NjcmlwdERlYnVnU2VydmVyID0gc2NyaXB0RGVidWdTZXJ2ZXI7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1l
Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUu
anNvbgppbmRleCA0NTY4NDkxLi42YzYxMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgpAQCAtMjAxLDcgKzIwMSw3
IEBACiAgICAgICAgICAgICAibmFtZSI6ICJnZXRSdW50aW1lVHlwZUZvclZhcmlhYmxlSW5UZXh0
UmFuZ2UiLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJ2YXJpYWJsZU5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAi
VmFyaWFibGUgd2Ugd2FudCB0eXBlIGluZnJvbWF0aW9uIGZvci4iIH0sCi0gICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAidXJs
IGZvciBjb2RlIHdlJ3JlIGludGVyZXN0ZWQgaW4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzb3VyY2VJRCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJzb3VyY2VJ
RCB1bmlxdWVseSBpZGVudGlmeWluZyBhIHNjcmlwdCIgfSwKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInN0YXJ0TGluZSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAic3Rh
cnQgbGluZSBmb3IgdmFyaWFibGUgbmFtZSIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InN0YXJ0Q29sdW1uIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJzdGFydCBj
b2x1bW4gZm9yIHZhcmlhYmxlIG5hbWUiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJl
bmRMaW5lIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJlbmQgbGluZSBmb3Ig
dmFyaWFibGUgbmFtZSIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNGY1MmUwMy4uYWI1Y2E4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTkzOSwxMyArOTM5LDEyIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KEV4
ZWNTdGF0ZSogZXhlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50VmFyaWFibGVz
SW5Db2RlQmxvY2tHaXZlblJhbmdlKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFZhcmlhYmxlc0luQ29kZUJsb2NrR2l2ZW5SYW5nZShF
eGVjU3RhdGUqKQogewotICAgIENvZGVCbG9jayogZW5jbG9zaW5nQmxvY2sgPSBleGVjLT52bSgp
LmZpbmRTbWFsbGVzdEVuY2xvc2luZ0NvZGVCbG9jayhleGVjLT5hcmd1bWVudCgwKS5hc1VJbnQz
MigpLCBleGVjLT5hcmd1bWVudCgxKS5hc1VJbnQzMigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT5hcmd1bWVudCgyKS5hc1VJbnQzMigpLCBleGVjLT5hcmd1bWVudCgzKS5hc1VJbnQzMigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZVVSTCgpKTsKLSAgICBwcmludGYoIlxuRm91bmQgQ29kZUJsb2NrXG4iKTsKLSAgICBlbmNs
b3NpbmdCbG9jay0+ZHVtcFJlZ2lzdGVySW5mb0ZvckRlYnVnZ2luZygpOworICAgIC8vU2NyaXB0
RXhlY3V0YWJsZSogZW5jbG9zaW5nRXhlY3V0YWJsZSA9IGV4ZWMtPnZtKCkuZmluZFNtYWxsZXN0
RW5jbG9zaW5nU2NyaXB0RXhlY3V0YWJsZShleGVjLT5hcmd1bWVudCgwKS5hc1VJbnQzMigpLCBl
eGVjLT5hcmd1bWVudCgxKS5hc1VJbnQzMigpLAorICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGVjLT5hcmd1bWVudCgyKS5hc1VJbnQzMigpLCBleGVjLT5hcmd1bWVudCgz
KS5hc1VJbnQzMigpLAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpKTsKKyAgICAvL3By
aW50ZigiXG5Gb3VuZCBTY3JpcHQgRXhlY3V0YWJsZVxuIik7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNDg5OTc4Yy4uODNmMjE4NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC01MzcsNyAr
NTM3LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19yZWdleHApCiBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxp
dHkpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBleGVjLT5jb2RlQmxvY2soKS0+cmVjb3Jk
VHlwZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpLCBMTElOVF9P
UCgxKS5qc1ZhbHVlKCkpOworICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5yZWNvcmRUeXBlRm9yUmVn
aXN0ZXIoVmlydHVhbFJlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCksIExMSU5UX09QKDEpLmpzVmFs
dWUoKSwgZXhlYyk7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1R5cGVTZXQuY3BwCmluZGV4IGI4MjUzZGQuLmFmZTJjNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9UeXBlU2V0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvVHlwZVNldC5jcHAKQEAgLTI3LDcgKzI3LDkg
QEAKICNpbmNsdWRlICJUeXBlU2V0LmgiCiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC00OSwyMCArNTEsNDggQEAgUnVudGltZVR5cGUgVHlwZVNldDo6Z2V0UnVudGltZVR5cGVGb3JW
YWx1ZShKU1ZhbHVlIHYpCiAgICAgICAgIHJldCA9IFR5cGVCb29sZWFuOwogICAgIGVsc2UgaWYg
KHYuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0ID0gVHlwZVN0cmluZzsKLSAgICBlbHNlIGlmICh2
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldCA9IFR5cGVPYmplY3Q7CiAgICAgZWxzZSBpZiAodi5p
c051bWJlcigpKQogICAgICAgICByZXQgPSBUeXBlTnVtYmVyOworICAgIGVsc2UgaWYgKHYuaXNP
YmplY3QoKSkKKyAgICAgICAgcmV0ID0gVHlwZU9iamVjdDsKICAgICBlbHNlCiAgICAgICAgIENS
QVNIKCk7CiAKICAgICByZXR1cm4gcmV0OwogfQogCi12b2lkIFR5cGVTZXQ6OmFkZFR5cGUoUnVu
dGltZVR5cGUgdCkKK3ZvaWQgVHlwZVNldDo6YWRkVHlwZUZvclZhbHVlKEpTVmFsdWUgdiwgRXhl
Y1N0YXRlKikKIHsKKyAgICBSdW50aW1lVHlwZSB0ID0gZ2V0UnVudGltZVR5cGVGb3JWYWx1ZSh2
KTsKICAgICBtX3NlZW5UeXBlcyA9IG1fc2VlblR5cGVzIHwgdDsKLSAgICAvL2R1bXBTZWVuVHlw
ZXMoKTsKKy8vICAgIGlmICh0ID09IFR5cGVPYmplY3QgJiYgdi5pc0NlbGwoKSkgeworLy8gICAg
ICAgIGludCBzcGFjZXMgPSAwOyAKKy8vI2RlZmluZSBQUklOVF9TUEFDRVMoKSBcCisvLyAgICAg
ICAgZG8geyBcCisvLyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3BhY2VzOyBpKysp
IHByaW50ZigiICIpOyBcCisvLyAgICAgICAgfSB3aGlsZSgwKQorLy8KKy8vICAgICAgICBwcmlu
dGYoIi0tLS0tLS0tLS0tXG4iKTsKKy8vICAgICAgICBmb3IgKFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+KiBjdXJyZW50U3RydWN0dXJlID0gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnByb3RvdHlw
ZUNoYWluKGV4ZWMpLT5oZWFkKCk7ICpjdXJyZW50U3RydWN0dXJlOyArK2N1cnJlbnRTdHJ1Y3R1
cmUpIHsKKy8vICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjdXJyZW50U3RydWN0
dXJlLT5nZXQoKTsKKy8vICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1l
cyhleGVjKTsKKy8vICAgICAgICAgICAgc3RydWN0dXJlLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0
cnVjdHVyZShleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKKy8vCisvLyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcHJvcGVy
dHlOYW1lcy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKKy8vICAgICAgICAgICAgICAgIFByb3Bl
cnR5TmFtZSBuYW1lID0gcHJvcGVydHlOYW1lc1tpXTsKKy8vICAgICAgICAgICAgICAgIFN0cmlu
Z0ltcGwqIHB1YmxpY05hbWUgPSBuYW1lLnB1YmxpY05hbWUoKTsKKy8vICAgICAgICAgICAgICAg
IFBSSU5UX1NQQUNFUygpOworLy8gICAgICAgICAgICAgICAgcHJpbnRmKCJwcm9wZXJ0eTogJyVz
J1xuIiwgcHVibGljTmFtZS0+dXRmOCgpLmRhdGEoKSk7ICAKKy8vICAgICAgICAgICAgfQorLy8K
Ky8vICAgICAgICAgICAgaWYgKCooY3VycmVudFN0cnVjdHVyZSArIDEpKSB7CisvLyAgICAgICAg
ICAgICAgICBQUklOVF9TUEFDRVMoKTsKKy8vICAgICAgICAgICAgICAgIHByaW50ZigiPT4gZ29p
bmcgdG8gcHJvdG9cbiIpOworLy8gICAgICAgICAgICB9CisvLyAgICAgICAgICAgIHNwYWNlcys9
MjsKKy8vICAgICAgICB9CisvLyAgICAgICAgcHJpbnRmKCItLS0tLS0tLS0tLVxuIik7CisvLyAg
ICB9CiB9CiAKIHZvaWQgVHlwZVNldDo6bWVyZ2VXaXRoVHlwZVNldChjb25zdCBUeXBlU2V0JiBv
dGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9UeXBlU2V0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvVHlwZVNldC5oCmluZGV4IDBkMWI3
NGEuLjNjN2UyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9U
eXBlU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1R5cGVTZXQuaApA
QCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1ZhbHVlOwor
ICAgIGNsYXNzIEV4ZWNTdGF0ZTsKIAogICAgIGVudW0gUnVudGltZVR5cGUgewogICAgICAgICBU
eXBlTm90aGluZyAgID0gMHgwLApAQCAtNDksOSArNTAsOSBAQCBjbGFzcyBUeXBlU2V0IHsKIAog
cHVibGljOgogICAgIFR5cGVTZXQoKTsKLSAgICB2b2lkIGFkZFR5cGUoUnVudGltZVR5cGUgdCk7
CisgICAgdm9pZCBhZGRUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2LCBFeGVjU3RhdGUqKTsKICAgICB2
b2lkIG1lcmdlV2l0aFR5cGVTZXQoY29uc3QgVHlwZVNldCYpOwotICAgIHN0YXRpYyBSdW50aW1l
VHlwZSBnZXRSdW50aW1lVHlwZUZvclZhbHVlKEpTVmFsdWUgdik7CisgICAgc3RhdGljIFJ1bnRp
bWVUeXBlIGdldFJ1bnRpbWVUeXBlRm9yVmFsdWUoSlNWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgV1RGOjpTdHJpbmcgc2VlblR5cGVzKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IGI4YjRiMTIuLjhlOGZmNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0z
MzIsMzcgKzMzMiw2IEBAIEpTT2JqZWN0KiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhl
Y3V0aW9uSW1wbCgKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpt
ZXJnZUluY29taW5nSGlnaEZpZGVsaXR5UHJvZmlsZVR5cGVzKE9wZXJhbmRzPFR5cGVTZXQ+JiB0
eXBlc0Zvck9wZXJhbmRzLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCi17Ci0gICAgcHJpbnRm
KCJNZXJnaW5nIGluY29taW5nIHR5cGVzXG4iKTsKLSAgICAvL09wZXJhbmRzPFN0cmluZz5pbnZl
cnNlU3ltYm9sVGFibGUoKTsKLSAgICBIYXNoTWFwPGludCwgU3RyaW5nPiBpbnZlcnNlU3ltYm9s
VGFibGU7Ci0gICAgQ29uY3VycmVudEpJVExvY2tlciogbG9ja2VyID0gbmV3IENvbmN1cnJlbnRK
SVRMb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7Ci0gICAgZm9yIChhdXRvIGl0ZXIgPSBzeW1i
b2xUYWJsZS0+YmVnaW4oKmxvY2tlciksIGVuZCA9IHN5bWJvbFRhYmxlLT5lbmQoKmxvY2tlcik7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgU3RyaW5nIHZhck5hbWUoaXRlci0+a2V5
KTsKLSAgICAgICAgaW52ZXJzZVN5bWJvbFRhYmxlLnNldChpdGVyLT52YWx1ZS5nZXRJbmRleCgp
LCB2YXJOYW1lKTsKLSAgICB9Ci0gICAgZGVsZXRlIGxvY2tlcjsKLQotICAgIGZvciAoaW50IGkg
PSAwLCBzaXplID0gdHlwZXNGb3JPcGVyYW5kcy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKLSAg
ICAgICAgaW50IHJlZ0lkID0gdHlwZXNGb3JPcGVyYW5kcy5vcGVyYW5kRm9ySW5kZXgoaSk7Ci0g
ICAgICAgIGF1dG8gaXRlciA9IGludmVyc2VTeW1ib2xUYWJsZS5maW5kKHJlZ0lkKTsKLSAgICAg
ICAgYXV0byBlbmQgPSBpbnZlcnNlU3ltYm9sVGFibGUuZW5kKCk7Ci0gICAgICAgIGlmIChpdGVy
ICE9IGVuZCkgewotICAgICAgICAgICAgU3RyaW5nIHZhck5hbWUgPSBpdGVyLT52YWx1ZTsgCi0g
ICAgICAgICAgICBUeXBlU2V0JiB0eXBlU2V0ID0gdHlwZXNGb3JPcGVyYW5kcy5hdChpKTsKLSAg
ICAgICAgICAgIGF1dG8gaXRlcjIgPSBtX3ZhcmlhYmxlVG9UeXBlU2V0TWFwLmZpbmQodmFyTmFt
ZSk7Ci0gICAgICAgICAgICBhdXRvIGVuZDIgPSBtX3ZhcmlhYmxlVG9UeXBlU2V0TWFwLmVuZCgp
OwotICAgICAgICAgICAgaWYgKGl0ZXIyICE9IGVuZDIpIHsKLSAgICAgICAgICAgICAgICB0eXBl
U2V0Lm1lcmdlV2l0aFR5cGVTZXQoaXRlcjItPnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIG1fdmFyaWFibGVUb1R5cGVTZXRNYXAuc2V0KHZhck5hbWUsIHR5cGVTZXQpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHJpbnRmKCJubyBlbnRyeSBpbiBzeW1ib2wgdGFi
bGUgZm9yIHJlZ2lzdGVyOiAlZFxuIiwgcmVnSWQpOwotICAgICAgICB9Ci0gICAgfQotfQotCiBj
b25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxl
IiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShF
dmFsRXhlY3V0YWJsZSkgfTsKIAogRXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0
cmljdENvbnRleHQpIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CmluZGV4IDY1OGY5OTcuLmQ4MzE1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKQEAgLTQzMiwxMyArNDMyLDggQEAgcHVibGljOgogCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaENvZGVCbG9jayhGdW5jdG9yJiYpOwog
Ci0gICAgdm9pZCBtZXJnZUluY29taW5nSGlnaEZpZGVsaXR5UHJvZmlsZVR5cGVzKE9wZXJhbmRz
PFR5cGVTZXQ+JiwgU3ltYm9sVGFibGUqKTsKLQotCiBwcml2YXRlOgogICAgIEpTT2JqZWN0KiBw
cmVwYXJlRm9yRXhlY3V0aW9uSW1wbChFeGVjU3RhdGUqLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSoq
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBU
eXBlU2V0PiBUeXBlU2V0TWFwOyAKLSAgICBUeXBlU2V0TWFwIG1fdmFyaWFibGVUb1R5cGVTZXRN
YXA7ICAgCiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMTk3
ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIgorCisjaW5jbHVkZSAiVHlw
ZVNldC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworCitTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCkKK3sKKyAgICBG
dW5jdGlvbkJvdW5kYXJ5TWFwJiBmdW5jdGlvbkJvdW5kYXJ5ID0gbV9pZFRvSGlzdG9yeU1hcC5m
aW5kKHNvdXJjZUlEKS0+dmFsdWU7CisgICAgTmVhcmVzdFRleHR1YWxCbG9jazxUeXBlQm91bmRh
cnk+IG5lYXJlc3RCbG9jayhzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1
bW4sIHNvdXJjZUlEKTsKKyAgICBmb3IgKGF1dG8gaXRlciA9IGZ1bmN0aW9uQm91bmRhcnkuYmVn
aW4oKSwgZW5kID0gZnVuY3Rpb25Cb3VuZGFyeS5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
eworICAgICAgICBwcmludGYoIml0ZXJcbiIpOworICAgICAgICBUeXBlQm91bmRhcnkmIGJvdW5k
YXJ5ID0gaXRlci0+dmFsdWU7CisgICAgICAgIG5lYXJlc3RCbG9jay51cGRhdGUoYm91bmRhcnku
bV9zdGFydExpbmUsIGJvdW5kYXJ5Lm1fc3RhcnRDb2x1bW4sIGJvdW5kYXJ5Lm1fZW5kTGluZSwg
Ym91bmRhcnkubV9lbmRDb2x1bW4sIGJvdW5kYXJ5Lm1fc291cmNlSUQsIGJvdW5kYXJ5KTsKKyAg
ICB9CisKKyAgICBpZiAobmVhcmVzdEJsb2NrLmZvdW5kQVRhcmdldCgpKSB7CisgICAgICAgIHBy
aW50ZigiZm91bmQgYSB0YXJnZXQgaW4gZ2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2VcbiIpOwor
ICAgICAgICBUeXBlQm91bmRhcnkmIGJvdW5kYXJ5ID0gbmVhcmVzdEJsb2NrLmJlc3RUYXJnZXQo
KTsKKyAgICAgICAgU3RyaW5nIHMoYm91bmRhcnkudHlwZXNGb3JWYXJpYWJsZSh2YXJpYWJsZU5h
bWUpLnNlZW5UeXBlcygpKTsKKyAgICAgICAgcHJpbnRmKCJ2YXJuYW1lPSclcycsIHR5cGVzPScl
cydcbiIsIHZhcmlhYmxlTmFtZS5hc2NpaSgpLmRhdGEoKSwgcy5hc2NpaSgpLmRhdGEoKSk7Cisg
ICAgICAgIC8vU3RyaW5nIHMoYm91bmRhcnkudHlwZXNGb3JWYXJpYWJsZSgiYmF6Iikuc2VlblR5
cGVzKCkpOworICAgICAgICByZXR1cm4gczsKKyAgICB9IGVsc2UgeworICAgICAgICBwcmludGYo
ImRpZG50IGZpbmQgYSB0YXJnZXQgaW4gZ2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2VcbiIpOwor
ICAgIH0KKworICAgIHJldHVybiAiIjsKK30KKwordm9pZCBIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXI6Om1lcmdlVHlwZXNGb3JDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAg
U2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCk7CisgICAgaW50cHRyX3Qgc291cmNlSUQgPSBleGVjdXRhYmxlLT5zb3VyY2VJRCgpOworCisg
ICAgRnVuY3Rpb25Cb3VuZGFyeU1hcCYgYm91bmRhcnlNYXAgPSBtYWtlT3JHZXRGdW5jdGlvbkJv
dW5kYXJ5KHNvdXJjZUlEKTsKKyAgICBUeXBlQm91bmRhcnkmIHR5cGVCb3VuZGFyeSA9IG1ha2VP
ckdldFR5cGVCb3VuZGFyeShjb2RlQmxvY2ssIGJvdW5kYXJ5TWFwKTsKKworICAgIHR5cGVCb3Vu
ZGFyeS5tZXJnZVdpdGhUeXBlSGlzdG9yeShjb2RlQmxvY2spOworfQorCitIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXI6OkZ1bmN0aW9uQm91bmRhcnlNYXAmIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
cjo6bWFrZU9yR2V0RnVuY3Rpb25Cb3VuZGFyeShpbnRwdHJfdCBpZCkKK3sKKyAgICBhdXRvIGl0
ZXIgPSBtX2lkVG9IaXN0b3J5TWFwLmZpbmQoaWQpOworICAgIGF1dG8gZW5kID0gbV9pZFRvSGlz
dG9yeU1hcC5lbmQoKTsKKyAgICBpZiAoaXRlciAhPSBlbmQpCisgICAgICAgIHJldHVybiBpdGVy
LT52YWx1ZTsKKworICAgIEZ1bmN0aW9uQm91bmRhcnlNYXAgbWFwOworICAgIG1faWRUb0hpc3Rv
cnlNYXAuc2V0KGlkLCBtYXApOworCisgICAgcmV0dXJuIG1faWRUb0hpc3RvcnlNYXAuZmluZChp
ZCktPnZhbHVlOworfQorCitUeXBlQm91bmRhcnkmIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6
bWFrZU9yR2V0VHlwZUJvdW5kYXJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBGdW5jdGlvbkJvdW5k
YXJ5TWFwJiBtYXApCit7CisgICAgU3RyaW5nIGhhc2goVHlwZUJvdW5kYXJ5Ojpib3VuZGFyeUhh
c2hGb3JDb2RlQmxvY2soY29kZUJsb2NrKSk7CisgICAgYXV0byBpdGVyID0gbWFwLmZpbmQoaGFz
aCk7CisgICAgYXV0byBlbmQgPSBtYXAuZW5kKCk7CisgICAgaWYgKGl0ZXIgIT0gZW5kKSAKKyAg
ICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOworCisgICAgVHlwZUJvdW5kYXJ5IGJvdW5kYXJ5KGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpOworICAgIG1hcC5zZXQoaGFzaCwgYm91bmRhcnkp
OworCisgICAgcmV0dXJuIG1hcC5maW5kKGhhc2gpLT52YWx1ZTsKK30KKworCitUeXBlQm91bmRh
cnk6OlR5cGVCb3VuZGFyeSgpCit7Cit9CisKK1R5cGVCb3VuZGFyeTo6VHlwZUJvdW5kYXJ5KFNj
cmlwdEV4ZWN1dGFibGUqIGUpCisgICAgOiBtX3N0YXJ0TGluZShlLT5saW5lTm8oKSkKKyAgICAs
IG1fc3RhcnRDb2x1bW4oZS0+c3RhcnRDb2x1bW4oKSkKKyAgICAsIG1fZW5kTGluZShlLT5sYXN0
TGluZSgpKQorICAgICwgbV9lbmRDb2x1bW4oZS0+ZW5kQ29sdW1uKCkpCisgICAgLCBtX3NvdXJj
ZUlEKGUtPnNvdXJjZUlEKCkpCit7Cit9CisKK1R5cGVTZXQmIFR5cGVCb3VuZGFyeTo6dHlwZXNG
b3JWYXJpYWJsZShjb25zdCBTdHJpbmcgdmFyKQoreworICAgIHJldHVybiBtX3ZhcmlhYmxlVG9U
eXBlU2V0TWFwLmZpbmQodmFyKS0+dmFsdWU7Cit9CisKK3ZvaWQgVHlwZUJvdW5kYXJ5OjptZXJn
ZVdpdGhUeXBlSGlzdG9yeShDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICAvL1RPRE86IG1h
eWJlIGNvbXB1dGUgaW52ZXJzZSBzeW1ib2wgdGFibGUsIG1ha2luZyB0aGlzIE8oMm4pIGluc3Rl
YWQgb2YgTyhuXjIpCisgICAgLy8gICAgICAgYnV0LCBhcmUgdGhlIHNjb3BlIHNpemVzIGxhcmdl
IGVub3VnaCB0byBqdXN0aWZ5IHRoaXM/CisgICAgCisgICAgT3BlcmFuZHM8VHlwZVNldD4mIHR5
cGVIaXN0b3J5ID0gY29kZUJsb2NrLT5nZXRIaWdoRmlkZWxpdHlUeXBlSGlzdG9yeSgpOworICAg
IGZvciAoaW50IGkgPSAwLCBzaXplID0gdHlwZUhpc3Rvcnkuc2l6ZSgpOyBpIDwgc2l6ZTsgKytp
KSB7CisgICAgICAgIGludCByZWdJZCA9IHR5cGVIaXN0b3J5Lm9wZXJhbmRGb3JJbmRleChpKTsK
KyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyhyZWdJZCk7CisgICAgICAgIFN0cmluZyB2YXJO
YW1lID0gY29kZUJsb2NrLT5uYW1lRm9yUmVnaXN0ZXIocmVnKTsKKyAgICAgICAgaWYgKCF2YXJO
YW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgVHlwZVNldCYgdHlwZVNldCA9IHR5cGVIaXN0
b3J5LmF0KGkpOworICAgICAgICAgICAgYXV0byBpdGVyID0gbV92YXJpYWJsZVRvVHlwZVNldE1h
cC5maW5kKHZhck5hbWUpOworICAgICAgICAgICAgYXV0byBlbmQgPSBtX3ZhcmlhYmxlVG9UeXBl
U2V0TWFwLmVuZCgpOworICAgICAgICAgICAgaWYgKGl0ZXIgIT0gZW5kKSAKKyAgICAgICAgICAg
ICAgICB0eXBlU2V0Lm1lcmdlV2l0aFR5cGVTZXQoaXRlci0+dmFsdWUpOworICAgICAgICAgICAg
bV92YXJpYWJsZVRvVHlwZVNldE1hcC5zZXQodmFyTmFtZSwgdHlwZVNldCk7CisgICAgICAgICAg
ICBTdHJpbmcgc2Vlbih0eXBlU2V0LnNlZW5UeXBlcygpKTsKKyAgICAgICAgICAgIGlmIChjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKSA9PSAiZmlsZTovLy9Wb2x1bWVz
L2RhdGEvdGVzdC5qcyIpCisgICAgICAgICAgICAgICAgcHJpbnRmKCJNZXJnaW5UeXBlczogdmFy
PSclcycsIHR5cGVzPSclcydcbiIsIHZhck5hbWUuYXNjaWkoKS5kYXRhKCksIHNlZW4uYXNjaWko
KS5kYXRhKCkpOworICAgICAgICB9CisgICAgfQorfQorCitTdHJpbmcgVHlwZUJvdW5kYXJ5Ojpi
b3VuZGFyeUhhc2hGb3JDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgU2Ny
aXB0RXhlY3V0YWJsZSogZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CisgICAgcmV0
dXJuIFR5cGVCb3VuZGFyeTo6Ym91bmRhcnlIYXNoRm9yUmFuZ2UoZS0+bGluZU5vKCksIGUtPnN0
YXJ0Q29sdW1uKCksIGUtPmxhc3RMaW5lKCksIGUtPmVuZENvbHVtbigpKTsKK30KKworU3RyaW5n
IFR5cGVCb3VuZGFyeTo6Ym91bmRhcnlIYXNoRm9yUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1
bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1u
KQoreworICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdGFydExpbmUpICsgU3RyaW5nKCI6Iikg
CisgICAgICAgICAgICsgU3RyaW5nOjpudW1iZXIoc3RhcnRDb2x1bW4pICsgU3RyaW5nKCI6Iikg
CisgICAgICAgICAgICsgU3RyaW5nOjpudW1iZXIoZW5kTGluZSkgKyBTdHJpbmcoIjoiKQorICAg
ICAgICAgICArIFN0cmluZzo6bnVtYmVyKGVuZENvbHVtbik7Cit9CisKKworfSAvL25hbWVzcGFj
ZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4zOGMxMmM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlcl9oCisjZGVmaW5lIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9o
CisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKKyAgICAvL2NsYXNzIENvZGVCbG9jazsKKyAgICAvL2NsYXNzIFNj
cmlwdEV4ZWN1dGFibGU7CisgICAgY2xhc3MgVHlwZUJvdW5kYXJ5OworICAgIGNsYXNzIFR5cGVT
ZXQ7CisKKworLy8xIHRvIDEgdy8gVk0KK2NsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlciB7
CisKK3B1YmxpYzoKKyAgICBTdHJpbmcgZ2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWdu
ZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5z
aWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291
cmNlSUQpOworICAgIHZvaWQgbWVyZ2VUeXBlc0ZvckNvZGVCbG9jayhDb2RlQmxvY2sqKTsKKwor
ICAgIAorcHJpdmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBUeXBlQm91bmRhcnk+
IEZ1bmN0aW9uQm91bmRhcnlNYXA7IC8vMSB0byAxIHcvIGEgc2NyaXB0IGZpbGUvdGFnLgorICAg
IHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgRnVuY3Rpb25Cb3VuZGFyeU1hcD4gU291cmNlSURU
b0hpc3Rvcnk7CisgICAgU291cmNlSURUb0hpc3RvcnkgbV9pZFRvSGlzdG9yeU1hcDsKKyAgICBG
dW5jdGlvbkJvdW5kYXJ5TWFwJiBtYWtlT3JHZXRGdW5jdGlvbkJvdW5kYXJ5KGludHB0cl90KTsK
KyAgICBUeXBlQm91bmRhcnkmIG1ha2VPckdldFR5cGVCb3VuZGFyeShDb2RlQmxvY2sqLCBGdW5j
dGlvbkJvdW5kYXJ5TWFwJik7Cit9OworCisvL21hbnkgdG8gb25lIHcvIGEgZmlsZS9zY3JpcHQg
dGFnCitjbGFzcyBUeXBlQm91bmRhcnkgeworCitwdWJsaWM6CisKKyAgICBUeXBlQm91bmRhcnko
KTsKKyAgICBUeXBlQm91bmRhcnkoU2NyaXB0RXhlY3V0YWJsZSopOworCisgICAgc3RhdGljIFN0
cmluZyBib3VuZGFyeUhhc2hGb3JDb2RlQmxvY2soQ29kZUJsb2NrKik7CisgICAgc3RhdGljIFN0
cmluZyBib3VuZGFyeUhhc2hGb3JSYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4pOworICAgIHZv
aWQgbWVyZ2VXaXRoVHlwZUhpc3RvcnkoQ29kZUJsb2NrKik7CisgICAgVHlwZVNldCYgdHlwZXNG
b3JWYXJpYWJsZShjb25zdCBTdHJpbmcgdmFyKTsKKyAgICAKKyAgICB1bnNpZ25lZCBtX3N0YXJ0
TGluZTsKKyAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOworICAgIHVuc2lnbmVkIG1fZW5kTGlu
ZTsKKyAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKKyAgICBpbnRwdHJfdCBtX3NvdXJjZUlEOwor
ICAgIAorcHJpdmF0ZToKKworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFR5cGVTZXQ+IFR5
cGVTZXRNYXA7IAorICAgIFR5cGVTZXRNYXAgbV92YXJpYWJsZVRvVHlwZVNldE1hcDsgICAKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgTmVhcmVzdFRleHR1YWxCbG9jayB7Citw
dWJsaWM6CisKKyAgICBOZWFyZXN0VGV4dHVhbEJsb2NrKHVuc2lnbmVkIGludCBzdGFydExpbmUs
IHVuc2lnbmVkIGludCBzdGFydENvbHVtbiwgdW5zaWduZWQgaW50IGVuZExpbmUsIHVuc2lnbmVk
IGludCBlbmRDb2x1bW4sIGludHB0cl90IHNvdXJjZUlEKSAKKyAgICAgICAgOiBtX3RhcmdldFN0
YXJ0TGluZShzdGFydExpbmUpCisgICAgICAgICwgbV90YXJnZXRTdGFydENvbHVtbihzdGFydENv
bHVtbikKKyAgICAgICAgLCBtX3RhcmdldEVuZExpbmUoZW5kTGluZSkKKyAgICAgICAgLCBtX3Rh
cmdldEVuZENvbHVtbihlbmRDb2x1bW4pIAorICAgICAgICAsIG1fc291cmNlSUQoc291cmNlSUQp
CisgICAgeworICAgICAgICAvL3ByaW50ZigiRnVuY3RvciB3aXRoIHNvdXJjZSB1cmwgJyVzJ1xu
IiwgbV91cmwuYXNjaWkoKS5kYXRhKCkpOworICAgIH0KKworICAgIHZvaWQgdXBkYXRlKHVuc2ln
bmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVu
c2lnbmVkIGVuZENvbHVtbiwgaW50cHRyX3Qgc291cmNlSUQsIFQgdGFyZ2V0KQorICAgIHsKKyAg
ICAgICAgaWYgKHNvdXJjZUlEICE9IG1fc291cmNlSUQpCisgICAgICAgICAgICByZXR1cm4gOwor
CisgICAgICAgIGlmICghZW5jbG9zZXNUYXJnZXRSYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1u
LCBlbmRMaW5lLCBlbmRDb2x1bW4pKSAKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAoc3RhcnRMaW5lID4gbV9zdGFydExpbmUgfHwgKHN0YXJ0TGluZSA9PSBtX3N0YXJ0TGluZSAm
JiBzdGFydENvbHVtbiA+IG1fc3RhcnRDb2x1bW4pKSB7CisgICAgICAgICAgICBtX3RhcmdldCA9
IHRhcmdldDsKKyAgICAgICAgICAgIG1fc3RhcnRMaW5lID0gc3RhcnRMaW5lOworICAgICAgICAg
ICAgbV9zdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOworICAgICAgICAgICAgbV9lbmRMaW5lID0g
ZW5kTGluZTsKKyAgICAgICAgICAgIG1fZW5kQ29sdW1uID0gZW5kQ29sdW1uOworICAgICAgICAg
ICAgbV9mb3VuZEFUYXJnZXQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgVCYgYmVz
dFRhcmdldCgpIHsgcmV0dXJuIG1fdGFyZ2V0OyB9CisgICAgYm9vbCBmb3VuZEFUYXJnZXQoKSB7
IHJldHVybiBtX2ZvdW5kQVRhcmdldDsgfQorCitwcml2YXRlOgorCisgICAgdW5zaWduZWQgbV9z
dGFydExpbmUgPSAwOworICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW4gPSAwOworICAgIHVuc2ln
bmVkIG1fZW5kTGluZSA9IFVJTlRfTUFYOworICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uID0gVUlO
VF9NQVg7CisKKyAgICB1bnNpZ25lZCBtX3RhcmdldFN0YXJ0TGluZTsKKyAgICB1bnNpZ25lZCBt
X3RhcmdldFN0YXJ0Q29sdW1uOworICAgIHVuc2lnbmVkIG1fdGFyZ2V0RW5kTGluZTsKKyAgICB1
bnNpZ25lZCBtX3RhcmdldEVuZENvbHVtbjsKKworICAgIGludHB0cl90IG1fc291cmNlSUQ7CisK
KyAgICBib29sIG1fZm91bmRBVGFyZ2V0ID0gZmFsc2U7CisgICAgVCBtX3RhcmdldDsKKworCisg
ICAgYm9vbCBlbmNsb3Nlc1RhcmdldFJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbikKKyAgICB7
CisgICAgICAgLy9lbnN1cmUgd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSB0aGlzIHdpdGggdGhlIGZp
cnN0IGNvbXBhcmlzb24KKyAgICAgICAvL2Z1bmN0aW9uIGNoZWNrKCkgeworICAgICAgIC8vICAg
IGZ1bmN0aW9uIHRhcmdldCgpIHsKKyAgICAgICAvLyAgICB9CisgICAgICAgLy99CisgICAgICAg
Ly8KKyAgICAgICAvL29yIHRoaXM6CisgICAgICAgLy9mdW5jdGlvbiBjaGVjaygpIHsgZnVuY3Rp
b24gdGFyZ2V0KCl7fSB9CisgICAgICAgLy8KKyAgICAgICAvL29yIGEgY29tYmluYXRpb24gb2Yg
dGhlIHR3bworICAgICAgIAorICAgICAgIGlmICghKHN0YXJ0TGluZSA8PSBtX3RhcmdldFN0YXJ0
TGluZSAmJiBlbmRMaW5lID49IG1fdGFyZ2V0RW5kTGluZSkpCisgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgIGlmIChzdGFydExpbmUgPCBtX3RhcmdldFN0YXJ0TGluZSkgeworICAg
ICAgICAgICBpZiAoZW5kTGluZSA+IG1fdGFyZ2V0RW5kTGluZSkKKyAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgICAgICAgIEFTU0VSVChlbmRMaW5lID09IG1fdGFyZ2V0RW5kTGlu
ZSk7CisKKyAgICAgICAgICAgaWYgKGVuZENvbHVtbiA+PSBtX3RhcmdldEVuZENvbHVtbikKKyAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgIEFTU0VSVChlbmRDb2x1bW4g
PCBtX3RhcmdldEVuZENvbHVtbik7CisgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICB9
CisKKyAgICAgICBBU1NFUlQoc3RhcnRMaW5lID09IG1fdGFyZ2V0U3RhcnRMaW5lKTsKKworICAg
ICAgIGlmIChzdGFydENvbHVtbiA8PSBtX3RhcmdldFN0YXJ0Q29sdW1uKSB7CisKKyAgICAgICAg
ICAgaWYgKGVuZExpbmUgPiBtX3RhcmdldEVuZExpbmUpCisgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgCisgICAgICAgICAgIEFTU0VSVChlbmRMaW5lID09IG1fdGFyZ2V0
RW5kTGluZSk7CisKKyAgICAgICAgICAgaWYgKGVuZENvbHVtbiA+PSBtX3RhcmdldEVuZENvbHVt
bikgCisgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICBBU1NFUlQoZW5k
Q29sdW1uIDwgbV90YXJnZXRFbmRDb2x1bW4pOworICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgfSAKKworICAgICAgIEFTU0VSVChzdGFydENvbHVtbiA+IG1fdGFyZ2V0U3RhcnRDb2x1
bW4pOworICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9OworCisKK30gLy9uYW1lc3BhY2Ug
SlNDCisKKworI2VuZGlmIC8vSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDY2NTRmNjEuLjdlOTBkYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJERkdM
b25nTGl2ZWRTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGVi
dWdnZXJBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkVy
cm9ySW5zdGFuY2UuaCIKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGdW5jdGlv
bkNvbnN0cnVjdG9yLmgiCkBAIC00OCw4ICs0OSw3IEBACiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVy
LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgot
Ly8jaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCi0vLyNpbmNsdWRlICJIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKQEAgLTg0LDcgKzg0
LDYgQEAKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCi0vLyNpbmNsdWRlICJWaXJ0
dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Q
cm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zMjcsNiArMzI2LDgg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIG1fdHlwZWRB
cnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIo
KSk7CiAKICAgICAvL21faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI+KCk7CisKKyAgICBtX2hpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyPigpOwog
fQogCiBWTTo6flZNKCkKQEAgLTkyMCwxMjIgKzkyMSw0OSBAQCB2b2lkIFZNOjpzZXRFbmFibGVk
UHJvZmlsZXIoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyKQogfQogCiAKLWNsYXNzIE5lYXJlc3RD
b2RlQmxvY2tSYW5nZUZ1bmN0b3IgeworY2xhc3MgTmVhcmVzdENvZGVCbG9ja0Z1bmN0b3Igewog
cHVibGljOgotCi0gICAgTmVhcmVzdENvZGVCbG9ja1JhbmdlRnVuY3Rvcih1bnNpZ25lZCBpbnQg
c3RhcnRMaW5lLCB1bnNpZ25lZCBpbnQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGludCBlbmRMaW5l
LCB1bnNpZ25lZCBpbnQgZW5kQ29sdW1uLCBTdHJpbmcgdXJsKSAKLSAgICAgICAgOiBtX3Rhcmdl
dFN0YXJ0TGluZShzdGFydExpbmUpCi0gICAgICAgICwgbV90YXJnZXRTdGFydENvbHVtbihzdGFy
dENvbHVtbikKLSAgICAgICAgLCBtX3RhcmdldEVuZExpbmUoZW5kTGluZSkKLSAgICAgICAgLCBt
X3RhcmdldEVuZENvbHVtbihlbmRDb2x1bW4pIAotICAgICAgICAsIG1fdXJsKHVybCkKKyAgICBO
ZWFyZXN0Q29kZUJsb2NrRnVuY3Rvcih1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludHB0cl90IHNv
dXJjZUlEKQorICAgICAgICA6IG1fbmVhcmVzdEJsb2NrKE5lYXJlc3RUZXh0dWFsQmxvY2s8Q29k
ZUJsb2NrKj4oc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBzb3Vy
Y2VJRCkpCiAgICAgewotICAgICAgICAvL3ByaW50ZigiRnVuY3RvciB3aXRoIHNvdXJjZSB1cmwg
JyVzJ1xuIiwgbV91cmwuYXNjaWkoKS5kYXRhKCkpOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0
b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykgIAogICAgIHsKLSAgICAgICAgU2NyaXB0RXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci0KLSAgICAg
ICAgaWYgKG1fdXJsICE9IGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgpKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICAvL1RPRE86IHdoeSB3b3VsZCBsaW5l
IG51bWJlcnMgbWF5YmUgYmUgbmVnYXRpdmUgKGkuZSwgZXhlY3V0YWJsZSB1c2VzIGludHMgZm9y
IGxpbmVubykKLSAgICAgICAgLy9jb2RlQmxvY2stPmR1bXBSZWdpc3RlckluZm9Gb3JEZWJ1Z2dp
bmcoKTsKLSAgICAgICAgdW5zaWduZWQgc3RhcnRMaW5lID0gZXhlY3V0YWJsZS0+bGluZU5vKCk7
Ci0gICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4o
KTsKLSAgICAgICAgdW5zaWduZWQgZW5kTGluZSA9IGV4ZWN1dGFibGUtPmxhc3RMaW5lKCk7Ci0g
ICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IGV4ZWN1dGFibGUtPmVuZENvbHVtbigpOwotCi0g
ICAgICAgIGlmICghZW5jbG9zZXNUYXJnZXRSYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBl
bmRMaW5lLCBlbmRDb2x1bW4pKSAKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBpZiAoc3RhcnRMaW5lID4gbV9zdGFydExpbmUgfHwgKHN0YXJ0TGluZSA9PSBtX3N0YXJ0TGlu
ZSAmJiBzdGFydENvbHVtbiA+IG1fc3RhcnRDb2x1bW4pKSB7Ci0gICAgICAgICAgICBtX2Jlc3RD
b2RlQmxvY2sgPSBjb2RlQmxvY2s7Ci0gICAgICAgICAgICBtX3N0YXJ0TGluZSA9IHN0YXJ0TGlu
ZTsKLSAgICAgICAgICAgIG1fc3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKLSAgICAgICAgICAg
IG1fZW5kTGluZSA9IGVuZExpbmU7Ci0gICAgICAgICAgICBtX2VuZENvbHVtbiA9IGVuZENvbHVt
bjsKLSAgICAgICAgfQotCisgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUqIGUgPSBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpOworICAgICAgICBtX25lYXJlc3RCbG9jay51cGRhdGUoZS0+bGlu
ZU5vKCksIGUtPnN0YXJ0Q29sdW1uKCksIGUtPmxhc3RMaW5lKCksIGUtPmVuZENvbHVtbigpLCBl
LT5zb3VyY2VJRCgpLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgQ29kZUJsb2NrKiBiZXN0Q29kZUJsb2NrKCkgeyByZXR1cm4gbV9iZXN0Q29kZUJsb2Nr
OyB9Ci0KLXByaXZhdGU6Ci0KLSAgICBDb2RlQmxvY2sqIG1fYmVzdENvZGVCbG9jazsKLSAgICB1
bnNpZ25lZCBtX3N0YXJ0TGluZSA9IDA7Ci0gICAgdW5zaWduZWQgbV9lbmRMaW5lID0gVUlOVF9N
QVg7Ci0gICAgdW5zaWduZWQgbV9zdGFydENvbHVtbiA9IDA7Ci0gICAgdW5zaWduZWQgbV9lbmRD
b2x1bW4gPSBVSU5UX01BWDsKLQotICAgIHVuc2lnbmVkIG1fdGFyZ2V0U3RhcnRMaW5lOwotICAg
IHVuc2lnbmVkIG1fdGFyZ2V0U3RhcnRDb2x1bW47Ci0gICAgdW5zaWduZWQgbV90YXJnZXRFbmRM
aW5lOwotICAgIHVuc2lnbmVkIG1fdGFyZ2V0RW5kQ29sdW1uOwotCi0gICAgU3RyaW5nIG1fdXJs
OwotCi0gICAgYm9vbCBlbmNsb3Nlc1RhcmdldFJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbikK
LSAgICB7Ci0gICAgICAgLy9lbnN1cmUgd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSB0aGlzIHdpdGgg
dGhlIGZpcnN0IGNvbXBhcmlzb24KLSAgICAgICAvL2Z1bmN0aW9uIGNoZWNrKCkgewotICAgICAg
IC8vICAgIGZ1bmN0aW9uIHRhcmdldCgpIHsKLSAgICAgICAvLyAgICB9Ci0gICAgICAgLy99Ci0g
ICAgICAgLy8KLSAgICAgICAvL29yIHRoaXM6Ci0gICAgICAgLy9mdW5jdGlvbiBjaGVjaygpIHsg
ZnVuY3Rpb24gdGFyZ2V0KCl7fSB9Ci0gICAgICAgLy8KLSAgICAgICAvL29yIGEgY29tYmluYXRp
b24gb2YgdGhlIHR3bwotICAgICAgIAotICAgICAgIGlmICghKHN0YXJ0TGluZSA8PSBtX3Rhcmdl
dFN0YXJ0TGluZSAmJiBlbmRMaW5lID49IG1fdGFyZ2V0RW5kTGluZSkpCi0gICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgIGlmIChzdGFydExpbmUgPCBtX3RhcmdldFN0YXJ0TGluZSkg
ewotICAgICAgICAgICBpZiAoZW5kTGluZSA+IG1fdGFyZ2V0RW5kTGluZSkKLSAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGJvb2wgZm91bmRBQ29kZUJsb2NrKCkgeyByZXR1cm4gbV9u
ZWFyZXN0QmxvY2suZm91bmRBVGFyZ2V0KCk7IH0KKyAgICBDb2RlQmxvY2sqIGJlc3RDb2RlQmxv
Y2soKSB7IHJldHVybiBtX25lYXJlc3RCbG9jay5iZXN0VGFyZ2V0KCk7IH0KIAotICAgICAgICAg
ICBBU1NFUlQoZW5kTGluZSA9PSBtX3RhcmdldEVuZExpbmUpOwotCi0gICAgICAgICAgIGlmIChl
bmRDb2x1bW4gPj0gbV90YXJnZXRFbmRDb2x1bW4pCi0gICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgICAgICAgICBBU1NFUlQoZW5kQ29sdW1uIDwgbV90YXJnZXRFbmRDb2x1bW4pOwot
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgfQotCi0gICAgICAgQVNTRVJUKHN0YXJ0
TGluZSA9PSBtX3RhcmdldFN0YXJ0TGluZSk7Ci0KLSAgICAgICBpZiAoc3RhcnRDb2x1bW4gPD0g
bV90YXJnZXRTdGFydENvbHVtbikgewotCi0gICAgICAgICAgIGlmIChlbmRMaW5lID4gbV90YXJn
ZXRFbmRMaW5lKQotICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgIAotICAg
ICAgICAgICBBU1NFUlQoZW5kTGluZSA9PSBtX3RhcmdldEVuZExpbmUpOworICAgIHByaXZhdGU6
CisgICAgICAgIE5lYXJlc3RUZXh0dWFsQmxvY2s8Q29kZUJsb2NrKj4gbV9uZWFyZXN0QmxvY2s7
Cit9OwogCi0gICAgICAgICAgIGlmIChlbmRDb2x1bW4gPj0gbV90YXJnZXRFbmRDb2x1bW4pIAot
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CitTdHJpbmcgVk06OmdldFR5cGVzRm9yVmFyaWFi
bGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2ln
bmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5h
bWUsIGNvbnN0IFN0cmluZyYgc291cmNlSURBc1N0cmluZykKK3sKKyAgICBib29sIG9rYXk7Cisg
ICAgaW50cHRyX3Qgc291cmNlSUQgPSBzb3VyY2VJREFzU3RyaW5nLnRvSW50UHRyU3RyaWN0KCZv
a2F5KTsKKyAgICBpZiAoIW9rYXkpCisgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgQVNT
RVJUKGVuZENvbHVtbiA8IG1fdGFyZ2V0RW5kQ29sdW1uKTsKLSAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgIH0gCisgICAgLy9UT0RPOiBpcyBpdCBzYWZlIHRvIGRvIHRoaXMgaXRlcmF0
aW9uIG92ZXIgdGhlIGhlYXAgYXQgYW55IHRpbWU/CisgICAgTmVhcmVzdENvZGVCbG9ja0Z1bmN0
b3IgZnVuY3RvcihzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHNv
dXJjZUlEKTsKKyAgICBoZWFwLmZvckVhY2hDb2RlQmxvY2soZnVuY3Rvcik7CiAKLSAgICAgICBB
U1NFUlQoc3RhcnRDb2x1bW4gPiBtX3RhcmdldFN0YXJ0Q29sdW1uKTsKLSAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKGZ1bmN0b3IuZm91bmRBQ29kZUJsb2NrKCkpIHsKKyAgICAgICAgcHJp
bnRmKCJGb3VuZCBhIGNvZGUgYmxvY2sgaW4gZnVuY3RvclxuIik7CisgICAgICAgIG1lcmdlSGln
aEZpZGVsaXR5UHJvZmlsZVR5cGVzKGZ1bmN0b3IuYmVzdENvZGVCbG9jaygpKTsKICAgICB9Ci19
OwogICAgIAotQ29kZUJsb2NrKiBWTTo6ZmluZFNtYWxsZXN0RW5jbG9zaW5nQ29kZUJsb2NrKHVu
c2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUs
IHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgcmV0dXJuIG1faGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLT5nZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExp
bmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNl
SUQpOworfQorCit2b2lkIFZNOjptZXJnZUhpZ2hGaWRlbGl0eVByb2ZpbGVUeXBlcyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKLSAgICBOZWFyZXN0Q29kZUJsb2NrUmFuZ2VGdW5jdG9yIGZ1bmN0
b3Ioc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCB1cmwpOwotICAg
IC8vVE9ETzogdGhpcyBpc24ndCBnb2luZyB0aHJvdWdoIGFsbCBleGVjdXRhYmxlcy4gSnVzdCB0
aG9zZSB0aGF0IGhhdmUgYmVlbiBleGVjdXRlZCAoaS5lLCB0dXJuZWQgaW50byBjb2RlYmxvY2tz
KQotICAgIC8vIHNvLCB3ZSBzaG91bGQgcmVhbGx5IGl0ZXJhdHJlIHRocm91Z2ggdGhlIGhlYXAg
c2VhcmNoaW5nIGZvciBleGVjdXRhYmxlcywgYW5kIGZpbmQgY29ycmVzcG9uZGluZyByYW5nZXMg
dGhhdCB3YXkKLSAgICBoZWFwLmZvckVhY2hDb2RlQmxvY2soZnVuY3Rvcik7Ci0gICAgcmV0dXJu
IGZ1bmN0b3IuYmVzdENvZGVCbG9jaygpOworICAgIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LT5tZXJnZVR5cGVzRm9yQ29kZUJsb2NrKGNvZGVCbG9jayk7ICAgCiB9CiAKIHZvaWQgc2FuaXRp
emVTdGFja0ZvclZNKFZNKiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDI4
MWYwNTAuLjZlOGQ4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNzQsNiAr
NzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKICAg
ICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSGFuZGxlU3RhY2s7CisgICAgY2xhc3MgSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyOwogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3Mg
SW50ZXJwcmV0ZXI7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CkBAIC04NCw2ICs4NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3Mg
UGFyc2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CisgICAgY2xhc3MgU2NyaXB0RXhl
Y3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VQcm92aWRlcjsKICAgICBjbGFzcyBTb3VyY2VQcm92
aWRlckNhY2hlOwogICAgIHN0cnVjdCBTdGFja0ZyYW1lOwpAQCAtNTE0LDcgKzUxNiw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1
dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBDb2RlQmxvY2sqIGZpbmRTbWFsbGVzdEVuY2xvc2luZ0NvZGVC
bG9jayh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBl
bmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICAgICAg
U3RyaW5nIGdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbiwg
Y29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOworICAg
ICAgICB2b2lkIG1lcmdlSGlnaEZpZGVsaXR5UHJvZmlsZVR5cGVzKENvZGVCbG9jayogY29kZUJs
b2NrKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CkBAIC01NjQsNiArNTY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93
blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOwogICAgICAgICBS
ZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFz
aE1hcDxTdHJpbmcsIFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNo
cG9pbnRTZXRzOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyPiBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjsKICAgICB9OwogCiAjaWYgRU5BQkxFKEdD
X1ZBTElEQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmluZGV4IGQwZGJj
MGUuLmQzYTMzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC0xMDg0
LDkgKzEwODQsMTQgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHZhciBkYXRhID0g
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZXN1bHQpCi0gICAgICAgICAg
ICAgICAsIHVybCA9IHRoaXMuX3NvdXJjZUNvZGUudXJsCisgICAgICAgICAgICAgICAsIHNvdXJj
ZUlEID0gdGhpcy5fc291cmNlQ29kZS5fc2NyaXB0c1swXS5faWQKICAgICAgICAgICAgICAgICwg
ZGlzcGxheSA9IF9kaXNwbGF5LmJpbmQodGhpcykKIAorICAgICAgICAgICAgLy9jb25zb2xlLmxv
ZyhKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLl9zb3VyY2VD
b2RlKSwgdW5kZWZpbmVkLCAyKSkKKyAgICAgICAgICAgIC8vY29uc29sZS5sb2coSlNPTi5zdHJp
bmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5fc291cmNlQ29kZS5fc2NyaXB0
cyksIHVuZGVmaW5lZCwgMikpCisgICAgICAgICAgICAvL2NvbnNvbGUubG9nKEpTT04uc3RyaW5n
aWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NvdXJjZUNvZGUuX3NjcmlwdHNb
MF0pLCB1bmRlZmluZWQsIDIpKQorICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiXG5Tb3VyY2VJ
RDogIiArIHNvdXJjZUlEKQorCiAgICAgICAgICAgICBmdW5jdGlvbiBfZGlzcGxheSgpIHsKICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkgewogICAgICAgICAgICAgICAgIGNhc2Ug
ImZ1bmN0aW9uIjoKQEAgLTExMjAsNyArMTEyNSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgdmFyIHJhbmdlID0gY2FuZGlkYXRlLmhvdmVyZWRUb2tlblJhbmdlCi0gICAgICAgICAg
ICAgICAgUnVudGltZUFnZW50LmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZShj
YW5kaWRhdGUuaG92ZXJlZFRva2VuLnN0cmluZywgdXJsLCByYW5nZS5zdGFydC5saW5lLCByYW5n
ZS5zdGFydC5jaCwgcmFuZ2UuZW5kLmxpbmUsIHJhbmdlLmVuZC5jaCwgaGFuZGxlcikKKyAgICAg
ICAgICAgICAgICBSdW50aW1lQWdlbnQuZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJh
bmdlKGNhbmRpZGF0ZS5ob3ZlcmVkVG9rZW4uc3RyaW5nLCBzb3VyY2VJRCwgcmFuZ2Uuc3RhcnQu
bGluZSwgcmFuZ2Uuc3RhcnQuY2gsIHJhbmdlLmVuZC5saW5lLCByYW5nZS5lbmQuY2gsIGhhbmRs
ZXIpCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGRpc3BsYXkoKQogICAg
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKaW5kZXggMTdmMWRkMS4uZTliMGQzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRp
dG9yLmpzCkBAIC02OCwzOCArNjgsMzcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IgPSBmdW5j
dGlvbihlbGVtZW50LCBtaW1lVHlwZSwgZGVsZWdhdGUpCiAKICAgICB0aGlzLl9kZWxlZ2F0ZSA9
IGRlbGVnYXRlIHx8IG51bGw7CiAKLSAgICB2YXIgdXJsID0gZGVsZWdhdGUgPyBkZWxlZ2F0ZS5z
b3VyY2VDb2RlLnVybCA6IG51bGw7Ci0gICAgLy9mdW5jdGlvbiBtb3VzZVVwVGVzdChldmVudCkg
ewotICAgIC8vICAgIHRoaXMuX3Rva2VuVHJhY2tpbmdDb250cm9sbGVyLmVuYWJsZWQgPSB0cnVl
Ci0gICAgLy8gICAgdmFyIHRva2VuSW5mbyA9IHRoaXMuX3Rva2VuVHJhY2tpbmdDb250cm9sbGVy
Ll9ob3ZlcmVkVG9rZW5JbmZvCi0gICAgLy8gICAgICAgLCB0b2tlbiAKLQotICAgIC8vICAgIGlm
ICghdG9rZW5JbmZvIHx8ICF0b2tlbkluZm8udG9rZW4pCi0gICAgLy8gICAgICAgIHJldHVybgot
Ci0gICAgLy8gICAgaWYgKCF1cmwpIHsKLSAgICAvLyAgICAgICAgY29uc29sZS5sb2coIlxuTk8g
VVJMIikKLSAgICAvLyAgICAgICAgcmV0dXJuCi0gICAgLy8gICAgfSBlbHNlIHsKLSAgICAvLyAg
ICAgICAgY29uc29sZS5sb2coIlxuVVJMOiAiICsgdXJsKQotICAgIC8vICAgIH0KLQotCi0gICAg
Ly8gICAgdG9rZW4gPSB0b2tlbkluZm8udG9rZW4KLSAgICAvLyAgICAvL2NvbnNvbGUubG9nKEpT
T04uc3RyaW5naWZ5KHRva2VuSW5mbywgdW5kZWZpbmVkLCAyKSkKLQotICAgIC8vICAgIGlmICh0
b2tlbi5zdGF0ZS5sYXN0VHlwZSA9PT0gInZhcmlhYmxlIikgewotICAgIC8vICAgICAgICBmdW5j
dGlvbiBoYW5kbGVyKGVycm9yLCB0eXBlU3RyaW5nKSB7Ci0gICAgLy8gICAgICAgICAgICBpZiAo
ZXJyb3IpIAotICAgIC8vICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJFUlJPUiBmcm9tIGhh
bmRsZXI6ICIgKyBlcnJvcikKLSAgICAvLyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJcblJ1bnRp
bWUgdHlwZXMgZm9yIHZhcmlhYmxlOiAnIiArIHRva2VuLnN0cmluZyArICInIGlzOiAnIiArIHR5
cGVTdHJpbmcgKyAiJyIpCi0gICAgLy8gICAgICAgIH0KLSAgICAvLyAgICAgICAgUnVudGltZUFn
ZW50LmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZSh0b2tlbi5zdHJpbmcsIHVy
bCwgdG9rZW5JbmZvLnBvc2l0aW9uLmxpbmUsIHRva2VuSW5mby5wb3NpdGlvbi5jaCwgCi0gICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG9rZW5JbmZvLnBvc2l0aW9uLmxpbmUsIHRva2VuSW5mby5wb3NpdGlvbi5jaCArIHRva2Vu
LnN0cmluZy5sZW5ndGgsIGhhbmRsZXIpCi0gICAgLy8gICAgfQotICAgIC8vfSAKLSAgICAvLy8v
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIG1vdXNlVXBUZXN0LmJpbmQodGhp
cyksIHRydWUpOwotICAgIC8vZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwg
bW91c2VVcFRlc3QuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgdmFyIHNvdXJjZUlEID0gZGVsZWdh
dGUgPyBkZWxlZ2F0ZS5zb3VyY2VDb2RlLl9zY3JpcHRzWzBdLl9pZCA6IG51bGw7CisgICAgZnVu
Y3Rpb24gbW91c2VVcFRlc3QoZXZlbnQpIHsKKyAgICAgICAgdGhpcy5fdG9rZW5UcmFja2luZ0Nv
bnRyb2xsZXIuZW5hYmxlZCA9IHRydWUKKyAgICAgICAgdmFyIHRva2VuSW5mbyA9IHRoaXMuX3Rv
a2VuVHJhY2tpbmdDb250cm9sbGVyLl9ob3ZlcmVkVG9rZW5JbmZvCisgICAgICAgICAgICwgdG9r
ZW4gCisKKyAgICAgICAgaWYgKCF0b2tlbkluZm8gfHwgIXRva2VuSW5mby50b2tlbikKKyAgICAg
ICAgICAgIHJldHVybgorCisgICAgICAgIGlmICghdXJsKSB7CisgICAgICAgICAgICBjb25zb2xl
LmxvZygiXG5OTyBVUkwiKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjb25zb2xlLmxvZygiXG5VUkw6ICIgKyB1cmwpCisgICAgICAgIH0KKworCisg
ICAgICAgIHRva2VuID0gdG9rZW5JbmZvLnRva2VuCisgICAgICAgIC8vY29uc29sZS5sb2coSlNP
Ti5zdHJpbmdpZnkodG9rZW5JbmZvLCB1bmRlZmluZWQsIDIpKQorCisgICAgICAgIGlmICh0b2tl
bi5zdGF0ZS5sYXN0VHlwZSA9PT0gInZhcmlhYmxlIikgeworICAgICAgICAgICAgZnVuY3Rpb24g
aGFuZGxlcihlcnJvciwgdHlwZVN0cmluZykgeworICAgICAgICAgICAgICAgIGlmIChlcnJvcikg
CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJFUlJPUiBmcm9tIGhhbmRsZXI6ICIg
KyBlcnJvcikKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiXG5SdW50aW1lIHR5cGVzIGZv
ciB2YXJpYWJsZTogJyIgKyB0b2tlbi5zdHJpbmcgKyAiJyBpczogJyIgKyB0eXBlU3RyaW5nICsg
IiciKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgUnVudGltZUFnZW50LmdldFJ1bnRpbWVU
eXBlRm9yVmFyaWFibGVJblRleHRSYW5nZSh0b2tlbi5zdHJpbmcsIHNvdXJjZUlELCB0b2tlbklu
Zm8ucG9zaXRpb24ubGluZSwgdG9rZW5JbmZvLnBvc2l0aW9uLmNoLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5JbmZv
LnBvc2l0aW9uLmxpbmUsIHRva2VuSW5mby5wb3NpdGlvbi5jaCArIHRva2VuLnN0cmluZy5sZW5n
dGgsIGhhbmRsZXIpCisgICAgICAgIH0KKyAgICB9IAorICAgIGRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlbW92ZSIsIG1vdXNlVXBUZXN0LmJpbmQodGhpcyksIHRydWUpOwogICAgIAog
fTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>233068</attachid>
            <date>2014-06-13 13:19:07 -0700</date>
            <delta_ts>2014-06-18 09:34:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>87294</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjIzOTU2OC4uOTc1OWM5YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcxMiw3ICs3MTIsNyBAQAogCQkxNDc0QzMzQjE2
QUEyRDk1MDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NDRBMzE2QUEyQzcwMDBBNjVBRjAgLyogUHJvdG90
eXBlTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMTQ3NEMzM0MxNkFBMkQ5QjAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NDRBMjE2QUEyQzcwMDBB
NjVBRjAgLyogUHJvdG90eXBlTWFwLmNwcCAqLzsgfTsKIAkJMTQ3ODI5N0IxMzc5RThBODAwQTdD
MkEzIC8qIEhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDZGQTVBODEzNzhGNkIwMDAzNjI3QTMgLyogSGFuZGxlVHlwZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxNDdCODNBQzBF
NkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0N0I4M0FBMEU2REI4QzkwMDQ3
NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oICovOyB9OworCQkxNDdCODNBQzBF
NkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0N0I4M0FBMEU2REI4QzkwMDQ3
NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAv
KiBQdXRQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0N0I4NDYyMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDdGMzlC
RDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlz
dC5jcHAgKi87IH07CiAJCTE0N0YzOUJFMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmd1bWVudHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNTdERTUw
RTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi87IH07CkBAIC04MjMsOSArODIzLDEx
IEBACiAJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEw
QzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CiAJCTQ0NDNBRTMzMTZFMTg4RDkw
MDc2RjExMCAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3Vu
ZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlh
cnIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTUz
OUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTJEQzlDMTIxOTM5MzBCMTAwRkE3NDYzIC8qIFR5cGVT
ZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJE
QzlDMTExOTM5MzBCMTAwRkE3NDYzIC8qIFR5cGVTZXQuY3BwICovOyB9OwotCQk1MkZBRERFQjE5
NDY3QTI0MDBDOEJCRTUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZBRERFQTE5NDY3QTI0MDBDOEJC
RTUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTJGQURERUQxOTQ2N0E3QTAwQzhCQkU1IC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MkZBRERFQzE5NDY3QTdBMDBDOEJCRTUgLyogSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmNwcCAqLzsgfTsKKwkJNTIyQUJBRjIxOTQ3NkIyMjAwOEIxQzg1IC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTIyQUJBRjExOTQ3NkIyMjAwOEIxQzg1IC8qIEhpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTUyMkFCQUY0MTk0NzZCNDMwMDhCMUM4NSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIy
QUJBRjMxOTQ3NkI0MzAwOEIxQzg1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgKi87
IH07CisJCTUyMkFCQUY3MTk0NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMkFCQUY1MTk0NzZCRkMwMDhC
MUM4NSAvKiBUeXBlU2V0LmNwcCAqLzsgfTsKKwkJNTIyQUJBRjgxOTQ3NkJGQzAwOEIxQzg1IC8q
IFR5cGVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyMkFCQUY2MTk0NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTIyQUJBRkExOTRBODA0MzAwOEIxQzg1
IC8qIExvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MjJBQkFGOTE5NEE4MDQzMDA4QjFDODUgLyogTG9jYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTEwNTAyNjE4RUI4Mjc1MDAw
MDFGM0UgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQwRjg4RjBBNTA4QjEwMDAwNUYwNjEgLyogSlNDYWxsYmFj
a0Z1bmN0aW9uLmggKi87IH07CiAJCTU1NDA3NTcyMThEQTU4QUQwMEVGRjdGMiAvKiBBcmdMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUx
MjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovOyB9OwogCQk1NTQwNzU3MzE4REE1OEFE
MDBFRkY3RjIgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzI1N0RFNjBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggKi87
IH07CkBAIC0yNjAyLDEwICsyNjA0LDExIEBACiAJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAv
KiBqc2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0ganNjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB9
OwogCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29s
dXRlPiI7IH07CiAJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGliICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVk
Lm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGli
b2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJNTJBRkY0NDgxOTNG
RDM1OTAwMURBQUQ0IC8qIFR5cGVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVHlwZVNldC5oOyBwYXRo
ID0gcHJvZmlsZXIvVHlwZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MkRD
OUMxMTE5MzkzMEIxMDBGQTc0NjMgLyogVHlwZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBU
eXBlU2V0LmNwcDsgcGF0aCA9IHByb2ZpbGVyL1R5cGVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MkZBRERFQTE5NDY3QTI0MDBDOEJCRTUgLyogSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MkZBRERFQzE5NDY3QTdBMDBDOEJCRTUgLyog
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyMkFC
QUYxMTk0NzZCMjIwMDhCMUM4NSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyMkFCQUYzMTk0NzZCNDMwMDhCMUM4NSAvKiBI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTIyQUJBRjUxOTQ3NkJGQzAwOEIxQzg1IC8qIFR5cGVTZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVNldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUyMkFCQUY2MTk0NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVTZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTIyQUJBRjkxOTRBODA0MzAwOEIxQzg1IC8qIExvY2F0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2F0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU1NDA3NTg0MThGNEEzNzUwMDYwMkE1RCAvKiBDb21waWxlUnVu
dGltZVRvTExWTUlSLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENv
bXBpbGVSdW50aW1lVG9MTFZNSVIueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU1NDA3QUM4MThEQTU4QUQwMEVGRjdGMiAvKiBsaWJDb21waWxlUnVudGltZVRvTExWTUlS
LmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hp
dmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYkNvbXBpbGVSdW50aW1lVG9MTFZN
SVIuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQ1MzcyNkQwRTFD
NTQ2QjAwMjFFNTQ5IC8qIFRyYWNpbmcuZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUcmFjaW5n
LmQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTc0LDYgKzQxNzcsMTAgQEAKIAkJ
N0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUyMkFCQUY1MTk0NzZCRkMwMDhCMUM4NSAvKiBU
eXBlU2V0LmNwcCAqLywKKwkJCQk1MjJBQkFGNjE5NDc2QkZDMDA4QjFDODUgLyogVHlwZVNldC5o
ICovLAorCQkJCTUyMkFCQUYzMTk0NzZCNDMwMDhCMUM4NSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIuY3BwICovLAorCQkJCTUyMkFCQUYxMTk0NzZCMjIwMDhCMUM4NSAvKiBIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJn
TGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAq
LywKIAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNwcCAqLywKQEAg
LTQyNzQsOCArNDI4MSw2IEBACiAJCQkJMEYyQjY2QjMxN0I2QjVBQjAwQTdBRTNGIC8qIEdlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCAqLywKIAkJCQlCQzAyRTlCODBFMTg0NTQ1MDAwRjky
OTcgLyogR2V0dGVyU2V0dGVyLmNwcCAqLywKIAkJCQlCQzMzN0JERTBFMUFGMEI4MDA3NjkxOEEg
LyogR2V0dGVyU2V0dGVyLmggKi8sCi0JCQkJNTJGQURERUMxOTQ2N0E3QTAwQzhCQkU1IC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgKi8sCi0JCQkJNTJGQURERUExOTQ2N0EyNDAwQzhC
QkU1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovLAogCQkJCTkzM0EzNDlEMDM4QUU4
MEYwMDg2MzVDRSAvKiBJZGVudGlmaWVyLmNwcCAqLywKIAkJCQk5MzNBMzQ5QTAzOEFFN0M2MDA4
NjM1Q0UgLyogSWRlbnRpZmllci5oICovLAogCQkJCTg2MDZEREU5MThEQTQ0QUIwMEEzODNEMCAv
KiBJZGVudGlmaWVySW5saW5lcy5oICovLApAQCAtNDg2OSw3ICs0ODc0LDYgQEAKIAkJOTVBQjgz
MUEwREE0MkM2OTAwQkM4M0YzIC8qIHByb2ZpbGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1MkFGRjQ0ODE5M0ZEMzU5MDAxREFBRDQgLyogVHlwZVNl
dC5oICovLAogCQkJCTk1RTNCQzA0MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRpZmllci5o
ICovLAogCQkJCTk1QUI4MzJFMERBNDJDQUQwMEJDODNGMyAvKiBMZWdhY3lQcm9maWxlci5jcHAg
Ki8sCiAJCQkJOTVBQjgzMkYwREE0MkNBRDAwQkM4M0YzIC8qIExlZ2FjeVByb2ZpbGVyLmggKi8s
CkBAIC00OTA2LDcgKzQ5MTAsNiBAQAogCQkJCTBGQjEwNThBMTY3NTQ4MkUwMEY4QUI2RSAvKiBQ
cm9maWxlck9TUkV4aXRTaXRlLmggKi8sCiAJCQkJMEYxMzkxMjYxNjc3MUMzMDAwOUNDQjA3IC8q
IFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwICovLAogCQkJCTBGMTM5MTI3MTY3NzFDMzAw
MDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmggKi8sCi0JCQkJNTJEQzlDMTEx
OTM5MzBCMTAwRkE3NDYzIC8qIFR5cGVTZXQuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBwcm9m
aWxlcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01MDA5LDYgKzUwMTIsNyBAQAog
CQkJCTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5j
cHAgKi8sCiAJCQkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmggKi8sCiAJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExp
bmtJbmZvLmggKi8sCisJCQkJNTIyQUJBRjkxOTRBODA0MzAwOEIxQzg1IC8qIExvY2F0aW9uLmgg
Ki8sCiAJCQkJMEZCNTQ2N0MxNEY1Q0ZEMzAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuY3BwICovLAogCQkJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJMTRDQTk1OEMxNkFCNTBGQTAwOTM4QTA2
IC8qIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmggKi8sCkBAIC01NTEyLDcgKzU1MTYsMTEgQEAK
IAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTJGQURERUIxOTQ2N0EyNDAwQzhCQkU1IC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTIyQUJBRjgxOTQ3
NkJGQzAwOEIxQzg1IC8qIFR5cGVTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyMkFCQUYyMTk0
NzZCMjIwMDhCMUM4NSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGlt
aXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkExMTEyNDYxOTJGQ0U3OTAwNUVFMThEIC8qIEN1
c3RvbUdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTIyQUJBRkExOTRBODA0MzAw
OEIxQzg1IC8qIExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUx
MDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUJDREU3
MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTI0
OEY5MTkxNDQyRDkwMEI3RkRFNCAvKiBWYXJpYWJsZVdhdGNocG9pbnRTZXRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTY4MzksNyArNjg0Nyw2IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
LQkJCQk1MkZBRERFRDE5NDY3QTdBMDBDOEJCRTUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkE1NDk3MTZCODgzNTAwMEIzQTk4MiAvKiBBNjRE
T3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAv
KiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQy
N0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNjkyNCw2ICs2OTMxLDcgQEAK
IAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxp
dGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyog
REZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTIyQUJBRjcxOTQ3NkJGQzAwOEIx
Qzg1IC8qIFR5cGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQjNBMjcxNTQ0Qzk5NTAw
M0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTc3QTQyM0YxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Nsb2JiZXJpemUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTc3QTQyNDExN0EwQkJGRDAwQThEQjgxIC8qIERGR0Nsb2JiZXJTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC02OTMyLDYgKzY5NDAsNyBAQAogCQkJCTBGMzhCMDE3MTdDRkU3
NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbktleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjM4QjAxOTE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGM0IzQTFBMTUzRTY4RjIwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MjJBQkFGNDE5NDc2QjQzMDA4QjFDODUg
LyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUw
RjcyMTZDMURCMDMwMDgyQzVFOCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3RDg5Q0Y1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VC
cmVha2luZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU5MTRFRjkwQTYwMEM3
MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTczNTYsNyArNzM2NSw2
IEBACiAJCQkJMEZDMzE0MTMxODE0NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNldC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkEyQzE3QjE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5l
clV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mzg2NTU1MTE4Njk3QjQwMDU0MDI3OSAv
KiBUaHVua0dlbmVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTJEQzlDMTIxOTM5MzBC
MTAwRkE3NDYzIC8qIFR5cGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjY3MDcxN0I2
QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkI2NzBBMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkY0Mjc0QTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgppbmRleCA0MjY3YTY5Li4zZjZiOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xMTMsNiArMTEzLDcgQEAKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc29sdmVfc2NvcGUiLCAibGVuZ3RoIiA6IDYgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9mcm9tX3Njb3BlIiwgImxlbmd0aCIgOiA4
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fc2NvcGUiLCAibGVuZ3RoIiA6
IDcgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF90b19zY29wZV93aXRoX3Byb2Zp
bGUiLCAibGVuZ3RoIiA6IDggfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1c2hfd2l0
aF9zY29wZSIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcG9w
X3Njb3BlIiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNo
X25hbWVfc2NvcGUiLCAibGVuZ3RoIiA6IDQgfSwKQEAgLTEyMyw3ICsxMjQsNyBAQAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV93aWxsX2NhbGwiLCAibGVuZ3RoIiA6IDIgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Byb2ZpbGVfZGlkX2NhbGwiLCAibGVuZ3RoIiA6
IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VuZCIsICJsZW5ndGgiIDogMiB9LAot
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxp
dHkiLCAibGVuZ3RoIiA6IDIgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV90
eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkiLCAibGVuZ3RoIiA6IDMgfQogICAgICAgICBdCiAgICAg
fSwKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oCmluZGV4IGE3M2VkZDIuLjg3MTJjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0xMDgsNiArMTA4LDcgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsX291dF9vZl9saW5lOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9s
aW5lOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dp
dGhfcHJvZmlsZToKICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewogICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBp
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwpAQCAtMjUyLDYgKzI1Myw3IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wdXNoX25hbWVfc2NvcGU6CiAgICAgY2FzZSBvcF9w
dXNoX3dpdGhfc2NvcGU6CiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6CisgICAgY2FzZSBvcF9w
dXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgIGNhc2Ugb3BfcG9wX3Njb3BlOgogICAgIGNh
c2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxsX2NhbGw6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDUyMjdlZjUuLjIyZGY0NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC00
Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTmFtZVNj
b3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCisjaW5jbHVkZSAiTG9jYXRpb24u
aCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljR2V0QnlJZExpc3QuaCIKQEAgLTczMyw2ICs3MzQs
MTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgICsraXQ7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlw
ZXNfd2l0aF9oaWdoX2ZpZGVsaXR5OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIC8vaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICArK2l0OworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAib3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9ub3Q6IHsKICAgICAg
ICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5vdCIpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xMzUzLDYgKzEzNjIsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cEJ5dGVjb2RlKAogICAgICAgICAgICAgICAgIG9wZXJhbmQpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgog
ICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CkBAIC0xMzYxLDYgKzEzNzEsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAg
ICAgICAgICAgKytpdDsgLy8gU3RydWN0dXJlCiAgICAgICAgICAgICBpbnQgb3BlcmFuZCA9ICgr
K2l0KS0+dS5vcGVyYW5kOyAvLyBPcGVyYW5kCiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfdG9fc2NvcGUiKTsKKyAgICAgICAgICAg
IGlmIChvcGNvZGUgPT0gb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSkKKyAgICAgICAgICAg
ICAgICArK2l0OwogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXU8JXN8JXM+
LCA8c3RydWN0dXJlPiwgJWQiLAogICAgICAgICAgICAgICAgIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIx
KS5kYXRhKCksCiAgICAgICAgICAgICAgICAgbW9kZUFuZFR5cGUub3BlcmFuZCgpLCByZXNvbHZl
TW9kZU5hbWUobW9kZUFuZFR5cGUubW9kZSgpKSwgcmVzb2x2ZVR5cGVOYW1lKG1vZGVBbmRUeXBl
LnR5cGUoKSksCkBAIC0xNDkxLDYgKzE1MDMsOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3Jp
cHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgog
ICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQodHJ1ZSkKICAgICAsIG1fZGlkRmFpbEZUTENv
bXBpbGF0aW9uKGZhbHNlKQogICAgICwgbV9oYXNCZWVuQ29tcGlsZWRXaXRoRlRMKGZhbHNlKQor
ICAgICwgbV9oaWdoRmlkZWxpdHlMb2dTaXplKDEpCisgICAgLCBtX2hpZ2hGaWRlbGl0eUxvZ1N0
YXJ0UHRyKDApCiAgICAgLCBtX3VubGlua2VkQ29kZShtX2dsb2JhbE9iamVjdC0+dm0oKSwgb3du
ZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaykKICAgICAsIG1faGFzRGVidWdnZXJTdGF0
ZW1lbnQoZmFsc2UpCiAgICAgLCBtX3N0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVEaXNhYmxlZCkK
QEAgLTE1MjQsNyArMTUzOCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAg
ICBtX3N5bWJvbFRhYmxlLnNldCgqbV92bSwgbV9vd25lckV4ZWN1dGFibGUuZ2V0KCksIHN5bWJv
bFRhYmxlLT5jbG9uZUNhcHR1cmVkTmFtZXMoKm1fdm0pKTsKICAgICAgICAgICAgIGRpZENsb25l
U3ltYm9sVGFibGUgPSB0cnVlOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fc3ltYm9s
VGFibGUuc2V0KCptX3ZtLCBtX293bmVyRXhlY3V0YWJsZS5nZXQoKSwgc3ltYm9sVGFibGUpOwor
ICAgICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCgqbV92bSwgbV9vd25lckV4ZWN1dGFibGUuZ2V0
KCksIHN5bWJvbFRhYmxlKTsKICAgICB9CiAKICAgICBBU1NFUlQobV9zb3VyY2UpOwpAQCAtMTc2
NCw2ICsxNzc4LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxl
OgogICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewogICAgICAgICAgICAgLy8gcHV0X3Rv
X3Njb3BlIHNjb3BlLCBpZCwgdmFsdWUsIFJlc29sdmVNb2RlQW5kVHlwZSwgU3RydWN0dXJlLCBP
cGVyYW5kCiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKTsKQEAgLTE3NzksOSArMTc5NCw3OSBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2Nr
KiB1bmxpbgogICAgICAgICAgICAgfSBlbHNlIGlmIChvcC5zdHJ1Y3R1cmUpCiAgICAgICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51LnN0cnVjdHVyZS5zZXQoKnZtKCksIG93bmVyRXhl
Y3V0YWJsZSwgb3Auc3RydWN0dXJlKTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0u
dS5wb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3Aub3BlcmFuZCk7CisKKyAgICAg
ICAgICAgIC8vIHB1dF90b19zY29wZV93aXRoX3Byb2ZpbGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVz
b2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQsIExvY2F0aW9uKgorICAgICAgICAg
ICAgaWYgKHBjWzBdLnUub3Bjb2RlID09IG9wX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGUpIHsK
KyAgICAgICAgICAgICAgICAvL1RPRE86IGhhbmRsZSBtZW1vcnkgbGVhayBoZXJlCisgICAgICAg
ICAgICAgICAgLy9Mb2NhdGlvbiogbG9jYXRpb24gPSBuZXcgTG9jYXRpb24oKTsKKyAgICAgICAg
ICAgICAgICBMb2NhdGlvbiogbG9jYXRpb24gPSBtX2xvY2F0aW9uSW5mby5hZGQoKTsKKyAgICAg
ICAgICAgICAgICBzaXplX3QgaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpICsgb3BMZW5ndGggLSAxOwor
ICAgICAgICAgICAgICAgIGludCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsgCisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbGluZSA9IDAsIGNvbHVtbiA9IDA7CisgICAgICAgICAgICAg
ICAgbV91bmxpbmtlZENvZGUuZ2V0KCktPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0
KGluc3RydWN0aW9uT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwg
Y29sdW1uKTsKKyAgICAgICAgICAgICAgICAvL3ByaW50ZigiRGl2b3QgcHV0X3RvX3Njb3BlOiVk
XG4iLCBkaXZvdCk7CisgICAgICAgICAgICAgICAgbGluZSArPSBtX293bmVyRXhlY3V0YWJsZS0+
bGluZU5vKCk7CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPnVubGlua2VkQnl0ZUNvZGVPZmZz
ZXQgPSBpbnN0cnVjdGlvbk9mZnNldDsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bGluZSA9
IGxpbmU7CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPmNvbHVtbiA9IGNvbHVtbjsKKyAgICAg
ICAgICAgICAgICBsb2NhdGlvbi0+c291cmNlSUQgPSBtX293bmVyRXhlY3V0YWJsZS0+c291cmNl
SUQoKTsKKworICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gb3AuYWN0aXZhdGlv
bi0+c3ltYm9sVGFibGUoKTsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciogbG9ja2VyID0gbmV3IENvbmN1cnJlbnRKSVRMb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IHN5bWJvbFRhYmxlLT5maW5kKCpsb2Nr
ZXIsIGlkZW50LmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZW5kID0gc3ltYm9s
VGFibGUtPmVuZCgqbG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ZXIgIT0g
ZW5kKTsKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQgPSBp
dGVyLT52YWx1ZS51bmlxdWVJRCgpOworICAgICAgICAgICAgICAgICAgICAvL3ByaW50ZigiTElO
S0lORzogcHV0X3RvX3Njb3BlIHcvIHZhciBuYW1lOiclcycgYW5kIHVuaXF1ZSBpZDonJWxsdScg
YXQgbGluZTonJXUnIGNvbHVtbjonJXUnXG4iLCBpZGVudC5hc2NpaSgpLmRhdGEoKSwgbG9jYXRp
b24tPmdsb2JhbFZhcmlhYmxlSUQsIGxpbmUsIGNvbHVtbik7IAorICAgICAgICAgICAgICAgICAg
ICBkZWxldGUgbG9ja2VyOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vcHJpbnRmKCJcbkxJTktJTkc6IG5vdCBhIGNsb3N1cmUgdmFyaWFibGUgaW4gUFVU
X1RPX1NDT1BFXG4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIDddLnUubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9wcm9maWxlX3R5
cGVzX3dpdGhfaGlnaF9maWRlbGl0eTogeworCisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
dmlydHVhbFJlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUgPSBtX3N5bWJvbFRhYmxlLmdldCgpOworICAgICAgICAgICAgdWludDY0
X3QgZ2xvYmFsSUQgPSBVSU5UNjRfTUFYOworCisgICAgICAgICAgICBDb25jdXJyZW50SklUTG9j
a2VyKiBsb2NrZXIgPSBuZXcgQ29uY3VycmVudEpJVExvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2Nr
KTsKKyAgICAgICAgICAgIGZvciAoYXV0byBpdGVyID0gc3ltYm9sVGFibGUtPmJlZ2luKCpsb2Nr
ZXIpLCBlbmQgPSBzeW1ib2xUYWJsZS0+ZW5kKCpsb2NrZXIpOyBpdGVyICE9IGVuZDsgKytpdGVy
KSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLmdldEluZGV4KCkgPT0gdmlydHVh
bFJlZ2lzdGVyLm9mZnNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGdsb2JhbElEID0gaXRl
ci0+dmFsdWUudW5pcXVlSUQoKTsgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZGVsZXRlIGxvY2tlcjsKKyAgICAgICAgICAgIEFTU0VSVChnbG9iYWxJRCAh
PSBVSU5UNjRfTUFYKTsKKworICAgICAgICAgICAgLy9UT0RPOiBoYW5kbGUgbWVtb3J5IGxlYWsg
aGVyZSwgbWF5YmUgcHV0IGFsbCBMb2NhdGlvbiogaW4gYSBiYWc8PgorICAgICAgICAgICAgLy9M
b2NhdGlvbiogbG9jYXRpb24gPSBuZXcgTG9jYXRpb24oKTsKKyAgICAgICAgICAgIExvY2F0aW9u
KiBsb2NhdGlvbiA9IG1fbG9jYXRpb25JbmZvLmFkZCgpOworICAgICAgICAgICAgc2l6ZV90IGlu
c3RydWN0aW9uT2Zmc2V0ID0gaSArIG9wTGVuZ3RoIC0gMTsKKyAgICAgICAgICAgIGludCBkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsgCisgICAgICAgICAgICB1bnNpZ25lZCBsaW5lID0g
MCwgY29sdW1uID0gMDsKKyAgICAgICAgICAgIG1fdW5saW5rZWRDb2RlLmdldCgpLT5leHByZXNz
aW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChpbnN0cnVjdGlvbk9mZnNldCwgZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CisgICAgICAgICAgICAvL3ByaW50Zigi
RGl2b3Q6JWRcbiIsIGRpdm90KTsKKyAgICAgICAgICAgIGxpbmUgKz0gbV9vd25lckV4ZWN1dGFi
bGUtPmxpbmVObygpOworICAgICAgICAgICAgbG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQgPSBn
bG9iYWxJRDsKKyAgICAgICAgICAgIGxvY2F0aW9uLT51bmxpbmtlZEJ5dGVDb2RlT2Zmc2V0ID0g
aW5zdHJ1Y3Rpb25PZmZzZXQ7CisgICAgICAgICAgICBsb2NhdGlvbi0+bGluZSA9IGxpbmU7Cisg
ICAgICAgICAgICBsb2NhdGlvbi0+Y29sdW1uID0gY29sdW1uOworICAgICAgICAgICAgbG9jYXRp
b24tPnNvdXJjZUlEID0gbV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCk7CisKKyAgICAgICAg
ICAgIFN0cmluZyBuYW1lID0gbmFtZUZvclJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAg
ICAgICAgICAvL3ByaW50ZigiTElOS0lORzogb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlk
ZWxpdHkgaGFzIHVuaXF1ZUlEOiclbGx1JyBhbmQgbmFtZTonJXMnLCBsaW5lOicldScsIGNvbHVt
bjonJXUnXG4iLCBnbG9iYWxJRCwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgbG9jYXRpb24tPmxpbmUs
IGxvY2F0aW9uLT5jb2x1bW4pOyAKKyAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgMl0udS5s
b2NhdGlvbiA9IGxvY2F0aW9uOworICAgICAgICAgICAgIAogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAorCiAgICAgICAgIGNhc2Ugb3BfY2FwdHVyZWRfbW92OgogICAgICAgICBjYXNl
IG9wX25ld19jYXB0dXJlZF9mdW5jOiB7CiAgICAgICAgICAgICBpZiAocGNbM10udS5pbmRleCA9
PSBVSU5UX01BWCkgewpAQCAtMTc4OSw3ICsxODc0LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2so
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW4KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFN0
cmluZ0ltcGwqIHVpZCA9IGlkZW50aWZpZXIocGNbM10udS5pbmRleCkuaW1wbCgpOwotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkQ2xvbmVTeW1ib2xUYWJsZSk7CisgICAgICAgICAgICAv
L1JFTEVBU0VfQVNTRVJUKGRpZENsb25lU3ltYm9sVGFibGUpOwogICAgICAgICAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIobV9zeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3N5bWJvbFRhYmxlLT5maW5kKGxv
Y2tlciwgdWlkKTsKICAgICAgICAgICAgIEFTU0VSVChpdGVyICE9IG1fc3ltYm9sVGFibGUtPmVu
ZChsb2NrZXIpKTsKQEAgLTE4MjksMTUgKzE5MTQsMTggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2so
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW4KICAgICBtX2hlYXAtPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplb2YoQ29kZUJsb2NrKSAr
IG1faW5zdHJ1Y3Rpb25zLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikpOwogCiAgICAgLy9z
ZXR1cCBvcHRpb25hbCBwcm9maWxpbmcgb2YgdHlwZXMKLSAgICAvL1RPRE86IG1ha2UgdGhpcyBv
bmx5IGhhcHBlbiBjb25kaXRpb25hbGx5Ci0gICAgbV9oaWdoRmlkZWxpdHlUeXBlSGlzdG9yeSA9
IHN0ZDo6bWFrZV91bmlxdWU8T3BlcmFuZHM8VHlwZVNldD4+KG1fbnVtUGFyYW1ldGVycywgbV9u
dW1WYXJzKTsKLSAgICBUeXBlU2V0IGJhc2VUeXBlOwotICAgIG1faGlnaEZpZGVsaXR5VHlwZUhp
c3RvcnktPmZpbGwoYmFzZVR5cGUpOworICAgIC8vVE9ETzogbWFrZSB0aGlzIHRydWx5IG9wdGlv
bmFsCisgICAgaWYgKE9wdGlvbnM6OnByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAg
ICAgICAgaW5pdGlhbGl6ZUhpZ2hGaWRlbGl0eUxvZygpOwogfQogCiBDb2RlQmxvY2s6On5Db2Rl
QmxvY2soKQogewotICAgIG1fdm0tPm1lcmdlSGlnaEZpZGVsaXR5UHJvZmlsZVR5cGVzKHRoaXMp
OworICAgIC8vbV92bS0+bWVyZ2VIaWdoRmlkZWxpdHlQcm9maWxlVHlwZXModGhpcyk7CisgICAg
aWYgKG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQdHIpIHsKKyAgICAgICAgcHJvY2Vzc0hpZ2hGaWRl
bGl0eUxvZygpOyAKKyAgICAgICAgZnJlZShtX2hpZ2hGaWRlbGl0eUxvZ1N0YXJ0UHRyKTsKKyAg
ICB9CiAKICAgICBpZiAobV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKQogICAgICAgICBtX3Zt
LT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5vdGlmeURlc3RydWN0aW9uKHRoaXMpOwpAQCAtMjIz
Myw2ICsyMzIxLDggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2Ug
b3BfZ2V0X2Zyb21fc2NvcGU6CisgICAgICAgICAgICAvL1RPRE86IHdoYXQgaXMgdGhpcyBmb3I/
CisgICAgICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGU6CiAgICAgICAg
ICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewogICAgICAgICAgICAgICAgIFJlc29sdmVNb2Rl
QW5kVHlwZSBtb2RlQW5kVHlwZSA9CiAgICAgICAgICAgICAgICAgICAgIFJlc29sdmVNb2RlQW5k
VHlwZShjdXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwpAQCAtMzYzMCwxMyArMzcyMCwzOSBA
QCBERkc6OkNhcGFiaWxpdHlMZXZlbCBDb2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbCgpCiB9CiAj
ZW5kaWYKIAotdm9pZCBDb2RlQmxvY2s6OnJlY29yZFR5cGVGb3JSZWdpc3RlcihWaXJ0dWFsUmVn
aXN0ZXIgcmVnLCBKU1ZhbHVlIHZhbCwgRXhlY1N0YXRlKiBleGVjKQordm9pZCBDb2RlQmxvY2s6
OmluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKQoreworICAgIG1faGlnaEZpZGVsaXR5TG9nU3Rh
cnRQdHIgPSAoSGlnaEZpZGVsaXR5VHlwZTNUdXBsZSopIG1hbGxvYyhzaXplb2YoSGlnaEZpZGVs
aXR5VHlwZTNUdXBsZSkgKiBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUpOworICAgIG1faGlnaEZpZGVs
aXR5TG9nQ3VycmVudFByb2Nlc3NPZmZzZXQgPSAwOworfQorCit2b2lkIENvZGVCbG9jazo6cmVj
b3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2LCBMb2NhdGlvbiogbG9jYXRp
b24sIFN0cm9uZzxTdHJ1Y3R1cmU+KiBzdHJ1Y3R1cmUpCiB7Ci0gICAgVHlwZVNldCYgdHlwZVNl
dCA9IG1faGlnaEZpZGVsaXR5VHlwZUhpc3RvcnktPm9wZXJhbmQocmVnKTsKLSAgICB0eXBlU2V0
LmFkZFR5cGVGb3JWYWx1ZSh2YWwsIGV4ZWMpOwotICAgIC8vU3RyaW5nIG5hbWUgPSB0aGlzLT5u
YW1lRm9yUmVnaXN0ZXIocmVnKTsKLSAgICAvL1N0cmluZyBzZWVuVHlwZXMgPSB0eXBlU2V0LnNl
ZW5UeXBlcygpOwotICAgIC8vcHJpbnRmKCJ2YXI9JXMsIHR5cGVzPSVzXG4iLG5hbWUuYXNjaWko
KS5kYXRhKCksIHNlZW5UeXBlcy5hc2NpaSgpLmRhdGEoKSk7CisgICAgLy9wcmludGYoInJlY29y
ZGluZyB0eXBlIGluZm9ybWF0aW9uXG4iKTsKKyAgICBBU1NFUlQobV9oaWdoRmlkZWxpdHlMb2dT
dGFydFB0cik7CisgICAgQVNTRVJUKG1faGlnaEZpZGVsaXR5TG9nQ3VycmVudFByb2Nlc3NPZmZz
ZXQgPCBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUpOworCisgICAgKihtX2hpZ2hGaWRlbGl0eUxvZ1N0
YXJ0UHRyICsgbV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldCkgPSBIaWdoRmlk
ZWxpdHlUeXBlM1R1cGxlKHYsIGxvY2F0aW9uLCBzdHJ1Y3R1cmUpOworICAgIG1faGlnaEZpZGVs
aXR5TG9nQ3VycmVudFByb2Nlc3NPZmZzZXQgKz0gMTsKKyAgICBpZiAobV9oaWdoRmlkZWxpdHlM
b2dDdXJyZW50UHJvY2Vzc09mZnNldCA+PSBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUpIHsKKyAgICAg
ICAgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygpOworICAgIH0KK30KKwordm9pZCBDb2RlQmxvY2s6
OnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coKQoreworICAgIEhpZ2hGaWRlbGl0eVR5cGUzVHVwbGUq
IHB0ciA9IG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQdHI7CisgICAgc2l6ZV90IGkgPSAwOworICAg
IHdoaWxlIChpIDwgbV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldCkgeworICAg
ICAgICBUeXBlU2V0KiB0eXBlU2V0ID0gcHRyLT5sb2NhdGlvbi0+dHlwZVNldDsKKyAgICAgICAg
dHlwZVNldC0+YWRkVHlwZUZvclZhbHVlKHB0ci0+dmFsdWUsIHB0ci0+c3RydWN0dXJlID8gcHRy
LT5zdHJ1Y3R1cmUtPmdldCgpIDogMCk7CisgICAgICAgIFN0cmluZyB0eXBlcyh0eXBlU2V0LT5z
ZWVuVHlwZXMoKSk7CisgICAgICAgIHByaW50ZigiUHJvY2Vzc2luZyBsb2c6IGxpbmUnJXUnLCBj
b2x1bW46JyV1JywgZ2xvYmFsSUQ6JyVsbHUnLCB0eXBlczonJXMnXG4iLCBwdHItPmxvY2F0aW9u
LT5saW5lLCBwdHItPmxvY2F0aW9uLT5jb2x1bW4sIHB0ci0+bG9jYXRpb24tPmdsb2JhbFZhcmlh
YmxlSUQsIHR5cGVzLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgcHRyKys7CisgICAgICAgIGkr
KzsKKyAgICB9CisKKyAgICBtX2hpZ2hGaWRlbGl0eUxvZ0N1cnJlbnRQcm9jZXNzT2Zmc2V0ID0g
MDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKaW5kZXggYWYwODVlOC4uMTI3MTExZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNjMsNiArNjMsOCBAQAogI2luY2x1ZGUg
IlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJQcm9maWxlckpldHRpc29uUmVhc29u
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCisjaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNs
dWRlICJUeXBlU2V0LmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFsaXplci5oIgpAQCAt
OTQwLDM1ICs5NDIsMzggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0tub3duVG9CZUxpdmVEdXJp
bmdHQygpOyAvLyBXaWxsIG9ubHkgcmV0dXJuIHZhbGlkIHJlc3VsdHMgd2hlbiBjYWxsZWQgZHVy
aW5nIEdDLiBBc3N1bWVzIHRoYXQgeW91J3ZlIGFscmVhZHkgZXN0YWJsaXNoZWQgdGhhdCB0aGUg
b3duZXIgZXhlY3V0YWJsZSBpcyBsaXZlLgogCi0gICAgdm9pZCByZWNvcmRUeXBlRm9yUmVnaXN0
ZXIoVmlydHVhbFJlZ2lzdGVyLCBKU1ZhbHVlIHYsIEV4ZWNTdGF0ZSopOwotICAgIE9wZXJhbmRz
PFR5cGVTZXQ+JiBnZXRIaWdoRmlkZWxpdHlUeXBlSGlzdG9yeSgpIHsgcmV0dXJuICoobV9oaWdo
RmlkZWxpdHlUeXBlSGlzdG9yeS5nZXQoKSk7IH0KLQotICAgIHZvaWQgZHVtcFJlZ2lzdGVySW5m
b0ZvckRlYnVnZ2luZygpIAotICAgIHsKLSAgICAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IHRoaXMtPm93bmVyRXhlY3V0YWJsZSgpOwotICAgICAgICBwcmludGYoIj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT1cbiIpOwotICAgICAgICBwcmludGYoIkFjY2VzaW5nIGNvZGVibG9ja1xuIik7Ci0gICAgICAg
IHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Ci0gICAgICAgIHByaW50ZigiVVJM
OiVzXG4iLCBleGVjdXRhYmxlLT5zb3VyY2VVUkwoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAg
IHByaW50Zigic3RhcnRpbmc6IFtMaW5lOiVkLCBDb2x1bW46JWRdXG4iLCBleGVjdXRhYmxlLT5s
aW5lTm8oKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7Ci0gICAgICAgIHByaW50ZigiZW5k
aW5nOiBbTGluZTolZCwgQ29sdW1uOiVkXVxuIiwgZXhlY3V0YWJsZS0+bGFzdExpbmUoKSwgZXhl
Y3V0YWJsZS0+ZW5kQ29sdW1uKCkpOwotICAgICAgICBwcmludGYoImNoYXJhY3RlciBvZmZzZXQ6
IFtTdGFydDolZCwgRW5kOiVkXVxuIiwgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRPZmZzZXQo
KSwgZXhlY3V0YWJsZS0+c291cmNlKCkuZW5kT2Zmc2V0KCkpOwotICAgICAgICBwcmludGYoIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwotICAgICAgICBTdHJpbmcgc291cmNlID0gZXhlY3V0
YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKLSAgICAgICAgcHJpbnRmKCIlc1xuIiwgc291cmNl
LmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0t
XG4iKTsKLQotICAgICAgICBPcGVyYW5kczxUeXBlU2V0PiYgdHlwZUhpc3RvcnkgPSB0aGlzLT5n
ZXRIaWdoRmlkZWxpdHlUeXBlSGlzdG9yeSgpOwotICAgICAgICBmb3IgKGludCBpID0gMCwgc2l6
ZSA9IHR5cGVIaXN0b3J5LnNpemUoKTsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIHJlZyA9IHR5cGVIaXN0b3J5LnZpcnR1YWxSZWdpc3RlckF0KGkpOwotICAg
ICAgICAgICAgVHlwZVNldCYgdHlwZVNldCA9IHR5cGVIaXN0b3J5LmF0KGkpOwotICAgICAgICAg
ICAgU3RyaW5nIG5hbWUgPSB0aGlzLT5uYW1lRm9yUmVnaXN0ZXIocmVnKTsKLSAgICAgICAgICAg
IFN0cmluZyBzZWVuVHlwZXMgPSB0eXBlU2V0LnNlZW5UeXBlcygpOwotICAgICAgICAgICAgaWYg
KG5hbWUubGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJ2YXI9PlwiJXNcIiByZWc9
PlwiJWRcIiAgOjo6IHR5cGVzPT57ICVzfVxuIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgdHlwZUhp
c3Rvcnkub3BlcmFuZEZvckluZGV4KGkpLCBzZWVuVHlwZXMuYXNjaWkoKS5kYXRhKCkpOworICAg
IHN0cnVjdCBIaWdoRmlkZWxpdHlUeXBlM1R1cGxlIHsKKyAgICAgICAgcHVibGljOgorICAgICAg
ICBIaWdoRmlkZWxpdHlUeXBlM1R1cGxlKEpTVmFsdWUgdiwgTG9jYXRpb24qIGxvYywgU3Ryb25n
PFN0cnVjdHVyZT4qIF9zdHJ1Y3R1cmUpIAorICAgICAgICB7CisgICAgICAgICAgICB2YWx1ZSA9
IHY7CisgICAgICAgICAgICBsb2NhdGlvbiA9IGxvYzsKKyAgICAgICAgICAgIGlmIChfc3RydWN0
dXJlKSB7CisgICAgICAgICAgICAgICAgc3RydWN0dXJlID0gbmV3IFN0cm9uZzxTdHJ1Y3R1cmU+
KCk7CisgICAgICAgICAgICAgICAgKnN0cnVjdHVyZSA9ICpfc3RydWN0dXJlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IDA7CiAg
ICAgICAgIH0KLSAgICAgICAgcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKLSAgICB9CisgICAgICAg
IH5IaWdoRmlkZWxpdHlUeXBlM1R1cGxlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHN0
cnVjdHVyZSkKKyAgICAgICAgICAgICAgICBkZWxldGUgc3RydWN0dXJlOworICAgICAgICB9Cisg
ICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgIExvY2F0aW9uKiBsb2NhdGlvbjsKKyAgICAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4qIHN0cnVjdHVyZTsKKyAgICB9OworCisgICAgdm9pZCByZWNv
cmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbihKU1ZhbHVlIHYsIExvY2F0aW9uKiwgU3Ryb25n
PFN0cnVjdHVyZT4qKTsKKyAgICB2b2lkIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKKyAg
ICB2b2lkIHByb2Nlc3NIaWdoRmlkZWxpdHlMb2coKTsKKworICAgIHVuc2lnbmVkIG1faGlnaEZp
ZGVsaXR5TG9nU2l6ZTsKKyAgICBzaXplX3QgbV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vz
c09mZnNldDsKKyAgICBIaWdoRmlkZWxpdHlUeXBlM1R1cGxlKiBtX2hpZ2hGaWRlbGl0eUxvZ1N0
YXJ0UHRyOworCisgICAgQmFnPExvY2F0aW9uPiBtX2xvY2F0aW9uSW5mbzsKIAogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJikgb3Zl
cnJpZGU7CkBAIC0xMTIwLDkgKzExMjUsNiBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gbV9saXZlbmVzc0FuYWx5c2lzOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPE9wZXJhbmRzPFR5cGVTZXQ+PiBtX2hpZ2hGaWRlbGl0eVR5cGVIaXN0
b3J5OwotCi0KICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0cnVjdGlvbi5oCmluZGV4IGNhNDU3NzUuLmE1YTEwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgIkxv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiU3BlY2lhbFBv
aW50ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKQEAgLTQ1LDYgKzQ2LDcgQEAgY2xhc3Mg
QXJyYXlQcm9maWxlOwogY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiBjbGFzcyBWYXJp
YWJsZVdhdGNocG9pbnRTZXQ7CiBzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm87CisvL2NsYXNzIExv
Y2F0aW9uOwogc3RydWN0IFZhbHVlUHJvZmlsZTsKIAogc3RydWN0IEluc3RydWN0aW9uIHsKQEAg
LTExOCw2ICsxMjAsNyBAQCBzdHJ1Y3QgSW5zdHJ1Y3Rpb24gewogICAgICAgICBXcml0ZUJhcnJp
ZXJCYXNlPEpTQWN0aXZhdGlvbj4gYWN0aXZhdGlvbjsKICAgICAgICAgdm9pZCogcG9pbnRlcjsK
ICAgICAgICAgYm9vbCogcHJlZGljYXRlUG9pbnRlcjsKKyAgICAgICAgTG9jYXRpb24qIGxvY2F0
aW9uOwogICAgIH0gdTsKICAgICAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTG9jYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
MTZiNzQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xvY2F0aW9uLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTG9jYXRpb25faAorI2RlZmluZSBMb2Nh
dGlvbl9oCisKKyNpbmNsdWRlICJUeXBlU2V0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBMb2NhdGlvbiB7CisgICAgICAgICAgICAgICAgICAgICAgIAorcHVibGljOgorICAgIExvY2F0
aW9uKCkgCisgICAgICAgIDogdHlwZVNldChuZXcgVHlwZVNldCgpKQorICAgIHsKKyAgICB9CisK
KyAgICB+TG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHR5cGVTZXQ7CisgICAgfQor
CisgICAgdWludDY0X3QgZ2xvYmFsVmFyaWFibGVJRDsKKyAgICBzaXplX3QgdW5saW5rZWRCeXRl
Q29kZU9mZnNldDsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRDsKKyAgICB1bnNpZ25lZCBsaW5lOwor
ICAgIHVuc2lnbmVkIGNvbHVtbjsKKyAgICBUeXBlU2V0KiB0eXBlU2V0OworfTsKKworfSAvL25h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vTG9jYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAw
ZjJmMzY5Li4wOTA3MzVkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTEzOCw2ICsxMzgsMTMgQEAg
Ym9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFyKAogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCisgICAgaWYgKGlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSkg
eworICAgICAgICBuZXdFbnRyeS5zZXRVbmlxdWVJRCh2bSgpLT5nZXROZXh0VW5pcXVlVmFyaWFi
bGVJRCgpKTsKKyAgICAgICAgc3ltYm9sVGFibGUoKS5zZXQobG9ja2VyLCBpZGVudC5pbXBsKCks
IG5ld0VudHJ5KTsKKyAgICAgICAgLy9TeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFi
bGUoKS5nZXQobG9ja2VyLCBpZGVudC5pbXBsKCkpOworICAgICAgICAvL3ByaW50ZigiYnl0ZWNv
ZGUgZ2VuZXJhdGluZyB2YXJpYWJsZTonJXMnIHdpdGggdW5pcXVlaWQ6JyVsbHUnXG4iLCBpZGVu
dC5hc2NpaSgpLmRhdGEoKSwgZW50cnkudW5pcXVlSUQoKSk7CisgICAgfQorCiAgICAgaWYgKHdh
dGNoTW9kZSA9PSBJc1dhdGNoYWJsZSkgewogICAgICAgICB3aGlsZSAobV93YXRjaGFibGVWYXJp
YWJsZXMuc2l6ZSgpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2NvZGVCbG9jay0+bV9udW1WYXJz
KSkKICAgICAgICAgICAgIG1fd2F0Y2hhYmxlVmFyaWFibGVzLmFwcGVuZChJZGVudGlmaWVyKCkp
OwpAQCAtMTExNSwxMyArMTEyMiwxNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdAogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChzcmMyLT5pbmRleCgpKTsKICAgICByZXR1cm4gZHN0OwogfQot
Ly9zYgorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hG
aWRlbGl0eShSZWdpc3RlcklEKiBkc3QpCiB7CisgICAgLy9pbnQzMl90IG9mZnNldCA9IHN0YXRp
Y19jYXN0PGludDMyX3Q+KGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgLy9wcmludGYoImVt
aXQgcHJvZmlsZSB0eXBlcyBvZmZzZXQ6JyVkJ1xuIiwgb2Zmc2V0KTsKICAgICBlbWl0T3Bjb2Rl
KG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Cisg
ICAgLy9pbnN0cnVjdGlvbnMoKS5hcHBlbmQob2Zmc2V0KTsKIH0KLS8vc2IKKwogCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29sIGIp
CiB7CkBAIC0xMjY3LDEzICsxMjc4LDE4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0VG9TY29wZShSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgSWRlbnRpZmllCiAgICAg
bV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKIAogICAgIC8vIHB1dF90b19zY29wZSBzY29wZSwgaWQsIHZhbHVlLCBSZXNvbHZl
TW9kZUFuZFR5cGUsIFN0cnVjdHVyZSwgT3BlcmFuZAotICAgIGVtaXRPcGNvZGUob3BfcHV0X3Rv
X3Njb3BlKTsKKyAgICBpZiAoaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygp
KQorICAgICAgICBlbWl0T3Bjb2RlKG9wX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGUpOworICAg
IGVsc2UKKyAgICAgICAgZW1pdE9wY29kZShvcF9wdXRfdG9fc2NvcGUpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChzY29wZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFs
dWUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChSZXNvbHZlTW9kZUFuZFR5
cGUocmVzb2x2ZU1vZGUsIHJlc29sdmVUeXBlKCkpLm9wZXJhbmQoKSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAo
aXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKQorICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggMTE3OWUyZi4uZjQwYjI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMjM0LDYgKzIzNCwxNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gTW92ZXMgc3JjIHRvIGRzdCBpZiBkc3QgaXMgbm90
IG51bGwgYW5kIGlzIGRpZmZlcmVudCBmcm9tIHNyYywgb3RoZXJ3aXNlIGp1c3QgcmV0dXJucyBz
cmMuCiAgICAgICAgIFJlZ2lzdGVySUQqIG1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgICAgIHsKKyAgICAgICAgICAgIC8vaWYg
KGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkpCisgICAgICAgICAgICAvLyAgICByZXR1cm4gMDsKKwor
ICAgICAgICAgICAgLy9pZiAoZHN0ICYmIGRzdCAhPSBzcmMpCisgICAgICAgICAgICAvLyAgICBy
ZXR1cm4gZW1pdE1vdmUoZHN0LCBzcmMpOworCisgICAgICAgICAgICAvL2lmICghc3JjLT5pc1Rl
bXBvcmFyeSgpKQorICAgICAgICAgICAgLy8gICAgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoc3JjKTsKKworICAgICAgICAgICAgLy9yZXR1cm4gc3JjOworICAgICAgICAgICAgCiAg
ICAgICAgICAgICByZXR1cm4gZHN0ID09IGlnbm9yZWRSZXN1bHQoKSA/IDAgOiAoZHN0ICYmIGRz
dCAhPSBzcmMpID8gZW1pdE1vdmUoZHN0LCBzcmMpIDogc3JjOwogICAgICAgICB9CiAKQEAgLTY4
MCw2ICs2OTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBWTSogbV92bTsKIAorICAg
ICAgICBib29sIGlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSB7IHJldHVy
biBPcHRpb25zOjpwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCk7IH0KKwogICAgICAgICBP
cGNvZGVJRCBtX2xhc3RPcGNvZGVJRDsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIHNpemVfdCBt
X2xhc3RPcGNvZGVQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0YjVkNGY3Li4zYWZiNjJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CkBAIC03NDAsMTMgKzc0MCwxNSBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdFJlc29s
dmUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogICAgICAgICBp
ZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRP
bmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGxvY2FsUmVnID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9jYWxSZWcpOwotICAg
ICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYg
KGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGluZygpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERz
dCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAgICAgICBBU1NFUlQo
ZHN0ICE9IGxvY2FsUmVnKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0
U3JjID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRUb051bWJlcih0ZW1wRHN0LmdldCgpLCBsb2NhbFJlZyk7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdE1vdmUodGVtcERzdFNyYy5nZXQoKSwgbG9jYWxSZWcpOwogICAgICAgICAgICAgZW1p
dEluY09yRGVjKGdlbmVyYXRvciwgdGVtcERzdFNyYy5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAg
ICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxp
bmcoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE1vdmUobG9jYWxSZWcsIHRlbXBEc3RTcmMuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRl
bXBEc3QuZ2V0KCk7CiAgICAgICAgIH0KQEAgLTkxNSwxMCArOTE3LDEyIEBAIFJlZ2lzdGVySUQq
IFByZWZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzCiAgICAgICAgIGlmIChsb2NhbC5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpOwogICAgICAgICAg
ICAgbG9jYWxSZWcgPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBsb2NhbFJlZyk7Ci0gICAgICAgIH0gZWxzZSBpZiAobG9jYWwuaXNDYXB0dXJlZCgp
KSB7CisgICAgICAgIH0gZWxzZSBpZiAobG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci5p
c0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpIHsKICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBEc3QuZ2V0KCksIGxvY2FsUmVn
KTsKICAgICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHRlbXBEc3QuZ2V0KCksIG1f
b3BlcmF0b3IpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0dlbmVyYXRpbmdIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsaW5nKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsUmVnLCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAg
ICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHRlbXBE
c3QuZ2V0KCkpOwogICAgICAgICB9CkBAIC0xNDA3LDYgKzE0MTEsNyBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSBSZWdpc3RlcklEKiBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbgogCiBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Cisg
ICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyBtX2lkZW50Lmxlbmd0
aCgpOwogICAgIGlmIChMb2NhbCBsb2NhbCA9IGdlbmVyYXRvci5sb2NhbChtX2lkZW50KSkgewog
ICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKQEAgLTE0MTQsMTAgKzE0MTksMTMgQEAg
UmVnaXN0ZXJJRCogUmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChsb2NhbC5p
c0NhcHR1cmVkKCkKKyAgICAgICAgICAgIHx8IGdlbmVyYXRvci5pc0dlbmVyYXRpbmdIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsaW5nKCkKICAgICAgICAgICAgIHx8IGdlbmVyYXRvci5sZWZ0SGFuZFNp
ZGVOZWVkc0NvcHkobV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJh
dG9yKSkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUocmVzdWx0
LmdldCgpLCBsb2NhbC5nZXQoKSk7CiAgICAgICAgICAgICBlbWl0UmVhZE1vZGlmeUFzc2lnbm1l
bnQoZ2VuZXJhdG9yLCByZXN1bHQuZ2V0KCksIHJlc3VsdC5nZXQoKSwgbV9yaWdodCwgbV9vcGVy
YXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJl
c3VsdERlc2NyaXB0b3IoKSkpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0dlbmVyYXRp
bmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7CiAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUobG9jYWwuZ2V0KCksIHJlc3VsdC5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQo
ZHN0LCByZXN1bHQuZ2V0KCkpOwogICAgICAgICB9CkBAIC0xNDI2LDcgKzE0MzQsNiBAQCBSZWdp
c3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoZHN0LCByZXN1bHQpOwogICAgIH0KIAotICAgIEpTVGV4dFBvc2l0aW9u
IG5ld0Rpdm90ID0gZGl2b3RTdGFydCgpICsgbV9pZGVudC5sZW5ndGgoKTsKICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29w
ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIG1faWRlbnQpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgc2NvcGUuZ2V0KCksIG1faWRlbnQsIFRocm93SWZOb3RGb3VuZCk7CkBAIC0xNDQz
LDkgKzE0NTAsMTEgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpOwogICAgICAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIGlm
IChsb2NhbC5pc0NhcHR1cmVkKCkpIHsKKyAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8
fCBnZW5lcmF0b3IuaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKSB7CiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wRHN0Lmdl
dCgpLCBtX3JpZ2h0KTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNHZW5lcmF0aW5nSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5nZXQoKSwgdGVtcERzdC5nZXQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0
LCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgfQpAQCAtMTU0OCw3ICsxNTU3LDggQEAgUmVnaXN0
ZXJJRCogQ29uc3REZWNsTm9kZTo6ZW1pdENvZGVTaW5nbGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvcikKICAgICAgICAgaWYgKCFtX2luaXQpCiAgICAgICAgICAgICByZXR1cm4gbG9jYWwu
Z2V0KCk7CiAKLSAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkgeworICAgICAgICAvL1RP
RE86IG1heWJlIHB1dCBlbWl0RXhwcmVzc2lvbkluZm8gaGVyZQorICAgICAgICBpZiAobG9jYWwu
aXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci5pc0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsaW5nKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHRl
bXBEc3QuZ2V0KCksIG1faW5pdCk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRN
b3ZlKGxvY2FsLmdldCgpLCB0ZW1wRHN0LmdldCgpKTsKQEAgLTE4NzEsNyArMTg4MSw4IEBAIHZv
aWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudCA9IHNpbXBsZUJp
bmRpbmctPmJvdW5kUHJvcGVydHkoKTsKICAgICAgICAgICAgIExvY2FsIGxvY2FsID0gZ2VuZXJh
dG9yLmxvY2FsKGlkZW50KTsKICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGxvY2FsLmdldCgp
OwotICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwgbG9jYWwuaXNDYXB0dXJlZCgpKQor
ICAgICAgICAgICAgLy9UT0RPOiBtYXliZSBlbWl0IGV4cHJlc3Npb24gaW5mbz8/PworICAgICAg
ICAgICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwgbG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRv
ci5pc0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpCiAgICAgICAgICAgICAg
ICAgZ290byBnZW5lcmljQmluZGluZzsKICAgICAgICAgICAgIGV4cGVjdGVkU3Vic2NyaXB0ID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1l
KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5wdXNoT3B0aW1pc2VkRm9ySW4oZXhwZWN0ZWRTdWJz
Y3JpcHQuZ2V0KCksIGl0ZXIuZ2V0KCksIGkuZ2V0KCksIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCmluZGV4IGFiNWNhODcuLjA4NWEzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBA
IC0zNDgsNyArMzQ4LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKik7CiAj
ZW5kaWYKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm9m
aWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFZhcmlhYmxlc0luQ29kZUJsb2NrR2l2ZW5S
YW5nZShFeGVjU3RhdGUqKTsKIAogc3RydWN0IFNjcmlwdCB7CkBAIC00OTMsNyArNDkyLDYgQEAg
cHJvdGVjdGVkOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUltcHVyZUdldHRlciIs
IGZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVyLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0s
ICJzZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSIsIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdh
dGUsIDIpOwogCi0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicHJvZmlsZVR5cGVzV2l0aEhpZ2hG
aWRlbGl0eSIsIGZ1bmN0aW9uUHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSwgMCk7CiAgICAg
ICAgIGFkZEZ1bmN0aW9uKHZtLCAicHJpbnRWYXJpYWJsZXNJbkNvZGVCbG9ja0dpdmVuUmFuZ2Ui
LCBmdW5jdGlvblByaW50VmFyaWFibGVzSW5Db2RlQmxvY2tHaXZlblJhbmdlLCA0KTsKICAgICAg
ICAgCiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxF
eGVjKCksIDApOwpAQCAtOTIwLDI1ICs5MTgsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKE1hc3F1ZXJhZGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKSk7CiB9CiAKLQotY2xhc3MgSGlnaEZpZGVsaXR5VHlwZUZ1bmN0
b3IgewotcHVibGljOgotCi0gICAgYm9vbCBvcGVyYXRvcigpKENvZGVCbG9jayogY29kZUJsb2Nr
KQotICAgIHsKLSAgICAgICAgY29kZUJsb2NrLT5kdW1wUmVnaXN0ZXJJbmZvRm9yRGVidWdnaW5n
KCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19OwotCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgSGlnaEZpZGVsaXR5VHlwZUZ1bmN0b3IgZnVuY3RvcjsKLSAgICAv
L25vdGUsIHRoaXMgaXNuJ3QgZ29pbmcgdGhyb3VnaCBhbGwgZXhlY3V0YWJsZXMuIEp1c3QgdGhv
c2UgdGhhdCBoYXZlIGJlZW4gZXhlY3V0ZWQgKGkuZSwgdHVybmVkIGludG8gY29kZWJsb2NrcykK
LSAgICBleGVjLT5oZWFwKCktPmZvckVhY2hDb2RlQmxvY2soZnVuY3Rvcik7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblByaW50VmFyaWFibGVzSW5Db2RlQmxvY2tHaXZlblJhbmdlKEV4
ZWNTdGF0ZSopCiB7CiAgICAgLy9TY3JpcHRFeGVjdXRhYmxlKiBlbmNsb3NpbmdFeGVjdXRhYmxl
ID0gZXhlYy0+dm0oKS5maW5kU21hbGxlc3RFbmNsb3NpbmdTY3JpcHRFeGVjdXRhYmxlKGV4ZWMt
PmFyZ3VtZW50KDApLmFzVUludDMyKCksIGV4ZWMtPmFyZ3VtZW50KDEpLmFzVUludDMyKCksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA4
M2YyMTg0Li5mYmJlN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTUzLDYgKzUzLDggQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFt
ZS5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmlu
dFN0cmVhbS5oPgogCkBAIC0xNjgsNiArMTcwLDI5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgTExJbnQgewogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBfX3JjZl9leGVjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCisjZGVm
aW5lIExMSU5UX1BVVF9UT19TQ09QRV9DT01NT04oKSBcCisgICAgTExJTlRfQkVHSU4oKTsgXAor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7IFwKKyAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJh
bmQpOyBcCisgICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJTlRfT1Ao
MSkuanNWYWx1ZSgpKTsgXAorICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKTsgXAorICAgIFJlc29sdmVNb2RlQW5kVHlwZSBtb2RlQW5kVHlwZSA9IFJlc29sdmVNb2Rl
QW5kVHlwZShwY1s0XS51Lm9wZXJhbmQpOyBcCisgXAorICAgIGlmIChtb2RlQW5kVHlwZS5tb2Rl
KCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFzY29wZS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQp
KSBcCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhl
YywgaWRlbnQpKTsgXAorIFwKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSk7IFwKKyAgICBzY29wZS0+bWV0aG9kVGFibGUoKS0+cHV0KHNj
b3BlLCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOyBcCisgXAorICAgIC8qIENvdmVycyBpbXBs
aWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhl
Y3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLiov
ICBcCisgICAgaWYgKG1vZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBtb2Rl
QW5kVHlwZS50eXBlKCkgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7
IFwKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiBzbG90LmJhc2UoKSA9PSBz
Y29wZSAmJiBzY29wZS0+c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUo
KSkgeyBcCisgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjb2RlQmxvY2st
Pm1fbG9jayk7IFwKKyAgICAgICAgICAgIHBjWzVdLnUuc3RydWN0dXJlLnNldChleGVjLT52bSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzY29wZS0+c3RydWN0dXJlKCkpOyBcCisg
ICAgICAgICAgICBwY1s2XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOyBcCisgICAg
ICAgIH0gXAorICAgIH0gXAorCiAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9t
V2hlcmUsIGludCBvcGVyYW5kKQogewpAQCAtNTM3LDcgKzU2MiwxOSBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbmV3X3JlZ2V4cCkKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwotICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5yZWNvcmRUeXBlRm9yUmVnaXN0ZXIoVmlydHVh
bFJlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCksIExMSU5UX09QKDEpLmpzVmFsdWUoKSwgZXhlYyk7
CisgICAgTG9jYXRpb24qIGxvY2F0aW9uID0gcGNbMl0udS5sb2NhdGlvbjsKKyAgICBKU1ZhbHVl
IHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4qIHB0ciA9
IDA7CisgICAgLy9TdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmU7CisgICAgaWYgKHYuaXNDZWxs
KCkpIHsKKyAgICAgICAgcHRyID0gbmV3IFN0cm9uZzxTdHJ1Y3R1cmU+KCk7CisgICAgICAgIHB0
ci0+c2V0KHZtLCB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CisgICAgfQorICAgIC8vcHJpbnRm
KCJwdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOiAnJXMnIHVuaXF1ZVZhcmlhYmxlSUQ6JyVsbHUn
LCBsaW5lOicldScsIGNvbHVtbjonJXUnIFxuIiwgaWRlbnQuYXNjaWkoKS5kYXRhKCksIGxvY2F0
aW9uLT5nbG9iYWxWYXJpYWJsZUlELCBsb2NhdGlvbi0+bGluZSwgbG9jYXRpb24tPmNvbHVtbik7
CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPnJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9u
KHYsIGxvY2F0aW9uLCBwdHIpOworICAgIC8vU3RyaW5nIHZhcihleGVjLT5jb2RlQmxvY2soKS0+
bmFtZUZvclJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlcikpOworICAgIC8vQ29uY3VycmVudEpJVExv
Y2tlciBsb2NrZXIoZXhlYy0+Y29kZUJsb2NrKCktPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7Cisg
ICAgLy9wcmludGYoInByb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5IGV4ZWN1dGluZyBh
c3NpZ24gdG8gZ2xvYmFsVmFyaWFibGVJRDonJWxsdScsIGxpbmU6JyV1JywgY29sdW1uOicldSdc
biIsIGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlELCBsb2NhdGlvbi0+bGluZSwgbG9jYXRpb24t
PmNvbHVtbik7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0KIApAQCAtNjMzLDYgKzY3MCw4IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCiAgICAgTExJTlRfQkVH
SU4oKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUu
b3BlcmFuZCk7CisgICAgaWYgKGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVS
TCgpID09IFN0cmluZygiZmlsZTovLy9Wb2x1bWVzL0RhdGEvdGVzdC5qcyIpKQorICAgICAgICBw
cmludGYoIlB1dCBieSBpZDonJXMnXG4iLCBpZGVudC5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOwogICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJs
b2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKQEAgLTE0MzUsMjkgKzE0NzQsNTAgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tX3Njb3BlKQogICAgIExMSU5UX1JFVFVSTihz
bG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSk7CiB9CiAKKwogTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3B1dF90b19zY29wZSkKIHsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Ci0gICAgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKLSAgICBK
U09iamVjdCogc2NvcGUgPSBqc0Nhc3Q8SlNPYmplY3QqPihMTElOVF9PUCgxKS5qc1ZhbHVlKCkp
OwotICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKLSAgICBSZXNv
bHZlTW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUgPSBSZXNvbHZlTW9kZUFuZFR5cGUocGNbNF0udS5v
cGVyYW5kKTsKLQotICAgIGlmIChtb2RlQW5kVHlwZS5tb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5k
ICYmICFzY29wZS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKQotICAgICAgICBMTElOVF9USFJP
VyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Ci0KLSAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7Ci0gICAg
c2NvcGUtPm1ldGhvZFRhYmxlKCktPnB1dChzY29wZSwgZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90
KTsKKyAgICAvL0xMSU5UX0JFR0lOKCk7CisgICAgLy9Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIC8vY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICAvL0pTT2JqZWN0KiBzY29wZSA9
IGpzQ2FzdDxKU09iamVjdCo+KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgLy9KU1ZhbHVl
IHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgLy9SZXNvbHZlTW9kZUFuZFR5
cGUgbW9kZUFuZFR5cGUgPSBSZXNvbHZlTW9kZUFuZFR5cGUocGNbNF0udS5vcGVyYW5kKTsKKwor
ICAgIC8vaWYgKG1vZGVBbmRUeXBlLm1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQgJiYgIXNjb3Bl
LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCkpCisgICAgLy8gICAgTExJTlRfVEhST1coY3JlYXRl
VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworCisgICAgLy9QdXRQcm9wZXJ0
eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgLy9zY29w
ZS0+bWV0aG9kVGFibGUoKS0+cHV0KHNjb3BlLCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwor
CisgICAgLy8vLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2luY2UgdGhleSBkb24ndCBleGlz
dCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0
aGVtIGF0IGNvbXBpbGUgdGltZS4KKyAgICAvL2lmIChtb2RlQW5kVHlwZS50eXBlKCkgPT0gR2xv
YmFsUHJvcGVydHkgfHwgbW9kZUFuZFR5cGUudHlwZSgpID09IEdsb2JhbFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrcykgeworICAgIC8vICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlUHV0KCkg
JiYgc2xvdC5iYXNlKCkgPT0gc2NvcGUgJiYgc2NvcGUtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eUFj
Y2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKKyAgICAvLyAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgIC8vICAgICAgICBwY1s1XS51LnN0cnVj
dHVyZS5zZXQoZXhlYy0+dm0oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc2NvcGUt
PnN0cnVjdHVyZSgpKTsKKyAgICAvLyAgICAgICAgcGNbNl0udS5vcGVyYW5kID0gc2xvdC5jYWNo
ZWRPZmZzZXQoKTsKKyAgICAvLyAgICB9CisgICAgLy99CisKKyAgICBMTElOVF9QVVRfVE9fU0NP
UEVfQ09NTU9OKCk7CisgICAgTExJTlRfRU5EKCk7Cit9CiAKLSAgICAvLyBDb3ZlcnMgaW1wbGlj
aXQgZ2xvYmFscy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1
dGUsIHdlIGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KLSAg
ICBpZiAobW9kZUFuZFR5cGUudHlwZSgpID09IEdsb2JhbFByb3BlcnR5IHx8IG1vZGVBbmRUeXBl
LnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKLSAgICAg
ICAgaWYgKHNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiBzbG90LmJhc2UoKSA9PSBzY29wZSAmJiBz
Y29wZS0+c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgewotICAg
ICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwot
ICAgICAgICAgICAgcGNbNV0udS5zdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHNjb3BlLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICBwY1s2
XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwotICAgICAgICB9CitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSkKK3sKKyAgICAv
LyBwdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlIHNjb3BlLCBpZCwgdmFsdWUsIFJlc29sdmVNb2Rl
QW5kVHlwZSwgU3RydWN0dXJlLCBPcGVyYW5kLCBMb2NhdGlvbioKKyAgICBMTElOVF9QVVRfVE9f
U0NPUEVfQ09NTU9OKCk7CisgICAgLy9UT0RPOiBtYXliZSBtYWtlIG93biBkaXNjcmV0ZSBmdW5j
aXRvbiBmb3IgcHJvZmlsaW5nIGNhc2Ugdy9vdXQgdGhpcyBpZiBzdGF0ZW1lbnQsIG1heWJlIG1h
a2UgYSBtYWNybyBzaGFyaW5nIGNvZGUgYmV0d2VlbiB0aGUgdHdvPworICAgIExvY2F0aW9uKiBs
b2NhdGlvbiA9IHBjWzddLnUubG9jYXRpb247CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCk7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4qIHB0ciA9IDA7CisgICAgaWYgKHYu
aXNDZWxsKCkpIHsKKyAgICAgICAgcHRyID0gbmV3IFN0cm9uZzxTdHJ1Y3R1cmU+KCk7CisgICAg
ICAgIHB0ci0+c2V0KHZtLCB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CiAgICAgfQorICAgIC8v
cHJpbnRmKCJwdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOiAnJXMnIHVuaXF1ZVZhcmlhYmxlSUQ6
JyVsbHUnLCBsaW5lOicldScsIGNvbHVtbjonJXUnIFxuIiwgaWRlbnQuYXNjaWkoKS5kYXRhKCks
IGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlELCBsb2NhdGlvbi0+bGluZSwgbG9jYXRpb24tPmNv
bHVtbik7CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPnJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxv
Y2F0aW9uKHYsIGxvY2F0aW9uLCBwdHIpOworICAgIGRlbGV0ZSBwdHI7CiAKICAgICBMTElOVF9F
TkQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
aW5kZXggYmVhMzgzZi4uYzVhM2RlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKQEAgLTcwLDkgKzcwLDYgQEAgTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXkpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zaXplKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfbmV3X2FycmF5X2J1ZmZlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19yZWdleHApOwotLy9zYgotTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSk7Ci0vL3Ni
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hhc19pbnN0YW5j
ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luc3RhbmNlb2YpOwog
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpOwpAQCAtMTI3
LDYgKzEyNCw4IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaGFuZGxl
X2V4Y2VwdGlvbik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29s
dmVfc2NvcGUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfZnJv
bV9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF90b19z
Y29wZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF90b19zY29w
ZV93aXRoX3Byb2ZpbGUpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9w
cm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0
dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZy
YW1lKikgV1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiBleHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJl
Z2lzdGVyKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDBiNjkxNjcuLjRmN2I4MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KQEAgLTEyMzIsOCArMTIzMiwxMSBAQCBlbmQKIF9sbGludF9vcF9pbml0X2dsb2JhbF9jb25z
dF9ub3A6CiAgICAgZGlzcGF0Y2goNSkKIAotI3NiCiBfbGxpbnRfb3BfcHJvZmlsZV90eXBlc193
aXRoX2hpZ2hfZmlkZWxpdHk6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJv
ZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkpCi0gICAgZGlzcGF0Y2goMikKLSNzYgorICAg
IGRpc3BhdGNoKDMpCisKK19sbGludF9vcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRf
dG9fc2NvcGVfd2l0aF9wcm9maWxlKQorICAgIGRpc3BhdGNoKDgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmlu
ZGV4IDMxODU5NDcuLjIzNTQ1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNDQwLDIzICsxNDQw
LDIzIEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKIAogCiBtYWNybyBwdXRCeUlk
KGdldFByb3BlcnR5U3RvcmFnZSkKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgd3JpdGVCYXJy
aWVyT25PcGVyYW5kcygxLCAzKQotICAgIGxvYWRpIDRbUENdLCB0MwotICAgIGxvYWRpIDE2W1BD
XSwgdDEKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAs
IC5vcFB1dEJ5SWRTbG93KQotICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBnZXRQcm9wZXJ0eVN0
b3JhZ2UoCi0gICAgICAgIHQwLAotICAgICAgICB0MywKLSAgICAgICAgbWFjcm8gKHByb3BlcnR5
U3RvcmFnZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgICAgICAgICAgbG9hZGkgMjBbUENdLCB0MQot
ICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHNjcmF0Y2gsIHQyKQot
ICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQx
XQotICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwg
dDFdCi0gICAgICAgICAgICBkaXNwYXRjaCg5KQotICAgICAgICBlbmQpCisgICAgI3RyYWNlRXhl
Y3V0aW9uKCkKKyAgICAjd3JpdGVCYXJyaWVyT25PcGVyYW5kcygxLCAzKQorICAgICNsb2FkaSA0
W1BDXSwgdDMKKyAgICAjbG9hZGkgMTZbUENdLCB0MQorICAgICNsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgICNsb2FkaSAx
MltQQ10sIHQyCisgICAgI2dldFByb3BlcnR5U3RvcmFnZSgKKyAgICAjICAgIHQwLAorICAgICMg
ICAgdDMsCisgICAgIyAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQorICAgICMg
ICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxLCAub3BQdXRCeUlkU2xv
dworICAgICMgICAgICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICAjICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCisgICAgIyAgICAgICAgc3RvcmVpIHNj
cmF0Y2gsIFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQorICAgICMgICAgICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQorICAgICMgICAgICAgIGRp
c3BhdGNoKDkpCisgICAgIyAgICBlbmQpCiAKICAgICAub3BQdXRCeUlkU2xvdzoKICAgICAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2J5X2lkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1R5cGVTZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhZmUyYzRlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9U
eXBlU2V0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlR5cGVTZXQuaCIKLQotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKLSNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLVR5
cGVTZXQ6OlR5cGVTZXQoKQotICAgIDogbV9zZWVuVHlwZXMoVHlwZU5vdGhpbmcpCi17Ci19Ci0K
LVJ1bnRpbWVUeXBlIFR5cGVTZXQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2KQot
ewotICAgIFJ1bnRpbWVUeXBlIHJldDsKLSAgICBpZiAodi5pc0Z1bmN0aW9uKCkpCi0gICAgICAg
IHJldCA9IFR5cGVGdW5jdGlvbjsKLSAgICBlbHNlIGlmICh2LmlzVW5kZWZpbmVkKCkpCi0gICAg
ICAgIHJldCA9IFR5cGVVbmRlZmluZWQ7Ci0gICAgZWxzZSBpZiAodi5pc051bGwoKSkKLSAgICAg
ICAgcmV0ID0gVHlwZU51bGw7Ci0gICAgZWxzZSBpZiAodi5pc0Jvb2xlYW4oKSkKLSAgICAgICAg
cmV0ID0gVHlwZUJvb2xlYW47Ci0gICAgZWxzZSBpZiAodi5pc1N0cmluZygpKQotICAgICAgICBy
ZXQgPSBUeXBlU3RyaW5nOwotICAgIGVsc2UgaWYgKHYuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0
ID0gVHlwZU51bWJlcjsKLSAgICBlbHNlIGlmICh2LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldCA9
IFR5cGVPYmplY3Q7Ci0gICAgZWxzZQotICAgICAgICBDUkFTSCgpOwotCi0gICAgcmV0dXJuIHJl
dDsKLX0KLQotdm9pZCBUeXBlU2V0OjphZGRUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2LCBFeGVjU3Rh
dGUqKQotewotICAgIFJ1bnRpbWVUeXBlIHQgPSBnZXRSdW50aW1lVHlwZUZvclZhbHVlKHYpOwot
ICAgIG1fc2VlblR5cGVzID0gbV9zZWVuVHlwZXMgfCB0OwotLy8gICAgaWYgKHQgPT0gVHlwZU9i
amVjdCAmJiB2LmlzQ2VsbCgpKSB7Ci0vLyAgICAgICAgaW50IHNwYWNlcyA9IDA7IAotLy8jZGVm
aW5lIFBSSU5UX1NQQUNFUygpIFwKLS8vICAgICAgICBkbyB7IFwKLS8vICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBzcGFjZXM7IGkrKykgcHJpbnRmKCIgIik7IFwKLS8vICAgICAgICB9
IHdoaWxlKDApCi0vLwotLy8gICAgICAgIHByaW50ZigiLS0tLS0tLS0tLS1cbiIpOwotLy8gICAg
ICAgIGZvciAoV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGN1cnJlbnRTdHJ1Y3R1cmUgPSB2LmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlQ2hhaW4oZXhlYyktPmhlYWQoKTsgKmN1cnJl
bnRTdHJ1Y3R1cmU7ICsrY3VycmVudFN0cnVjdHVyZSkgewotLy8gICAgICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmdldCgpOwotLy8gICAgICAgICAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotLy8gICAgICAgICAgICBzdHJ1
Y3R1cmUtPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKGV4ZWMtPnZtKCksIHByb3BlcnR5
TmFtZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwotLy8KLS8vICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDAsIHNpemUgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSA8IHNpemU7ICsr
aSkgewotLy8gICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lIG5hbWUgPSBwcm9wZXJ0eU5hbWVz
W2ldOwotLy8gICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogcHVibGljTmFtZSA9IG5hbWUucHVi
bGljTmFtZSgpOwotLy8gICAgICAgICAgICAgICAgUFJJTlRfU1BBQ0VTKCk7Ci0vLyAgICAgICAg
ICAgICAgICBwcmludGYoInByb3BlcnR5OiAnJXMnXG4iLCBwdWJsaWNOYW1lLT51dGY4KCkuZGF0
YSgpKTsgIAotLy8gICAgICAgICAgICB9Ci0vLwotLy8gICAgICAgICAgICBpZiAoKihjdXJyZW50
U3RydWN0dXJlICsgMSkpIHsKLS8vICAgICAgICAgICAgICAgIFBSSU5UX1NQQUNFUygpOwotLy8g
ICAgICAgICAgICAgICAgcHJpbnRmKCI9PiBnb2luZyB0byBwcm90b1xuIik7Ci0vLyAgICAgICAg
ICAgIH0KLS8vICAgICAgICAgICAgc3BhY2VzKz0yOwotLy8gICAgICAgIH0KLS8vICAgICAgICBw
cmludGYoIi0tLS0tLS0tLS0tXG4iKTsKLS8vICAgIH0KLX0KLQotdm9pZCBUeXBlU2V0OjptZXJn
ZVdpdGhUeXBlU2V0KGNvbnN0IFR5cGVTZXQmIG90aGVyKQotewotICAgIG1fc2VlblR5cGVzIHw9
IG90aGVyLm1fc2VlblR5cGVzOwotfQotCi1XVEY6OlN0cmluZyBUeXBlU2V0OjpzZWVuVHlwZXMo
KSAKLXsKLSAgICBXVEY6OlN0cmluZyBzZWVuKCIiKTsKLSAgICBpZiAobV9zZWVuVHlwZXMgJiBU
eXBlRnVuY3Rpb24pCi0gICAgICAgICBzZWVuLmFwcGVuZCgiRnVuY3Rpb24gIik7Ci0KLSAgICBp
ZiAobV9zZWVuVHlwZXMgJiBUeXBlVW5kZWZpbmVkKQotICAgICAgICAgc2Vlbi5hcHBlbmQoIlVu
ZGVmaW5lZCAiKTsKLQotICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdWxsKQotICAgICAgICAg
c2Vlbi5hcHBlbmQoIk51bGwgIik7Ci0KLSAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9vbGVh
bikKLSAgICAgICAgIHNlZW4uYXBwZW5kKCJCb29sZWFuICIpOwotCi0gICAgaWYgKG1fc2VlblR5
cGVzICYgVHlwZU51bWJlcikKLSAgICAgICAgIHNlZW4uYXBwZW5kKCJOdW1iZXIgIik7Ci0KLSAg
ICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlU3RyaW5nKQotICAgICAgICAgc2Vlbi5hcHBlbmQoIlN0
cmluZyAiKTsKLQotICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVPYmplY3QpCi0gICAgICAgICBz
ZWVuLmFwcGVuZCgiT2JqZWN0ICIpOwotCi0gICAgcmV0dXJuIHNlZW47Ci19Ci0KLXZvaWQgVHlw
ZVNldDo6ZHVtcFNlZW5UeXBlcygpCi17Ci0gICAgcHJpbnRmKCIlcyIsIHNlZW5UeXBlcygpLmFz
Y2lpKCkuZGF0YSgpKTsKLSAgICBwcmludGYoIlxuIik7Ci19Ci0KLQotfSAvL25hbWVzcGFjZSBK
U0MKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1R5cGVTZXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9UeXBlU2V0LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNjN2UyZTQuLjAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1R5cGVTZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFR5cGVTZXRfaAotI2RlZmluZSBUeXBlU2V0X2gKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotICAgIGNsYXNzIEpTVmFsdWU7Ci0gICAg
Y2xhc3MgRXhlY1N0YXRlOwotCi0gICAgZW51bSBSdW50aW1lVHlwZSB7Ci0gICAgICAgIFR5cGVO
b3RoaW5nICAgPSAweDAsCi0gICAgICAgIFR5cGVGdW5jdGlvbiAgPSAweDEsCi0gICAgICAgIFR5
cGVVbmRlZmluZWQgPSAweDIsCi0gICAgICAgIFR5cGVOdWxsICAgICAgPSAweDQsCi0gICAgICAg
IFR5cGVCb29sZWFuICAgPSAweDgsCi0gICAgICAgIFR5cGVOdW1iZXIgICAgPSAweDEwLAotICAg
ICAgICBUeXBlU3RyaW5nICAgID0gMHgyMCwKLSAgICAgICAgVHlwZU9iamVjdCAgICA9IDB4NDAK
LSAgICB9OwotCi0KLQotY2xhc3MgVHlwZVNldCB7Ci0KLXB1YmxpYzoKLSAgICBUeXBlU2V0KCk7
Ci0gICAgdm9pZCBhZGRUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2LCBFeGVjU3RhdGUqKTsKLSAgICB2
b2lkIG1lcmdlV2l0aFR5cGVTZXQoY29uc3QgVHlwZVNldCYpOwotICAgIHN0YXRpYyBSdW50aW1l
VHlwZSBnZXRSdW50aW1lVHlwZUZvclZhbHVlKEpTVmFsdWUpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIFdURjo6U3RyaW5nIHNlZW5UeXBlcygpOwotCi1wcml2YXRlOgotICAgIHVpbnQzMl90IG1f
c2VlblR5cGVzOwotICAgIHZvaWQgZHVtcFNlZW5UeXBlcygpOwotCi19OwotCi0KLX0gLy9uYW1l
c3BhY2UgSlNDCi0KLSNlbmRpZiAvL1R5cGVTZXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Jlc3VsdHMvLnJ1bm5lci9NYWtlZmlsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXN1bHRzLy5ydW5uZXIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDM0ZjAyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
ZXN1bHRzLy5ydW5uZXIvTWFrZWZpbGUKQEAgLTAsMCArMSBAQAorYWxsOiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXN1bHRzLy52bS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdv
cmsvUmVzb3VyY2VzL2pzYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXN1bHRzLy52bS9KYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmsvUmVzb3VyY2VzL2pzYwpuZXcgZmlsZSBtb2RlIDEyMDAwMApp
bmRleCAwMDAwMDAwLi43NDQ3ODBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Jlc3VsdHMvLnZtL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9SZXNvdXJjZXMvanNj
CkBAIC0wLDAgKzEgQEAKKy9Wb2x1bWVzL0RhdGEvV2ViS2l0L1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCmluZGV4IGRk
MTk3ZjMuLjk5ZGM3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcApAQCAtMzYsMjAgKzM2LDE0IEBA
IFN0cmluZyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldFR5cGVzRm9yVmFyaWFibGVJblJh
bmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwKICAgICBGdW5jdGlvbkJvdW5kYXJ5TWFwJiBmdW5jdGlv
bkJvdW5kYXJ5ID0gbV9pZFRvSGlzdG9yeU1hcC5maW5kKHNvdXJjZUlEKS0+dmFsdWU7CiAgICAg
TmVhcmVzdFRleHR1YWxCbG9jazxUeXBlQm91bmRhcnk+IG5lYXJlc3RCbG9jayhzdGFydExpbmUs
IHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHNvdXJjZUlEKTsKICAgICBmb3IgKGF1
dG8gaXRlciA9IGZ1bmN0aW9uQm91bmRhcnkuYmVnaW4oKSwgZW5kID0gZnVuY3Rpb25Cb3VuZGFy
eS5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBwcmludGYoIml0ZXJcbiIp
OwogICAgICAgICBUeXBlQm91bmRhcnkmIGJvdW5kYXJ5ID0gaXRlci0+dmFsdWU7CiAgICAgICAg
IG5lYXJlc3RCbG9jay51cGRhdGUoYm91bmRhcnkubV9zdGFydExpbmUsIGJvdW5kYXJ5Lm1fc3Rh
cnRDb2x1bW4sIGJvdW5kYXJ5Lm1fZW5kTGluZSwgYm91bmRhcnkubV9lbmRDb2x1bW4sIGJvdW5k
YXJ5Lm1fc291cmNlSUQsIGJvdW5kYXJ5KTsKICAgICB9CiAKICAgICBpZiAobmVhcmVzdEJsb2Nr
LmZvdW5kQVRhcmdldCgpKSB7Ci0gICAgICAgIHByaW50ZigiZm91bmQgYSB0YXJnZXQgaW4gZ2V0
VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2VcbiIpOwogICAgICAgICBUeXBlQm91bmRhcnkmIGJvdW5k
YXJ5ID0gbmVhcmVzdEJsb2NrLmJlc3RUYXJnZXQoKTsKICAgICAgICAgU3RyaW5nIHMoYm91bmRh
cnkudHlwZXNGb3JWYXJpYWJsZSh2YXJpYWJsZU5hbWUpLnNlZW5UeXBlcygpKTsKLSAgICAgICAg
cHJpbnRmKCJ2YXJuYW1lPSclcycsIHR5cGVzPSclcydcbiIsIHZhcmlhYmxlTmFtZS5hc2NpaSgp
LmRhdGEoKSwgcy5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIC8vU3RyaW5nIHMoYm91bmRhcnku
dHlwZXNGb3JWYXJpYWJsZSgiYmF6Iikuc2VlblR5cGVzKCkpOwogICAgICAgICByZXR1cm4gczsK
LSAgICB9IGVsc2UgewotICAgICAgICBwcmludGYoImRpZG50IGZpbmQgYSB0YXJnZXQgaW4gZ2V0
VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2VcbiIpOwogICAgIH0gCiAKICAgICByZXR1cm4gIiI7CkBA
IC0xMDksMzEgKzEwMywzNyBAQCBUeXBlQm91bmRhcnk6OlR5cGVCb3VuZGFyeShTY3JpcHRFeGVj
dXRhYmxlKiBlKQogCiBUeXBlU2V0JiBUeXBlQm91bmRhcnk6OnR5cGVzRm9yVmFyaWFibGUoY29u
c3QgU3RyaW5nIHZhcikKIHsKKyAgICBhdXRvIGl0ZXIgPSBtX3ZhcmlhYmxlVG9UeXBlU2V0TWFw
LmZpbmQodmFyKTsKKyAgICBhdXRvIGVuZCA9IG1fdmFyaWFibGVUb1R5cGVTZXRNYXAuZW5kKCk7
CisgICAgaWYgKGl0ZXIgIT0gZW5kKQorICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CisKKyAg
ICAvL3ByaW50ZigiTm8gdmFyaWFibGUgbmFtZWQgJyVzJyB3aGVuIHBpbmdpbmcgdHlwZXNcbiIs
IHZhci5hc2NpaSgpLmRhdGEoKSk7CisgICAgVHlwZVNldCB0OworICAgIG1fdmFyaWFibGVUb1R5
cGVTZXRNYXAuc2V0KHZhciwgdCk7CiAgICAgcmV0dXJuIG1fdmFyaWFibGVUb1R5cGVTZXRNYXAu
ZmluZCh2YXIpLT52YWx1ZTsKIH0KIAotdm9pZCBUeXBlQm91bmRhcnk6Om1lcmdlV2l0aFR5cGVI
aXN0b3J5KENvZGVCbG9jayogY29kZUJsb2NrKQordm9pZCBUeXBlQm91bmRhcnk6Om1lcmdlV2l0
aFR5cGVIaXN0b3J5KENvZGVCbG9jayopCiB7CiAgICAgLy9UT0RPOiBtYXliZSBjb21wdXRlIGlu
dmVyc2Ugc3ltYm9sIHRhYmxlLCBtYWtpbmcgdGhpcyBPKDJuKSBpbnN0ZWFkIG9mIE8obl4yKQog
ICAgIC8vICAgICAgIGJ1dCwgYXJlIHRoZSBzY29wZSBzaXplcyBsYXJnZSBlbm91Z2ggdG8ganVz
dGlmeSB0aGlzPwogICAgIAotICAgIE9wZXJhbmRzPFR5cGVTZXQ+JiB0eXBlSGlzdG9yeSA9IGNv
ZGVCbG9jay0+Z2V0SGlnaEZpZGVsaXR5VHlwZUhpc3RvcnkoKTsKLSAgICBmb3IgKGludCBpID0g
MCwgc2l6ZSA9IHR5cGVIaXN0b3J5LnNpemUoKTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBp
bnQgcmVnSWQgPSB0eXBlSGlzdG9yeS5vcGVyYW5kRm9ySW5kZXgoaSk7Ci0gICAgICAgIFZpcnR1
YWxSZWdpc3RlciByZWcocmVnSWQpOwotICAgICAgICBTdHJpbmcgdmFyTmFtZSA9IGNvZGVCbG9j
ay0+bmFtZUZvclJlZ2lzdGVyKHJlZyk7Ci0gICAgICAgIGlmICghdmFyTmFtZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIFR5cGVTZXQmIHR5cGVTZXQgPSB0eXBlSGlzdG9yeS5hdChpKTsKLSAg
ICAgICAgICAgIGF1dG8gaXRlciA9IG1fdmFyaWFibGVUb1R5cGVTZXRNYXAuZmluZCh2YXJOYW1l
KTsKLSAgICAgICAgICAgIGF1dG8gZW5kID0gbV92YXJpYWJsZVRvVHlwZVNldE1hcC5lbmQoKTsK
LSAgICAgICAgICAgIGlmIChpdGVyICE9IGVuZCkgCi0gICAgICAgICAgICAgICAgdHlwZVNldC5t
ZXJnZVdpdGhUeXBlU2V0KGl0ZXItPnZhbHVlKTsKLSAgICAgICAgICAgIG1fdmFyaWFibGVUb1R5
cGVTZXRNYXAuc2V0KHZhck5hbWUsIHR5cGVTZXQpOwotICAgICAgICAgICAgU3RyaW5nIHNlZW4o
dHlwZVNldC5zZWVuVHlwZXMoKSk7Ci0gICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKS0+c291cmNlVVJMKCkgPT0gImZpbGU6Ly8vVm9sdW1lcy9kYXRhL3Rlc3QuanMi
KQotICAgICAgICAgICAgICAgIHByaW50ZigiTWVyZ2luVHlwZXM6IHZhcj0nJXMnLCB0eXBlcz0n
JXMnXG4iLCB2YXJOYW1lLmFzY2lpKCkuZGF0YSgpLCBzZWVuLmFzY2lpKCkuZGF0YSgpKTsKLSAg
ICAgICAgfQotICAgIH0KKyAgICAvL2ZvciAoaW50IGkgPSAwLCBzaXplID0gdHlwZUhpc3Rvcnku
c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgLy8gICAgaW50IHJlZ0lkID0gdHlwZUhpc3Rv
cnkub3BlcmFuZEZvckluZGV4KGkpOworICAgIC8vICAgIFZpcnR1YWxSZWdpc3RlciByZWcocmVn
SWQpOworICAgIC8vICAgIFN0cmluZyB2YXJOYW1lID0gY29kZUJsb2NrLT5uYW1lRm9yUmVnaXN0
ZXIocmVnKTsKKyAgICAvLyAgICBpZiAoIXZhck5hbWUuaXNFbXB0eSgpKSB7CisgICAgLy8gICAg
ICAgIFR5cGVTZXQmIHR5cGVTZXQgPSB0eXBlSGlzdG9yeS5hdChpKTsKKyAgICAvLyAgICAgICAg
YXV0byBpdGVyID0gbV92YXJpYWJsZVRvVHlwZVNldE1hcC5maW5kKHZhck5hbWUpOworICAgIC8v
ICAgICAgICBhdXRvIGVuZCA9IG1fdmFyaWFibGVUb1R5cGVTZXRNYXAuZW5kKCk7CisgICAgLy8g
ICAgICAgIGlmIChpdGVyICE9IGVuZCkgCisgICAgLy8gICAgICAgICAgICB0eXBlU2V0Lm1lcmdl
V2l0aFR5cGVTZXQoaXRlci0+dmFsdWUpOworICAgIC8vICAgICAgICBtX3ZhcmlhYmxlVG9UeXBl
U2V0TWFwLnNldCh2YXJOYW1lLCB0eXBlU2V0KTsKKyAgICAvLyAgICB9IGVsc2UgeworICAgIC8v
ICAgICAgICBwcmludGYoIiIpOworICAgIC8vICAgIH0KKyAgICAvL30KIH0KIAogU3RyaW5nIFR5
cGVCb3VuZGFyeTo6Ym91bmRhcnlIYXNoRm9yQ29kZUJsb2NrKENvZGVCbG9jayogY29kZUJsb2Nr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuaAppbmRleCAzOGMxMmM0Li43NDMxYTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIu
aApAQCAtOTAsNiArOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV90YXJnZXRFbmRMaW5lKGVu
ZExpbmUpCiAgICAgICAgICwgbV90YXJnZXRFbmRDb2x1bW4oZW5kQ29sdW1uKSAKICAgICAgICAg
LCBtX3NvdXJjZUlEKHNvdXJjZUlEKQorICAgICAgICAsIG1fZm91bmRBVGFyZ2V0KGZhbHNlKQog
ICAgIHsKICAgICAgICAgLy9wcmludGYoIkZ1bmN0b3Igd2l0aCBzb3VyY2UgdXJsICclcydcbiIs
IG1fdXJsLmFzY2lpKCkuZGF0YSgpKTsKICAgICB9CkBAIC0xMjksNyArMTMwLDcgQEAgcHJpdmF0
ZToKIAogICAgIGludHB0cl90IG1fc291cmNlSUQ7CiAKLSAgICBib29sIG1fZm91bmRBVGFyZ2V0
ID0gZmFsc2U7CisgICAgYm9vbCBtX2ZvdW5kQVRhcmdldDsKICAgICBUIG1fdGFyZ2V0OwogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAppbmRleCBjOWU4MTM0Li4xYjMy
OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0yNjksNyAr
MjY5LDkgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihib29sLCBk
aXNhYmxlR0MsIGZhbHNlKSBcCiAgICAgdih1bnNpZ25lZCwgZ2NNYXhIZWFwU2l6ZSwgMCkgXAog
ICAgIHYoYm9vbCwgcmVjb3JkR0NQYXVzZVRpbWVzLCBmYWxzZSkgXAotICAgIHYoYm9vbCwgbG9n
SGVhcFN0YXRpc3RpY3NBdEV4aXQsIGZhbHNlKQorICAgIHYoYm9vbCwgbG9nSGVhcFN0YXRpc3Rp
Y3NBdEV4aXQsIGZhbHNlKSBcCisgICAgdihib29sLCBwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVs
aXR5LCBmYWxzZSkKKyAgICAKIAogY2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggZjYwYzg2YS4uOTU1
YTZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNw
cApAQCAtNDQsNiArNDQsNyBAQCBTeW1ib2xUYWJsZUVudHJ5JiBTeW1ib2xUYWJsZUVudHJ5Ojpj
b3B5U2xvdyhjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikKICAgICBGYXRFbnRyeSogbmV3
RmF0RW50cnkgPSBuZXcgRmF0RW50cnkoKm90aGVyLmZhdEVudHJ5KCkpOwogICAgIGZyZWVGYXRF
bnRyeSgpOwogICAgIG1fYml0cyA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4obmV3RmF0RW50cnkp
OworICAgIG1fdW5pcXVlSUQgPSBvdGhlci5tX3VuaXF1ZUlEOwogICAgIHJldHVybiAqdGhpczsK
IH0KIApAQCAtMTQ5LDcgKzE1MCw4IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVD
YXB0dXJlZE5hbWVzKFZNJiB2bSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZXN1
bHQtPm1fbWFwLmFkZCgKICAgICAgICAgICAgIGl0ZXItPmtleSwKLSAgICAgICAgICAgIFN5bWJv
bFRhYmxlRW50cnkoaXRlci0+dmFsdWUuZ2V0SW5kZXgoKSwgaXRlci0+dmFsdWUuZ2V0QXR0cmli
dXRlcygpKSk7CisgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KGl0ZXItPnZhbHVlKSk7Cisg
ICAgICAgICAgICAvL1N5bWJvbFRhYmxlRW50cnkoaXRlci0+dmFsdWUuZ2V0SW5kZXgoKSwgaXRl
ci0+dmFsdWUuZ2V0QXR0cmlidXRlcygpKSk7CiAgICAgfQogICAgIAogICAgIGlmIChtX3Nsb3dB
cmd1bWVudHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5o
CmluZGV4IGRkMjg5Y2QuLjlmNTBmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuaApAQCAtMTcyLDYgKzE3Miw3IEBAIHN0cnVjdCBTeW1ib2xUYWJsZUVu
dHJ5IHsKICAgICAgICAgICAgIHJldHVybiBjb3B5U2xvdyhvdGhlcik7CiAgICAgICAgIGZyZWVG
YXRFbnRyeSgpOwogICAgICAgICBtX2JpdHMgPSBvdGhlci5tX2JpdHM7CisgICAgICAgIG1fdW5p
cXVlSUQgPSBvdGhlci5tX3VuaXF1ZUlEOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQog
CkBAIC0yMzYsNiArMjM3LDEyIEBAIHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5IHsKICAgICAgICAg
bm90aWZ5V3JpdGVTbG93KHZtLCB2YWx1ZSk7CiAgICAgfQogCisgICAgdm9pZCBzZXRVbmlxdWVJ
RCh1aW50NjRfdCBpZCkgeworICAgICAgICBtX3VuaXF1ZUlEID0gaWQ7CisgICAgfQorCisgICAg
dWludDY0X3QgdW5pcXVlSUQoKSBjb25zdCB7IHJldHVybiBtX3VuaXF1ZUlEOyB9CisKIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IFNsaW1GbGFnID0gMHgxOwogICAgIHN0YXRp
YyBjb25zdCBpbnRwdHJfdCBSZWFkT25seUZsYWcgPSAweDI7CkBAIC0zMjUsNiArMzMyLDcgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICBpbnRwdHJfdCBtX2JpdHM7CisgICAgdWludDY0X3QgbV91
bmlxdWVJRDsKIH07CiAKIHN0cnVjdCBTeW1ib2xUYWJsZUluZGV4SGFzaFRyYWl0cyA6IEhhc2hU
cmFpdHM8U3ltYm9sVGFibGVFbnRyeT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlU2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzdhNjI3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5j
cHAKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVHlwZVNldC5o
IgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworVHlwZVNldDo6VHlwZVNldCgpCisgICAg
OiBtX3NlZW5UeXBlcyhUeXBlTm90aGluZykKK3sKK30KKworUnVudGltZVR5cGUgVHlwZVNldDo6
Z2V0UnVudGltZVR5cGVGb3JWYWx1ZShKU1ZhbHVlIHYpCit7CisgICAgUnVudGltZVR5cGUgcmV0
OworICAgIGlmICh2LmlzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0ID0gVHlwZUZ1bmN0aW9uOwor
ICAgIGVsc2UgaWYgKHYuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0ID0gVHlwZVVuZGVmaW5l
ZDsKKyAgICBlbHNlIGlmICh2LmlzTnVsbCgpKQorICAgICAgICByZXQgPSBUeXBlTnVsbDsKKyAg
ICBlbHNlIGlmICh2LmlzQm9vbGVhbigpKQorICAgICAgICByZXQgPSBUeXBlQm9vbGVhbjsKKyAg
ICBlbHNlIGlmICh2LmlzU3RyaW5nKCkpCisgICAgICAgIHJldCA9IFR5cGVTdHJpbmc7CisgICAg
ZWxzZSBpZiAodi5pc051bWJlcigpKQorICAgICAgICByZXQgPSBUeXBlTnVtYmVyOworICAgIGVs
c2UgaWYgKHYuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0ID0gVHlwZU9iamVjdDsKKyAgICBlbHNl
CisgICAgICAgIENSQVNIKCk7CisKKyAgICByZXR1cm4gcmV0OworfQorCisvL3N0cnVjdHVyZSBt
YXkgYmUgbnVsbAordm9pZCBUeXBlU2V0OjphZGRUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2LCBTdHJ1
Y3R1cmUqKQoreworICAgIFJ1bnRpbWVUeXBlIHQgPSBnZXRSdW50aW1lVHlwZUZvclZhbHVlKHYp
OworICAgIG1fc2VlblR5cGVzID0gbV9zZWVuVHlwZXMgfCB0OworLy8gICAgaWYgKHQgPT0gVHlw
ZU9iamVjdCAmJiB2LmlzQ2VsbCgpKSB7CisvLyAgICAgICAgaW50IHNwYWNlcyA9IDA7IAorLy8j
ZGVmaW5lIFBSSU5UX1NQQUNFUygpIFwKKy8vICAgICAgICBkbyB7IFwKKy8vICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBzcGFjZXM7IGkrKykgcHJpbnRmKCIgIik7IFwKKy8vICAgICAg
ICB9IHdoaWxlKDApCisvLworLy8gICAgICAgIHByaW50ZigiLS0tLS0tLS0tLS1cbiIpOworLy8g
ICAgICAgIGZvciAoV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGN1cnJlbnRTdHJ1Y3R1cmUgPSB2
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlQ2hhaW4oZXhlYyktPmhlYWQoKTsgKmN1
cnJlbnRTdHJ1Y3R1cmU7ICsrY3VycmVudFN0cnVjdHVyZSkgeworLy8gICAgICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPmdldCgpOworLy8gICAgICAgICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOworLy8gICAgICAgICAgICBz
dHJ1Y3R1cmUtPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKGV4ZWMtPnZtKCksIHByb3Bl
cnR5TmFtZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworLy8KKy8vICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSA8IHNpemU7
ICsraSkgeworLy8gICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lIG5hbWUgPSBwcm9wZXJ0eU5h
bWVzW2ldOworLy8gICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogcHVibGljTmFtZSA9IG5hbWUu
cHVibGljTmFtZSgpOworLy8gICAgICAgICAgICAgICAgUFJJTlRfU1BBQ0VTKCk7CisvLyAgICAg
ICAgICAgICAgICBwcmludGYoInByb3BlcnR5OiAnJXMnXG4iLCBwdWJsaWNOYW1lLT51dGY4KCku
ZGF0YSgpKTsgIAorLy8gICAgICAgICAgICB9CisvLworLy8gICAgICAgICAgICBpZiAoKihjdXJy
ZW50U3RydWN0dXJlICsgMSkpIHsKKy8vICAgICAgICAgICAgICAgIFBSSU5UX1NQQUNFUygpOwor
Ly8gICAgICAgICAgICAgICAgcHJpbnRmKCI9PiBnb2luZyB0byBwcm90b1xuIik7CisvLyAgICAg
ICAgICAgIH0KKy8vICAgICAgICAgICAgc3BhY2VzKz0yOworLy8gICAgICAgIH0KKy8vICAgICAg
ICBwcmludGYoIi0tLS0tLS0tLS0tXG4iKTsKKy8vICAgIH0KK30KKwordm9pZCBUeXBlU2V0Ojpt
ZXJnZVdpdGhUeXBlU2V0KGNvbnN0IFR5cGVTZXQmIG90aGVyKQoreworICAgIG1fc2VlblR5cGVz
IHw9IG90aGVyLm1fc2VlblR5cGVzOworfQorCitXVEY6OlN0cmluZyBUeXBlU2V0OjpzZWVuVHlw
ZXMoKSAKK3sKKyAgICBXVEY6OlN0cmluZyBzZWVuKCIiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMg
JiBUeXBlRnVuY3Rpb24pCisgICAgICAgICBzZWVuLmFwcGVuZCgiRnVuY3Rpb24gIik7CisKKyAg
ICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlVW5kZWZpbmVkKQorICAgICAgICAgc2Vlbi5hcHBlbmQo
IlVuZGVmaW5lZCAiKTsKKworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdWxsKQorICAgICAg
ICAgc2Vlbi5hcHBlbmQoIk51bGwgIik7CisKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9v
bGVhbikKKyAgICAgICAgIHNlZW4uYXBwZW5kKCJCb29sZWFuICIpOworCisgICAgaWYgKG1fc2Vl
blR5cGVzICYgVHlwZU51bWJlcikKKyAgICAgICAgIHNlZW4uYXBwZW5kKCJOdW1iZXIgIik7CisK
KyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlU3RyaW5nKQorICAgICAgICAgc2Vlbi5hcHBlbmQo
IlN0cmluZyAiKTsKKworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVPYmplY3QpCisgICAgICAg
ICBzZWVuLmFwcGVuZCgiT2JqZWN0ICIpOworCisgICAgcmV0dXJuIHNlZW47Cit9CisKK3ZvaWQg
VHlwZVNldDo6ZHVtcFNlZW5UeXBlcygpCit7CisgICAgcHJpbnRmKCIlcyIsIHNlZW5UeXBlcygp
LmFzY2lpKCkuZGF0YSgpKTsKKyAgICBwcmludGYoIlxuIik7Cit9CisKKworfSAvL25hbWVzcGFj
ZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNl
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZmY4YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgKQEAgLTAsMCArMSw2OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VHlwZVNldF9oCisjZGVmaW5lIFR5cGVTZXRfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisgICAgY2xhc3MgSlNWYWx1ZTsKKyAgICBjbGFz
cyBFeGVjU3RhdGU7CisgICAgY2xhc3MgU3RydWN0dXJlOworCisgICAgZW51bSBSdW50aW1lVHlw
ZSB7CisgICAgICAgIFR5cGVOb3RoaW5nICAgPSAweDAsCisgICAgICAgIFR5cGVGdW5jdGlvbiAg
PSAweDEsCisgICAgICAgIFR5cGVVbmRlZmluZWQgPSAweDIsCisgICAgICAgIFR5cGVOdWxsICAg
ICAgPSAweDQsCisgICAgICAgIFR5cGVCb29sZWFuICAgPSAweDgsCisgICAgICAgIFR5cGVOdW1i
ZXIgICAgPSAweDEwLAorICAgICAgICBUeXBlU3RyaW5nICAgID0gMHgyMCwKKyAgICAgICAgVHlw
ZU9iamVjdCAgICA9IDB4NDAKKyAgICB9OworCisKKworY2xhc3MgVHlwZVNldCB7CisKK3B1Ymxp
YzoKKyAgICBUeXBlU2V0KCk7CisgICAgdm9pZCBhZGRUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2LCBT
dHJ1Y3R1cmUqKTsKKyAgICB2b2lkIG1lcmdlV2l0aFR5cGVTZXQoY29uc3QgVHlwZVNldCYpOwor
ICAgIHN0YXRpYyBSdW50aW1lVHlwZSBnZXRSdW50aW1lVHlwZUZvclZhbHVlKEpTVmFsdWUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5nIHNlZW5UeXBlcygpOworCitwcml2YXRl
OgorICAgIHVpbnQzMl90IG1fc2VlblR5cGVzOworICAgIHZvaWQgZHVtcFNlZW5UeXBlcygpOwor
Cit9OworCisKK30gLy9uYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvL1R5cGVTZXRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDdlOTBkYjIuLjgzYTYwNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTIzMiw2ICsyMzIsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2NvZGVDYWNoZShDb2RlQ2Fj
aGU6OmNyZWF0ZSgpKQogICAgICwgbV9lbmFibGVkUHJvZmlsZXIobnVsbHB0cikKICAgICAsIG1f
YnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKKyAg
ICAsIG1fbmV4dFVuaXF1ZVZhcmlhYmxlSUQoMCkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJ
bnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRh
KCkuc3RhY2soKTsKQEAgLTk1NCw3ICs5NTUsNyBAQCBTdHJpbmcgVk06OmdldFR5cGVzRm9yVmFy
aWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sCiAg
ICAgaGVhcC5mb3JFYWNoQ29kZUJsb2NrKGZ1bmN0b3IpOwogCiAgICAgaWYgKGZ1bmN0b3IuZm91
bmRBQ29kZUJsb2NrKCkpIHsKLSAgICAgICAgcHJpbnRmKCJGb3VuZCBhIGNvZGUgYmxvY2sgaW4g
ZnVuY3RvclxuIik7CisgICAgICAgIC8vcHJpbnRmKCJGb3VuZCBhIGNvZGUgYmxvY2sgaW4gZnVu
Y3RvclxuIik7CiAgICAgICAgIG1lcmdlSGlnaEZpZGVsaXR5UHJvZmlsZVR5cGVzKGZ1bmN0b3Iu
YmVzdENvZGVCbG9jaygpKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAppbmRleCA2ZThkODA5Li5mMzZhMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTUxOSw2ICs1MTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RyaW5nIGdldFR5
cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5n
JiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOwogICAgICAgICB2b2lkIG1l
cmdlSGlnaEZpZGVsaXR5UHJvZmlsZVR5cGVzKENvZGVCbG9jayogY29kZUJsb2NrKTsKIAorICAg
ICAgICB1aW50NjRfdCBnZXROZXh0VW5pcXVlVmFyaWFibGVJRCgpIHsgcmV0dXJuIG1fbmV4dFVu
aXF1ZVZhcmlhYmxlSUQrKzsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIENsZWFyRXhjZXB0
aW9uU2NvcGU7CkBAIC01NjgsNiArNTcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
ZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0YWNrOwogICAgICAgICBIYXNo
TWFwPFN0cmluZywgUmVmUHRyPFdhdGNocG9pbnRTZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hw
b2ludFNldHM7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXI+IG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOworICAgICAgICB1aW50NjRfdCBtX25leHRV
bmlxdWVWYXJpYWJsZUlEOwogICAgIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29u
dHJvbGxlci5qcwppbmRleCAzYTA0MmUzLi5kYTJiN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yVG9rZW5UcmFj
a2luZ0NvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLmpzCkBAIC00
OSw3ICs0OSw4IEBAIFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xs
ZXIuTW9kZSA9IHsKICAgICBOb25lOiAibm9uZSIsCiAgICAgTm9uU3ltYm9sVG9rZW5zOiAibm9u
LXN5bWJvbC10b2tlbnMiLAogICAgIEphdmFTY3JpcHRFeHByZXNzaW9uOiAiamF2YXNjcmlwdC1l
eHByZXNzaW9uIiwKLSAgICBNYXJrZWRUb2tlbnM6ICJtYXJrZWQtdG9rZW5zIgorICAgIE1hcmtl
ZFRva2VuczogIm1hcmtlZC10b2tlbnMiLAorICAgIFBvc3RKYXZhU2NyaXB0RXhwcmVzc2lvbjog
InBvc3QtamF2YXNjcmlwdC1leHByZXNzaW9uIiAKIH0KIAogV2ViSW5zcGVjdG9yLkNvZGVNaXJy
b3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CkBAIC0xOTMsNyArMTk0LDkg
QEAgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5wcm90b3R5
cGUgPSB7CiAKICAgICBfc3RhcnRUcmFja2luZzogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRoaXMuX3RyYWNraW5nKTsKKyAgICAgICAgLy9pZiAodGhpcy5fdHJh
Y2tpbmcpCisgICAgICAgIC8vICAgIGNvbnNvbGUubG9nKChuZXcgRXJyb3IoIkFscmVhZHkgdHJh
Y2tpbmciKSkuc3RhY2spCisgICAgICAgIC8vY29uc29sZS5hc3NlcnQoIXRoaXMuX3RyYWNraW5n
KTsKICAgICAgICAgaWYgKHRoaXMuX3RyYWNraW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmluZGV4IGQzYTMzMTUuLmMwN2Y3NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJj
ZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC05NzQsNyArOTc0LDEwIEBAIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBtb2RlID0gV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5N
b2RlLk1hcmtlZFRva2VuczsKICAgICAgICAgZWxzZSBpZiAoKHRoaXMuX3NvdXJjZUNvZGUgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2UgfHwgdGhpcy5fc291cmNlQ29k
ZS5zb3VyY2VNYXBzLmxlbmd0aCAhPT0gMCkgJiYgV2ViSW5zcGVjdG9yLm1vZGlmaWVyS2V5cy5t
ZXRhS2V5ICYmICFXZWJJbnNwZWN0b3IubW9kaWZpZXJLZXlzLmFsdEtleSAmJiAhV2ViSW5zcGVj
dG9yLm1vZGlmaWVyS2V5cy5zaGlmdEtleSkKICAgICAgICAgICAgIG1vZGUgPSBXZWJJbnNwZWN0
b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUuTm9uU3ltYm9sVG9rZW5z
OworICAgICAgICAvL2Vsc2UKKyAgICAgICAgLy8gICAgbW9kZSA9IFdlYkluc3BlY3Rvci5Db2Rl
TWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuTW9kZS5Qb3N0SmF2YVNjcmlwdEV4cHJlc3Np
b247CiAKKyAgICAgICAgLy9jb25zb2xlLmxvZygiVG9rZW4gdHJhY2tpbmcgbW9kZSA9ICIgKyBt
b2RlKQogICAgICAgICB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLmVuYWJsZWQgPSBtb2Rl
ICE9PSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUu
Tm9uZTsKIAogICAgICAgICBpZiAobW9kZSA9PT0gdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxl
ci5tb2RlKQpAQCAtOTkyLDYgKzk5NSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9kaXNtaXNzUG9wb3ZlcigpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JU
b2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLkphdmFTY3JpcHRFeHByZXNzaW9uOgorICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuTW9k
ZS5Qb3N0SmF2YVNjcmlwdEV4cHJlc3Npb246CiAgICAgICAgICAgICB0aGlzLnRva2VuVHJhY2tp
bmdDb250cm9sbGVyLm1vdXNlT3ZlckRlbGF5RHVyYXRpb24gPSBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IuRHVyYXRpb25Ub01vdXNlT3ZlclRva2VuVG9NYWtlSG92ZXJlZFRva2Vu
OwogICAgICAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5tb3VzZU91dFJlbGVh
c2VEZWxheUR1cmF0aW9uID0gV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkR1cmF0
aW9uVG9Nb3VzZU91dE9mSG92ZXJlZFRva2VuVG9SZWxlYXNlOwogICAgICAgICAgICAgdGhpcy50
b2tlblRyYWNraW5nQ29udHJvbGxlci5jbGFzc05hbWVGb3JIaWdobGlnaHRlZFJhbmdlID0gV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkhvdmVyZWRFeHByZXNzaW9uSGlnaGxpZ2h0
U3R5bGVDbGFzc05hbWU7CkBAIC0xMDI5LDYgKzEwMzMsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZGlzbWlzc1Bv
cG92ZXIoKTsKICAgICB9LAogCisKICAgICB0b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdo
dGVkUmFuZ2VXYXNDbGlja2VkOiBmdW5jdGlvbih0b2tlblRyYWNraW5nQ29udHJvbGxlcikKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLm1vZGUgIT09IFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuTW9kZS5Ob25TeW1i
b2xUb2tlbnMpCkBAIC0xMDQ3LDEyICsxMDUyLDE1IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAKICAgICB0b2tlblRyYWNraW5nQ29udHJvbGxlck5l
d0hpZ2hsaWdodENhbmRpZGF0ZTogZnVuY3Rpb24odG9rZW5UcmFja2luZ0NvbnRyb2xsZXIsIGNh
bmRpZGF0ZSkKICAgICB7CisgICAgICAgIC8vY29uc29sZS5sb2coInRva2VuVHJhY2tpbmdDb250
cm9sbGVyTmV3SGlnaGxpZ2h0Q2FuZGlkYXRlLCBtb2RlID0gIiArIHRoaXMudG9rZW5UcmFja2lu
Z0NvbnRyb2xsZXIubW9kZSkKKwogICAgICAgICBpZiAodGhpcy50b2tlblRyYWNraW5nQ29udHJv
bGxlci5tb2RlID09PSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9s
bGVyLk1vZGUuTm9uU3ltYm9sVG9rZW5zKSB7CiAgICAgICAgICAgICB0aGlzLnRva2VuVHJhY2tp
bmdDb250cm9sbGVyLmhpZ2hsaWdodFJhbmdlKGNhbmRpZGF0ZS5ob3ZlcmVkVG9rZW5SYW5nZSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy50b2tl
blRyYWNraW5nQ29udHJvbGxlci5tb2RlID09PSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2Vu
VHJhY2tpbmdDb250cm9sbGVyLk1vZGUuSmF2YVNjcmlwdEV4cHJlc3Npb24pIHsKKyAgICAgICAg
aWYgKHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW9kZSA9PT0gV2ViSW5zcGVjdG9yLkNv
ZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLkphdmFTY3JpcHRFeHByZXNzaW9u
CisgICAgICAgICAgICB8fCB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLm1vZGUgPT09IFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuTW9kZS5Qb3N0SmF2
YVNjcmlwdEV4cHJlc3Npb24pIHsKICAgICAgICAgICAgIHRoaXMuX3Rva2VuVHJhY2tpbmdDb250
cm9sbGVySGlnaGxpZ2h0ZWRKYXZhU2NyaXB0RXhwcmVzc2lvbihjYW5kaWRhdGUpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDc3LDIwICsxMDg1LDIxIEBAIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rp
b24gcG9wdWxhdGUoZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoZXJyb3IgfHwgd2FzVGhyb3duKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQog
ICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSAhPT0gdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxl
ci5jYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICB2YXIg
ZGF0YSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0KQorICAg
ICAgICAgICAgdmFyIGRhdGEKICAgICAgICAgICAgICAgICwgc291cmNlSUQgPSB0aGlzLl9zb3Vy
Y2VDb2RlLl9zY3JpcHRzWzBdLl9pZAogICAgICAgICAgICAgICAgLCBkaXNwbGF5ID0gX2Rpc3Bs
YXkuYmluZCh0aGlzKQogCi0gICAgICAgICAgICAvL2NvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NvdXJjZUNvZGUpLCB1bmRlZmluZWQs
IDIpKQotICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyh0aGlzLl9zb3VyY2VDb2RlLl9zY3JpcHRzKSwgdW5kZWZpbmVkLCAy
KSkKLSAgICAgICAgICAgIC8vY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXModGhpcy5fc291cmNlQ29kZS5fc2NyaXB0c1swXSksIHVuZGVmaW5lZCwg
MikpCi0gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCJcblNvdXJjZUlEOiAiICsgc291cmNlSUQp
CisgICAgICAgICAgICBpZiAoZXJyb3IgfHwgd2FzVGhyb3duKSB7CisgICAgICAgICAgICAgICAg
Ly9yZXR1cm47CisgICAgICAgICAgICAgICAgLy9teSBvd24gc3BlY2lhbCBtb2RlCisgICAgICAg
ICAgICAgICAgZGF0YSA9IHsgdHlwZSA6ICJudW1iZXIiLCBfZGVzY3JpcHRpb24gOiAiIiB9Cisg
ICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiXG5jcmVhdGluZyBvd24gZGF0YSIpCisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRhdGEgPSBXZWJJbnNwZWN0b3IuUmVt
b3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlc3VsdCkKKyAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZnVuY3Rpb24gX2Rpc3BsYXkoKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLnR5
cGUpIHsKQEAgLTExMjUsMTUgKzExMzQsMjIgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0
RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICB2YXIgcmFuZ2UgPSBjYW5kaWRhdGUuaG92ZXJlZFRva2VuUmFuZ2UKLSAgICAgICAgICAgICAg
ICBSdW50aW1lQWdlbnQuZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKGNhbmRp
ZGF0ZS5ob3ZlcmVkVG9rZW4uc3RyaW5nLCBzb3VyY2VJRCwgcmFuZ2Uuc3RhcnQubGluZSwgcmFu
Z2Uuc3RhcnQuY2gsIHJhbmdlLmVuZC5saW5lLCByYW5nZS5lbmQuY2gsIGhhbmRsZXIpCi0gICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coIlxuU3RhcnQg
bGluZTogIiArIHJhbmdlLnN0YXJ0LmxpbmUgKyAiICAgZW5kTGluZTogIiArIHJhbmdlLmVuZC5s
aW5lKQorICAgICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRSdW50aW1lVHlwZUZvclZhcmlh
YmxlSW5UZXh0UmFuZ2UoY2FuZGlkYXRlLmhvdmVyZWRUb2tlbi5zdHJpbmcsIHNvdXJjZUlELCBy
YW5nZS5zdGFydC5saW5lICsgMSwgcmFuZ2Uuc3RhcnQuY2gsIHJhbmdlLmVuZC5saW5lICsgMSwg
cmFuZ2UuZW5kLmNoLCBoYW5kbGVyKQorICAgICAgICAgICAgfSBlbHNlIGlmICghKGVycm9yIHx8
IHdhc1Rocm93bikpIHsKICAgICAgICAgICAgICAgICBkaXNwbGF5KCkKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiXG5ub3Qgc2hvd2luZyBhIHBv
cG92ZXIiKQogICAgICAgICAgICAgfQogCiAKICAgICAgICAgfQogCi0gICAgICAgIERlYnVnZ2Vy
QWdlbnQuZXZhbHVhdGVPbkNhbGxGcmFtZS5pbnZva2Uoe2NhbGxGcmFtZUlkOiBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZS5pZCwgZXhwcmVzc2lvbjogY2FuZGlk
YXRlLmV4cHJlc3Npb24sIG9iamVjdEdyb3VwOiAicG9wb3ZlciIsIGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZTogdHJ1ZX0sIHBvcHVsYXRlLmJpbmQodGhpcykpOworICAgICAg
ICBpZiAodGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5tb2RlID09PSBXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUuUG9zdEphdmFTY3JpcHRFeHBy
ZXNzaW9uKSB7CisgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCJcbmNhbGxpbmcgcG9wdWxhdGUg
dy8gcmFuZG9tIHZhbHVlcyIpCisgICAgICAgICAgICBwb3B1bGF0ZSh0cnVlLCBudWxsLCB0cnVl
KQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQuZXZhbHVhdGVPbkNh
bGxGcmFtZS5pbnZva2Uoe2NhbGxGcmFtZUlkOiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2Vy
LmFjdGl2ZUNhbGxGcmFtZS5pZCwgZXhwcmVzc2lvbjogY2FuZGlkYXRlLmV4cHJlc3Npb24sIG9i
amVjdEdyb3VwOiAicG9wb3ZlciIsIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29s
ZTogdHJ1ZX0sIHBvcHVsYXRlLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICBfc2hvd1BvcG92
ZXI6IGZ1bmN0aW9uKGNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcwppbmRleCBlOWIwZDMwLi5hNTE4MmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
ZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RleHRFZGl0b3IuanMKQEAgLTY4LDM3ICs2OCw0NCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG1pbWVUeXBlLCBkZWxlZ2F0ZSkKIAogICAgIHRoaXMu
X2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKIAotICAgIHZhciBzb3VyY2VJRCA9IGRlbGVn
YXRlID8gZGVsZWdhdGUuc291cmNlQ29kZS5fc2NyaXB0c1swXS5faWQgOiBudWxsOwogICAgIGZ1
bmN0aW9uIG1vdXNlVXBUZXN0KGV2ZW50KSB7CisKKyAgICAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAh
ZGVsZWdhdGUuX3NvdXJjZUNvZGUgfHwgIWRlbGVnYXRlLl9zb3VyY2VDb2RlLl9zY3JpcHRzIHx8
ICFkZWxlZ2F0ZS5fc291cmNlQ29kZS5fc2NyaXB0c1swXSkKKyAgICAgICAgICAgIHJldHVybgor
CiAgICAgICAgIHRoaXMuX3Rva2VuVHJhY2tpbmdDb250cm9sbGVyLmVuYWJsZWQgPSB0cnVlCi0g
ICAgICAgIHZhciB0b2tlbkluZm8gPSB0aGlzLl90b2tlblRyYWNraW5nQ29udHJvbGxlci5faG92
ZXJlZFRva2VuSW5mbworCisgICAgICAgIHZhciBzY3JpcHQgPSBkZWxlZ2F0ZS5fc291cmNlQ29k
ZS5fc2NyaXB0c1swXQorICAgICAgICAgICAsIHNvdXJjZUlEID0gc2NyaXB0Ll9pZAorICAgICAg
ICAgICAsIHRva2VuSW5mbyA9IHRoaXMuX3Rva2VuVHJhY2tpbmdDb250cm9sbGVyLl9ob3ZlcmVk
VG9rZW5JbmZvCiAgICAgICAgICAgICwgdG9rZW4gCiAKICAgICAgICAgaWYgKCF0b2tlbkluZm8g
fHwgIXRva2VuSW5mby50b2tlbikKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmICgh
dXJsKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmxvZygiXG5OTyBVUkwiKQotICAgICAgICAgICAg
cmV0dXJuCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zb2xlLmxvZygiXG5VUkw6
ICIgKyB1cmwpCi0gICAgICAgIH0KLQotCiAgICAgICAgIHRva2VuID0gdG9rZW5JbmZvLnRva2Vu
CiAgICAgICAgIC8vY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkodG9rZW5JbmZvLCB1bmRlZmlu
ZWQsIDIpKQotCiAgICAgICAgIGlmICh0b2tlbi5zdGF0ZS5sYXN0VHlwZSA9PT0gInZhcmlhYmxl
IikgewotICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlcihlcnJvciwgdHlwZVN0cmluZykgewor
CisgICAgICAgICAgICAvL2RlbGVnYXRlLnNvdXJjZUNvZGUuX3NjcmlwdHMuZm9yRWFjaChmdW5j
dGlvbihlLCBpZHgpIHsKKyAgICAgICAgICAgIC8vICAgIGNvbnNvbGUubG9nKCJcbklEWDogIiAr
IGlkeCArICJcblVSTDogIiArIGUuX3VybCArICJcbklEOiAiICsgZS5faWQpCisgICAgICAgICAg
ICAvL30pCisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCB0eXBlU3RyaW5n
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSAKICAgICAgICAgICAgICAgICAgICAgY29u
c29sZS5sb2coIkVSUk9SIGZyb20gaGFuZGxlcjogIiArIGVycm9yKQotICAgICAgICAgICAgICAg
IGNvbnNvbGUubG9nKCJcblJ1bnRpbWUgdHlwZXMgZm9yIHZhcmlhYmxlOiAnIiArIHRva2VuLnN0
cmluZyArICInIGlzOiAnIiArIHR5cGVTdHJpbmcgKyAiJyIpCisKKyAgICAgICAgICAgICAgICBj
b25zb2xlLmxvZygiXG5cdGdvdCBydW50aW1lIHR5cGVzIGluIHVybDogXCIiICsgc2NyaXB0Ll91
cmwgKyAiXCIiICsgIlxuXHRSdW50aW1lIHR5cGVzIGZvciB2YXJpYWJsZTogJyIgKyB0b2tlbi5z
dHJpbmcgKyAiJyBpczogJyIgKyB0eXBlU3RyaW5nICsgIiciKQogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgUnVudGltZUFnZW50LmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5n
ZSh0b2tlbi5zdHJpbmcsIHNvdXJjZUlELCB0b2tlbkluZm8ucG9zaXRpb24ubGluZSwgdG9rZW5J
bmZvLnBvc2l0aW9uLmNoLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5JbmZvLnBvc2l0aW9uLmxpbmUsIHRva2VuSW5m
by5wb3NpdGlvbi5jaCArIHRva2VuLnN0cmluZy5sZW5ndGgsIGhhbmRsZXIpCisgICAgICAgICAg
ICAvL2NvbnNvbGUubG9nKCJcblN0YXJ0IGxpbmU6ICIgKyB0b2tlbkluZm8ucG9zaXRpb24ubGlu
ZSkKKworICAgICAgICAgICAgdmFyIGxpbmUgPSB0b2tlbkluZm8ucG9zaXRpb24ubGluZSArIDEK
KyAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRSdW50aW1lVHlwZUZvclZhcmlhYmxlSW5UZXh0
UmFuZ2UodG9rZW4uc3RyaW5nLCBzb3VyY2VJRCwgbGluZSwgdG9rZW5JbmZvLnBvc2l0aW9uLmNo
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmUsIHRva2VuSW5mby5wb3NpdGlvbi5jaCArIHRva2VuLnN0cmluZy5sZW5n
dGgsIGNhbGxiYWNrKQogICAgICAgICB9CiAgICAgfQotICAgIGRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlbW92ZSIsIG1vdXNlVXBUZXN0LmJpbmQodGhpcyksIHRydWUpOworCisgICAg
Ly9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBtb3VzZVVwVGVzdC5iaW5k
KHRoaXMpLCB0cnVlKTsKICAgICAKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233208</attachid>
            <date>2014-06-16 19:52:41 -0700</date>
            <delta_ts>2014-06-18 08:32:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>64695</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTc1OWM5Yy4uMzNiNGQ5NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgyNyw3ICs4MjcsOSBAQAogCQk1MjJBQkFGNDE5
NDc2QjQzMDA4QjFDODUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMkFCQUYzMTk0NzZCNDMwMDhC
MUM4NSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwICovOyB9OwogCQk1MjJBQkFGNzE5
NDc2QkZDMDA4QjFDODUgLyogVHlwZVNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MjJBQkFGNTE5NDc2QkZDMDA4QjFDODUgLyogVHlwZVNldC5j
cHAgKi87IH07CiAJCTUyMkFCQUY4MTk0NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjJBQkFGNjE5NDc2QkZD
MDA4QjFDODUgLyogVHlwZVNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTUyMkFCQUZBMTk0QTgwNDMwMDhCMUM4NSAvKiBMb2NhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIyQUJBRjkxOTRB
ODA0MzAwOEIxQzg1IC8qIExvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTIyQUJBRkExOTRBODA0MzAwOEIxQzg1IC8qIFR5cGVMb2Nh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIy
QUJBRjkxOTRBODA0MzAwOEIxQzg1IC8qIFR5cGVMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUyNzBBMzQ5MTk0RkM3M0YwMEVERDJD
NCAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTI3MEEzNDcxOTRGQzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxv
Zy5jcHAgKi87IH07CisJCTUyNzBBMzRBMTk0RkM3M0YwMEVERDJDNCAvKiBIaWdoRmlkZWxpdHlM
b2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzBB
MzQ4MTk0RkM3M0YwMEVERDJDNCAvKiBIaWdoRmlkZWxpdHlMb2cuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTEwNTAyNjE4RUI4Mjc1MDAwMDFG
M0UgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDQwRjg4RjBBNTA4QjEwMDAwNUYwNjEgLyogSlNDYWxsYmFja0Z1
bmN0aW9uLmggKi87IH07CiAJCTU1NDA3NTcyMThEQTU4QUQwMEVGRjdGMiAvKiBBcmdMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBF
MjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovOyB9OwogCQk1NTQwNzU3MzE4REE1OEFEMDBF
RkY3RjIgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzI1N0RFNjBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggKi87IH07
CkBAIC0yNjA4LDcgKzI2MTAsOSBAQAogCQk1MjJBQkFGMzE5NDc2QjQzMDA4QjFDODUgLyogSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUyMkFCQUY1MTk0NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVTZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MjJBQkFGNjE5NDc2QkZDMDA4QjFDODUgLyogVHlwZVNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlU2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUyMkFCQUY5MTk0QTgwNDMwMDhCMUM4NSAvKiBMb2NhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MjJBQkFGOTE5NEE4MDQzMDA4QjFDODUgLyogVHlwZUxvY2F0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVMb2NhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjcwQTM0NzE5NEZDNzNGMDBFREQyQzQgLyogSGln
aEZpZGVsaXR5TG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhp
Z2hGaWRlbGl0eUxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNzBBMzQ4
MTk0RkM3M0YwMEVERDJDNCAvKiBIaWdoRmlkZWxpdHlMb2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSGlnaEZpZGVsaXR5TG9nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1NDA3NTg0MThGNEEzNzUwMDYwMkE1RCAvKiBDb21waWxlUnVudGltZVRvTExWTUlS
LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENvbXBpbGVSdW50aW1l
VG9MTFZNSVIueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NDA3QUM4
MThEQTU4QUQwMEVGRjdGMiAvKiBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmEgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYkNvbXBpbGVSdW50aW1lVG9MTFZNSVIuYTsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQ1MzcyNkQwRTFDNTQ2QjAwMjFFNTQ5
IC8qIFRyYWNpbmcuZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUcmFjaW5nLmQ7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTc3LDYgKzQxODEsOCBAQAogCQk3RUY2RTBCQjBFQjdB
MUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJNTI3MEEzNDcxOTRGQzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxv
Zy5jcHAgKi8sCisJCQkJNTI3MEEzNDgxOTRGQzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxv
Zy5oICovLAogCQkJCTUyMkFCQUY1MTk0NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0LmNwcCAqLywK
IAkJCQk1MjJBQkFGNjE5NDc2QkZDMDA4QjFDODUgLyogVHlwZVNldC5oICovLAogCQkJCTUyMkFC
QUYzMTk0NzZCNDMwMDhCMUM4NSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwICovLApA
QCAtNTAxMiw3ICs1MDE4LDcgQEAKIAkJCQkwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLAogCQkJCTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4
OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTBGMEZDNDU4MTRCRDE1RjEw
MEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovLAotCQkJCTUyMkFCQUY5MTk0QTgwNDMw
MDhCMUM4NSAvKiBMb2NhdGlvbi5oICovLAorCQkJCTUyMkFCQUY5MTk0QTgwNDMwMDhCMUM4NSAv
KiBUeXBlTG9jYXRpb24uaCAqLywKIAkJCQkwRkI1NDY3QzE0RjVDRkQzMDAyQzI5ODkgLyogTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgKi8sCiAJCQkJMEZCNTQ2N0ExNEY1QzdENDAw
MkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCAqLywKIAkJCQkxNENBOTU4
QzE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCAqLywKQEAgLTU1
MTYsMTEgKzU1MjIsMTIgQEAKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlD
aGVja01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAv
KiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAw
Mjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTI3MEEzNEExOTRG
QzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxvZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTIy
QUJBRjgxOTQ3NkJGQzAwOEIxQzg1IC8qIFR5cGVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUy
MkFCQUYyMTk0NzZCMjIwMDhCMUM4NSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNp
dGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkExMTEyNDYxOTJGQ0U3OTAwNUVF
MThEIC8qIEN1c3RvbUdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTIyQUJBRkEx
OTRBODA0MzAwOEIxQzg1IC8qIExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjJBQkFG
QTE5NEE4MDQzMDA4QjFDODUgLyogVHlwZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFNTI0OEY5MTkxNDQyRDkwMEI3RkRFNCAvKiBWYXJpYWJsZVdhdGNocG9pbnRT
ZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTczNDksNiArNzM1Niw3IEBACiAJCQkJMEYw
Q0Q0QzQxNUY2QjZCQjAwMzJGMUMwIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY1NTQxQjExNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTg2MTQxRjNGRjEwMDE3OUM5NCAvKiBTcGVjdWxh
dGVkVHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MjcwQTM0OTE5NEZDNzNGMDBFREQyQzQg
LyogSGlnaEZpZGVsaXR5TG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QzFFQUYxMTc5ODdB
QjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczMEI2
MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0NDY5REVCMTA3RUM3RTcwMDY1MDQ0NiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmgKaW5kZXggODcxMmNjOS4uYTFiZjdjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC01NCw5ICs1NCw4IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2luaXRfbGF6
eV9yZWc6CiAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOgogICAgIGNhc2Ugb3BfZW50ZXI6Ci0gICAg
Ly9zYiBUT0RPOiBTaG91bGQgdGhpcyBmdW5jdG9yIGJlIGNhbGxlZCB3aXRoIG9uZSBvcGVyYW5k
PworICAgIC8vVE9ETzogU2hvdWxkIHRoaXMgZnVuY3RvciBiZSBjYWxsZWQgd2l0aCBvbmUgb3Bl
cmFuZD8KICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5OgotICAg
IC8vc2IKICAgICBjYXNlIG9wX2NhdGNoOgogICAgIGNhc2Ugb3BfdG91Y2hfZW50cnk6CiAgICAg
ICAgIHJldHVybjsKQEAgLTI5Miw5ICsyOTEsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAog
ICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRfYnlfaW5kZXg6
CiAgICAgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6Ci0gICAgLy9zYgogICAgIGNhc2Ugb3Bf
cHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6Ci0gICAgLy9zYgogICAgIGNhc2Ugb3Bf
dG91Y2hfZW50cnk6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3Ro
KSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihM
TElOVF9IRUxQRVJfT1BDT0RFUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IDIyZGY0NTEuLjc4YzVlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJ
bnRFbnRyeXBvaW50LmgiCi0jaW5jbHVkZSAiTG9jYXRpb24uaCIKKyNpbmNsdWRlICJUeXBlTG9j
YXRpb24uaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljR2V0QnlJZExpc3QuaCIKQEAgLTE1MDMs
OCArMTUwMyw2IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgLCBtX3Nob3VsZEFsd2F5
c0JlSW5saW5lZCh0cnVlKQogICAgICwgbV9kaWRGYWlsRlRMQ29tcGlsYXRpb24oZmFsc2UpCiAg
ICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCi0gICAgLCBtX2hpZ2hGaWRlbGl0
eUxvZ1NpemUoMSkKLSAgICAsIG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQdHIoMCkKICAgICAsIG1f
dW5saW5rZWRDb2RlKG1fZ2xvYmFsT2JqZWN0LT52bSgpLCBvd25lckV4ZWN1dGFibGUsIHVubGlu
a2VkQ29kZUJsb2NrKQogICAgICwgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudChmYWxzZSkKICAgICAs
IG1fc3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZURpc2FibGVkKQpAQCAtMTc5NSwzMyArMTc5Myw0
MiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgNV0udS5zdHJ1Y3R1cmUuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLnN0cnVj
dHVyZSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUucG9pbnRlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wLm9wZXJhbmQpOwogCi0gICAgICAgICAgICAvLyBwdXRfdG9f
c2NvcGVfd2l0aF9wcm9maWxlIHNjb3BlLCBpZCwgdmFsdWUsIFJlc29sdmVNb2RlQW5kVHlwZSwg
U3RydWN0dXJlLCBPcGVyYW5kLCBMb2NhdGlvbioKKyAgICAgICAgICAgIC8vIHB1dF90b19zY29w
ZV93aXRoX3Byb2ZpbGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVzb2x2ZU1vZGVBbmRUeXBlLCBTdHJ1
Y3R1cmUsIE9wZXJhbmQsIFR5cGVMb2NhdGlvbioKICAgICAgICAgICAgIGlmIChwY1swXS51Lm9w
Y29kZSA9PSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAg
Ly9UT0RPOiBoYW5kbGUgbWVtb3J5IGxlYWsgaGVyZQotICAgICAgICAgICAgICAgIC8vTG9jYXRp
b24qIGxvY2F0aW9uID0gbmV3IExvY2F0aW9uKCk7Ci0gICAgICAgICAgICAgICAgTG9jYXRpb24q
IGxvY2F0aW9uID0gbV9sb2NhdGlvbkluZm8uYWRkKCk7CisgICAgICAgICAgICAgICAgVHlwZUxv
Y2F0aW9uKiBsb2NhdGlvbiA9IHZtKCktPm5leHRMb2NhdGlvbigpOwogICAgICAgICAgICAgICAg
IHNpemVfdCBpbnN0cnVjdGlvbk9mZnNldCA9IGkgKyBvcExlbmd0aCAtIDE7CiAgICAgICAgICAg
ICAgICAgaW50IGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0OyAKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsaW5lID0gMCwgY29sdW1uID0gMDsKICAgICAgICAgICAgICAgICBtX3VubGlu
a2VkQ29kZS5nZXQoKS0+ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rp
b25PZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwot
ICAgICAgICAgICAgICAgIC8vcHJpbnRmKCJEaXZvdCBwdXRfdG9fc2NvcGU6JWRcbiIsIGRpdm90
KTsKLSAgICAgICAgICAgICAgICBsaW5lICs9IG1fb3duZXJFeGVjdXRhYmxlLT5saW5lTm8oKTsK
KworICAgICAgICAgICAgICAgIGxpbmUgKz0gbV9vd25lckV4ZWN1dGFibGUtPmxpbmVObygpOyAv
L2xpbmVObyBmcm9tIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0IGlzIHJlbGF0aXZl
IHRvIHRoaXMgY29kZSBibG9jaywgYnV0IHdlIHdhbnQgaXQgcmVsYXRpdmUgdG8gb3VyIGZpbGUu
CiAgICAgICAgICAgICAgICAgbG9jYXRpb24tPnVubGlua2VkQnl0ZUNvZGVPZmZzZXQgPSBpbnN0
cnVjdGlvbk9mZnNldDsKICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bGluZSA9IGxpbmU7CiAg
ICAgICAgICAgICAgICAgbG9jYXRpb24tPmNvbHVtbiA9IGNvbHVtbjsKICAgICAgICAgICAgICAg
ICBsb2NhdGlvbi0+c291cmNlSUQgPSBtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKTsKKyAg
ICAgICAgICAgICAgICBsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCA9IC0xOworICAgICAgICAg
ICAgICAgIGxvY2F0aW9uLT5nbG9iYWxJbnN0cnVjdGlvbklEID0gdm0oKS0+Z2V0TmV4dFVuaXF1
ZUluc3RydWN0aW9uSUQoKTsKKworICAgICAgICAgICAgICAgIC8vVE9ETzogaGFuZGxlIG90aGVy
IG9wLnR5cGUgaGVyZQorICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9
IDA7CisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhcikgCisgICAgICAg
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gb3AuYWN0aXZhdGlvbi0+c3ltYm9sVGFibGUoKTsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2JhbFZhcikKKyAgICAgICAg
ICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5nZXQoKS0+c3ltYm9sVGFi
bGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2JhbFByb3BlcnR5
KSB7CisgICAgICAgICAgICAgICAgICAgIC8vc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5n
ZXQoKS0+c3ltYm9sVGFibGUoKTsKKyAgICAgICAgICAgICAgICAgICAgLy9Db25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAg
Ly9hdXRvIGl0ZXIgPSBzeW1ib2xUYWJsZS0+ZmluZChsb2NrZXIsIGlkZW50LmltcGwoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIC8vYXV0byBlbmQgPSBzeW1ib2xUYWJsZS0+ZW5kKGxvY2tlcik7
CisgICAgICAgICAgICAgICAgICAgIC8vaWYgKGl0ZXIgIT0gZW5kKSAKKyAgICAgICAgICAgICAg
ICAgICAgLy8gICAgcHJpbnRmKCJGb3VuZCBpbiBzeW1ib2wgdGFibGUgIik7CisgICAgICAgICAg
ICAgICAgICAgIC8vcHJpbnRmKCJHbG9iYWwgcHJvcGVydHk6ICclcydcbiIsIGlkZW50LmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgLy9zeW1ib2xUYWJsZSA9IDA7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChvcC50
eXBlID09IENsb3N1cmVWYXIpIHsKLSAgICAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlID0gb3AuYWN0aXZhdGlvbi0+c3ltYm9sVGFibGUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgQ29uY3VycmVudEpJVExvY2tlciogbG9ja2VyID0gbmV3IENvbmN1cnJlbnRKSVRMb2Nr
ZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9
IHN5bWJvbFRhYmxlLT5maW5kKCpsb2NrZXIsIGlkZW50LmltcGwoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8gZW5kID0gc3ltYm9sVGFibGUtPmVuZCgqbG9ja2VyKTsKLSAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGl0ZXIgIT0gZW5kKTsKLSAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b24tPmdsb2JhbFZhcmlhYmxlSUQgPSBpdGVyLT52YWx1ZS51bmlxdWVJRCgpOwotICAgICAgICAg
ICAgICAgICAgICAvL3ByaW50ZigiTElOS0lORzogcHV0X3RvX3Njb3BlIHcvIHZhciBuYW1lOicl
cycgYW5kIHVuaXF1ZSBpZDonJWxsdScgYXQgbGluZTonJXUnIGNvbHVtbjonJXUnXG4iLCBpZGVu
dC5hc2NpaSgpLmRhdGEoKSwgbG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQsIGxpbmUsIGNvbHVt
bik7IAotICAgICAgICAgICAgICAgICAgICBkZWxldGUgbG9ja2VyOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vcHJpbnRmKCJcbkxJTktJTkc6IG5vdCBh
IGNsb3N1cmUgdmFyaWFibGUgaW4gUFVUX1RPX1NDT1BFXG4iKTsKKyAgICAgICAgICAgICAgICBp
ZiAoc3ltYm9sVGFibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uLT5nbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yVmFyaWFibGUo
bG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDddLnUubG9jYXRpb24gPSBsb2NhdGlvbjsKQEAg
LTE4MzMsMzMgKzE4NDAsMjQgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KIAogICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpOwogICAg
ICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbV9zeW1ib2xUYWJsZS5nZXQoKTsK
LSAgICAgICAgICAgIHVpbnQ2NF90IGdsb2JhbElEID0gVUlOVDY0X01BWDsKLQotICAgICAgICAg
ICAgQ29uY3VycmVudEpJVExvY2tlciogbG9ja2VyID0gbmV3IENvbmN1cnJlbnRKSVRMb2NrZXIo
c3ltYm9sVGFibGUtPm1fbG9jayk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHN5bWJv
bFRhYmxlLT5iZWdpbigqbG9ja2VyKSwgZW5kID0gc3ltYm9sVGFibGUtPmVuZCgqbG9ja2VyKTsg
aXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5n
ZXRJbmRleCgpID09IHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKSkgewotICAgICAgICAgICAgICAg
ICAgICBnbG9iYWxJRCA9IGl0ZXItPnZhbHVlLnVuaXF1ZUlEKCk7IAotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlbGV0ZSBsb2NrZXI7Ci0gICAgICAgICAg
ICBBU1NFUlQoZ2xvYmFsSUQgIT0gVUlOVDY0X01BWCk7Ci0KLSAgICAgICAgICAgIC8vVE9ETzog
aGFuZGxlIG1lbW9yeSBsZWFrIGhlcmUsIG1heWJlIHB1dCBhbGwgTG9jYXRpb24qIGluIGEgYmFn
PD4KLSAgICAgICAgICAgIC8vTG9jYXRpb24qIGxvY2F0aW9uID0gbmV3IExvY2F0aW9uKCk7Ci0g
ICAgICAgICAgICBMb2NhdGlvbiogbG9jYXRpb24gPSBtX2xvY2F0aW9uSW5mby5hZGQoKTsKKyAg
ICAgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSB2bSgpLT5uZXh0TG9jYXRpb24oKTsK
ICAgICAgICAgICAgIHNpemVfdCBpbnN0cnVjdGlvbk9mZnNldCA9IGkgKyBvcExlbmd0aCAtIDE7
CiAgICAgICAgICAgICBpbnQgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7IAogICAgICAg
ICAgICAgdW5zaWduZWQgbGluZSA9IDAsIGNvbHVtbiA9IDA7CiAgICAgICAgICAgICBtX3VubGlu
a2VkQ29kZS5nZXQoKS0+ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rp
b25PZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwot
ICAgICAgICAgICAgLy9wcmludGYoIkRpdm90OiVkXG4iLCBkaXZvdCk7CiAgICAgICAgICAgICBs
aW5lICs9IG1fb3duZXJFeGVjdXRhYmxlLT5saW5lTm8oKTsKLSAgICAgICAgICAgIGxvY2F0aW9u
LT5nbG9iYWxWYXJpYWJsZUlEID0gZ2xvYmFsSUQ7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsK
KyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxl
LT51bmlxdWVJREZvclJlZ2lzdGVyKGxvY2tlciwgdmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpLCAq
dm0oKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBsb2NhdGlvbi0+dW5saW5rZWRCeXRl
Q29kZU9mZnNldCA9IGluc3RydWN0aW9uT2Zmc2V0OwogICAgICAgICAgICAgbG9jYXRpb24tPmxp
bmUgPSBsaW5lOwogICAgICAgICAgICAgbG9jYXRpb24tPmNvbHVtbiA9IGNvbHVtbjsKICAgICAg
ICAgICAgIGxvY2F0aW9uLT5zb3VyY2VJRCA9IG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgp
OworICAgICAgICAgICAgbG9jYXRpb24tPmdsb2JhbEluc3RydWN0aW9uSUQgPSB2bSgpLT5nZXRO
ZXh0VW5pcXVlSW5zdHJ1Y3Rpb25JRCgpOwogCi0gICAgICAgICAgICBTdHJpbmcgbmFtZSA9IG5h
bWVGb3JSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICAgICAgLy9TdHJpbmcgbmFt
ZSA9IG5hbWVGb3JSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogICAgICAgICAgICAgLy9wcmlu
dGYoIkxJTktJTkc6IG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5IGhhcyB1bmlx
dWVJRDonJWxsdScgYW5kIG5hbWU6JyVzJywgbGluZTonJXUnLCBjb2x1bW46JyV1J1xuIiwgZ2xv
YmFsSUQsIG5hbWUuYXNjaWkoKS5kYXRhKCksIGxvY2F0aW9uLT5saW5lLCBsb2NhdGlvbi0+Y29s
dW1uKTsgCiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDJdLnUubG9jYXRpb24gPSBsb2Nh
dGlvbjsKICAgICAgICAgICAgICAKQEAgLTE4NzQsNyArMTg3Miw3IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxv
Y2sqIHVubGluCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBTdHJpbmdJbXBsKiB1aWQgPSBpZGVudGlmaWVyKHBjWzNdLnUuaW5kZXgpLmltcGwoKTsK
LSAgICAgICAgICAgIC8vUkVMRUFTRV9BU1NFUlQoZGlkQ2xvbmVTeW1ib2xUYWJsZSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChkaWRDbG9uZVN5bWJvbFRhYmxlKTsKICAgICAgICAgICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fc3ltYm9sVGFibGUtPm1fbG9jayk7CiAgICAg
ICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gbV9zeW1ib2xUYWJsZS0+
ZmluZChsb2NrZXIsIHVpZCk7CiAgICAgICAgICAgICBBU1NFUlQoaXRlciAhPSBtX3N5bWJvbFRh
YmxlLT5lbmQobG9ja2VyKSk7CkBAIC0xOTEyLDIxICsxOTEwLDEwIEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxv
Y2sqIHVubGluCiAKICAgICBtX2hlYXAtPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CiAgICAgbV9o
ZWFwLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZW9mKENvZGVCbG9jaykgKyBtX2luc3RydWN0
aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLQotICAgIC8vc2V0dXAgb3B0aW9u
YWwgcHJvZmlsaW5nIG9mIHR5cGVzCi0gICAgLy9UT0RPOiBtYWtlIHRoaXMgdHJ1bHkgb3B0aW9u
YWwKLSAgICBpZiAoT3B0aW9uczo6cHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAg
ICAgICBpbml0aWFsaXplSGlnaEZpZGVsaXR5TG9nKCk7CiB9CiAKIENvZGVCbG9jazo6fkNvZGVC
bG9jaygpCiB7Ci0gICAgLy9tX3ZtLT5tZXJnZUhpZ2hGaWRlbGl0eVByb2ZpbGVUeXBlcyh0aGlz
KTsKLSAgICBpZiAobV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0cikgewotICAgICAgICBwcm9jZXNz
SGlnaEZpZGVsaXR5TG9nKCk7IAotICAgICAgICBmcmVlKG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQ
dHIpOwotICAgIH0KLQogICAgIGlmIChtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCiAgICAg
ICAgIG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+bm90aWZ5RGVzdHJ1Y3Rpb24odGhpcyk7
CiAKQEAgLTM3MjAsMzkgKzM3MDcsNSBAQCBERkc6OkNhcGFiaWxpdHlMZXZlbCBDb2RlQmxvY2s6
OmNhcGFiaWxpdHlMZXZlbCgpCiB9CiAjZW5kaWYKIAotdm9pZCBDb2RlQmxvY2s6OmluaXRpYWxp
emVIaWdoRmlkZWxpdHlMb2coKQotewotICAgIG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQdHIgPSAo
SGlnaEZpZGVsaXR5VHlwZTNUdXBsZSopIG1hbGxvYyhzaXplb2YoSGlnaEZpZGVsaXR5VHlwZTNU
dXBsZSkgKiBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUpOwotICAgIG1faGlnaEZpZGVsaXR5TG9nQ3Vy
cmVudFByb2Nlc3NPZmZzZXQgPSAwOwotfQotCi12b2lkIENvZGVCbG9jazo6cmVjb3JkVHlwZUlu
Zm9ybWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2LCBMb2NhdGlvbiogbG9jYXRpb24sIFN0cm9u
ZzxTdHJ1Y3R1cmU+KiBzdHJ1Y3R1cmUpCi17Ci0gICAgLy9wcmludGYoInJlY29yZGluZyB0eXBl
IGluZm9ybWF0aW9uXG4iKTsKLSAgICBBU1NFUlQobV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0cik7
Ci0gICAgQVNTRVJUKG1faGlnaEZpZGVsaXR5TG9nQ3VycmVudFByb2Nlc3NPZmZzZXQgPCBtX2hp
Z2hGaWRlbGl0eUxvZ1NpemUpOwotCi0gICAgKihtX2hpZ2hGaWRlbGl0eUxvZ1N0YXJ0UHRyICsg
bV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldCkgPSBIaWdoRmlkZWxpdHlUeXBl
M1R1cGxlKHYsIGxvY2F0aW9uLCBzdHJ1Y3R1cmUpOwotICAgIG1faGlnaEZpZGVsaXR5TG9nQ3Vy
cmVudFByb2Nlc3NPZmZzZXQgKz0gMTsKLSAgICBpZiAobV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50
UHJvY2Vzc09mZnNldCA+PSBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUpIHsKLSAgICAgICAgcHJvY2Vz
c0hpZ2hGaWRlbGl0eUxvZygpOwotICAgIH0KLX0KLQotdm9pZCBDb2RlQmxvY2s6OnByb2Nlc3NI
aWdoRmlkZWxpdHlMb2coKQotewotICAgIEhpZ2hGaWRlbGl0eVR5cGUzVHVwbGUqIHB0ciA9IG1f
aGlnaEZpZGVsaXR5TG9nU3RhcnRQdHI7Ci0gICAgc2l6ZV90IGkgPSAwOwotICAgIHdoaWxlIChp
IDwgbV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldCkgewotICAgICAgICBUeXBl
U2V0KiB0eXBlU2V0ID0gcHRyLT5sb2NhdGlvbi0+dHlwZVNldDsKLSAgICAgICAgdHlwZVNldC0+
YWRkVHlwZUZvclZhbHVlKHB0ci0+dmFsdWUsIHB0ci0+c3RydWN0dXJlID8gcHRyLT5zdHJ1Y3R1
cmUtPmdldCgpIDogMCk7Ci0gICAgICAgIFN0cmluZyB0eXBlcyh0eXBlU2V0LT5zZWVuVHlwZXMo
KSk7Ci0gICAgICAgIHByaW50ZigiUHJvY2Vzc2luZyBsb2c6IGxpbmUnJXUnLCBjb2x1bW46JyV1
JywgZ2xvYmFsSUQ6JyVsbHUnLCB0eXBlczonJXMnXG4iLCBwdHItPmxvY2F0aW9uLT5saW5lLCBw
dHItPmxvY2F0aW9uLT5jb2x1bW4sIHB0ci0+bG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQsIHR5
cGVzLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgcHRyKys7Ci0gICAgICAgIGkrKzsKLSAgICB9
Ci0KLSAgICBtX2hpZ2hGaWRlbGl0eUxvZ0N1cnJlbnRQcm9jZXNzT2Zmc2V0ID0gMDsKLX0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKaW5kZXggMTI3MTExZC4uYjZhNjVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTQyLDM4ICs5NDIsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCk7IC8vIFdpbGwgb25seSByZXR1cm4gdmFsaWQg
cmVzdWx0cyB3aGVuIGNhbGxlZCBkdXJpbmcgR0MuIEFzc3VtZXMgdGhhdCB5b3UndmUgYWxyZWFk
eSBlc3RhYmxpc2hlZCB0aGF0IHRoZSBvd25lciBleGVjdXRhYmxlIGlzIGxpdmUuCiAKLSAgICBz
dHJ1Y3QgSGlnaEZpZGVsaXR5VHlwZTNUdXBsZSB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAg
SGlnaEZpZGVsaXR5VHlwZTNUdXBsZShKU1ZhbHVlIHYsIExvY2F0aW9uKiBsb2MsIFN0cm9uZzxT
dHJ1Y3R1cmU+KiBfc3RydWN0dXJlKSAKLSAgICAgICAgewotICAgICAgICAgICAgdmFsdWUgPSB2
OwotICAgICAgICAgICAgbG9jYXRpb24gPSBsb2M7Ci0gICAgICAgICAgICBpZiAoX3N0cnVjdHVy
ZSkgewotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IG5ldyBTdHJvbmc8U3RydWN0dXJlPigp
OwotICAgICAgICAgICAgICAgICpzdHJ1Y3R1cmUgPSAqX3N0cnVjdHVyZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSAwOwotICAg
ICAgICB9Ci0gICAgICAgIH5IaWdoRmlkZWxpdHlUeXBlM1R1cGxlKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKHN0cnVjdHVyZSkKLSAgICAgICAgICAgICAgICBkZWxldGUgc3RydWN0dXJl
OwotICAgICAgICB9Ci0gICAgICAgIEpTVmFsdWUgdmFsdWU7Ci0gICAgICAgIExvY2F0aW9uKiBs
b2NhdGlvbjsKLSAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4qIHN0cnVjdHVyZTsKLSAgICB9Owot
Ci0gICAgdm9pZCByZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbihKU1ZhbHVlIHYsIExv
Y2F0aW9uKiwgU3Ryb25nPFN0cnVjdHVyZT4qKTsKLSAgICB2b2lkIGluaXRpYWxpemVIaWdoRmlk
ZWxpdHlMb2coKTsKLSAgICB2b2lkIHByb2Nlc3NIaWdoRmlkZWxpdHlMb2coKTsKLQotICAgIHVu
c2lnbmVkIG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsKLSAgICBzaXplX3QgbV9oaWdoRmlkZWxpdHlM
b2dDdXJyZW50UHJvY2Vzc09mZnNldDsKLSAgICBIaWdoRmlkZWxpdHlUeXBlM1R1cGxlKiBtX2hp
Z2hGaWRlbGl0eUxvZ1N0YXJ0UHRyOwotCi0gICAgQmFnPExvY2F0aW9uPiBtX2xvY2F0aW9uSW5m
bzsKKyAgICAvL0JhZzxUeXBlTG9jYXRpb24+IG1fbG9jYXRpb25JbmZvOwogCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKaW5k
ZXggYTVhMTBjYS4uODllM2M0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RydWN0aW9uLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCi0jaW5jbHVkZSAiTG9jYXRpb24uaCIKKyNpbmNs
dWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRl
ICJTcGVjaWFsUG9pbnRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgpAQCAtNDYsNyArNDYs
NiBAQCBjbGFzcyBBcnJheVByb2ZpbGU7CiBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsK
IGNsYXNzIFZhcmlhYmxlV2F0Y2hwb2ludFNldDsKIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsK
LS8vY2xhc3MgTG9jYXRpb247CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiBzdHJ1Y3QgSW5zdHJ1
Y3Rpb24gewpAQCAtMTIwLDcgKzExOSw3IEBAIHN0cnVjdCBJbnN0cnVjdGlvbiB7CiAgICAgICAg
IFdyaXRlQmFycmllckJhc2U8SlNBY3RpdmF0aW9uPiBhY3RpdmF0aW9uOwogICAgICAgICB2b2lk
KiBwb2ludGVyOwogICAgICAgICBib29sKiBwcmVkaWNhdGVQb2ludGVyOwotICAgICAgICBMb2Nh
dGlvbiogbG9jYXRpb247CisgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb247CiAgICAgfSB1
OwogICAgICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Mb2Nh
dGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTZiNzQwLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Mb2NhdGlvbi5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgTG9jYXRpb25faAotI2RlZmluZSBMb2NhdGlvbl9oCi0K
LSNpbmNsdWRlICJUeXBlU2V0LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBMb2NhdGlv
biB7Ci0gICAgICAgICAgICAgICAgICAgICAgIAotcHVibGljOgotICAgIExvY2F0aW9uKCkgCi0g
ICAgICAgIDogdHlwZVNldChuZXcgVHlwZVNldCgpKQotICAgIHsKLSAgICB9Ci0KLSAgICB+TG9j
YXRpb24oKQotICAgIHsKLSAgICAgICAgZGVsZXRlIHR5cGVTZXQ7Ci0gICAgfQotCi0gICAgdWlu
dDY0X3QgZ2xvYmFsVmFyaWFibGVJRDsKLSAgICBzaXplX3QgdW5saW5rZWRCeXRlQ29kZU9mZnNl
dDsKLSAgICBpbnRwdHJfdCBzb3VyY2VJRDsKLSAgICB1bnNpZ25lZCBsaW5lOwotICAgIHVuc2ln
bmVkIGNvbHVtbjsKLSAgICBUeXBlU2V0KiB0eXBlU2V0OwotfTsKLQotfSAvL25hbWVzcGFjZSBK
U0MKLQotI2VuZGlmIC8vTG9jYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1R5cGVMb2NhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVm
ZTVkNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VHlwZUxvY2F0aW9uLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVHlwZUxvY2F0aW9uX2gKKyNkZWZp
bmUgVHlwZUxvY2F0aW9uX2gKKworI2luY2x1ZGUgIlR5cGVTZXQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIFR5cGVMb2NhdGlvbiB7CisgICAgICAgICAgICAgICAgICAgICAgIAorcHVi
bGljOgorICAgIFR5cGVMb2NhdGlvbigpIAorICAgICAgICA6IHR5cGVTZXQobmV3IFR5cGVTZXQo
KSkKKyAgICB7CisgICAgfQorCisgICAgflR5cGVMb2NhdGlvbigpCisgICAgeworICAgICAgICBk
ZWxldGUgdHlwZVNldDsKKyAgICB9CisKKyAgICAvL3VpbnQ2NF90IGdsb2JhbFZhcmlhYmxlSUQ7
CisgICAgaW50NjRfdCBnbG9iYWxWYXJpYWJsZUlEOworICAgIHVpbnQ2NF90IGdsb2JhbEluc3Ry
dWN0aW9uSUQ7CisgICAgc2l6ZV90IHVubGlua2VkQnl0ZUNvZGVPZmZzZXQ7CisgICAgaW50cHRy
X3Qgc291cmNlSUQ7CisgICAgdW5zaWduZWQgbGluZTsKKyAgICB1bnNpZ25lZCBjb2x1bW47Cisg
ICAgVHlwZVNldCogdHlwZVNldDsKK307CisKK30gLy9uYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
L0xvY2F0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMDkwNzM1ZGYuLjdmNjdiNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCkBAIC0xMzgsMTMgKzEzOCw2IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZFZhcigKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChpc0dlbmVy
YXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpIHsKLSAgICAgICAgbmV3RW50cnkuc2V0
VW5pcXVlSUQodm0oKS0+Z2V0TmV4dFVuaXF1ZVZhcmlhYmxlSUQoKSk7Ci0gICAgICAgIHN5bWJv
bFRhYmxlKCkuc2V0KGxvY2tlciwgaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7Ci0gICAgICAgIC8v
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkuZ2V0KGxvY2tlciwgaWRlbnQu
aW1wbCgpKTsKLSAgICAgICAgLy9wcmludGYoImJ5dGVjb2RlIGdlbmVyYXRpbmcgdmFyaWFibGU6
JyVzJyB3aXRoIHVuaXF1ZWlkOiclbGx1J1xuIiwgaWRlbnQuYXNjaWkoKS5kYXRhKCksIGVudHJ5
LnVuaXF1ZUlEKCkpOwotICAgIH0KLQogICAgIGlmICh3YXRjaE1vZGUgPT0gSXNXYXRjaGFibGUp
IHsKICAgICAgICAgd2hpbGUgKG1fd2F0Y2hhYmxlVmFyaWFibGVzLnNpemUoKSA8IHN0YXRpY19j
YXN0PHNpemVfdD4obV9jb2RlQmxvY2stPm1fbnVtVmFycykpCiAgICAgICAgICAgICBtX3dhdGNo
YWJsZVZhcmlhYmxlcy5hcHBlbmQoSWRlbnRpZmllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKaW5kZXggMTgyNTBiOS4uZWM4NDc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKQEAgLTk2OSw2ICs5NjksNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoSGVhcE9wZXJh
dGlvbiBjb2xsZWN0aW9uVHlwZSkKICNpZiBFTkFCTEUoQUxMT0NBVElPTl9MT0dHSU5HKQogICAg
IGRhdGFMb2dGKCJKU0MgR0Mgc3RhcnRpbmcgY29sbGVjdGlvbi5cbiIpOwogI2VuZGlmCisgICAg
dm0oKS0+dXBkYXRlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVTdGF0ZSgpOwogICAgIAogICAgIGRv
dWJsZSBiZWZvcmUgPSAwOwogICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBmYmJlN2M0Li42
MmNhZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIK
ICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVl
LmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCkBAIC01NjIs
MTkgKzU2Myw5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfcmVnZXhwKQog
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2Zp
ZGVsaXR5KQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTG9jYXRpb24qIGxvY2F0aW9uID0g
cGNbMl0udS5sb2NhdGlvbjsKKyAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gcGNbMl0udS5s
b2NhdGlvbjsKICAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7Ci0gICAgU3Ry
b25nPFN0cnVjdHVyZT4qIHB0ciA9IDA7Ci0gICAgLy9TdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1
cmU7Ci0gICAgaWYgKHYuaXNDZWxsKCkpIHsKLSAgICAgICAgcHRyID0gbmV3IFN0cm9uZzxTdHJ1
Y3R1cmU+KCk7Ci0gICAgICAgIHB0ci0+c2V0KHZtLCB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7
Ci0gICAgfQotICAgIC8vcHJpbnRmKCJwdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOiAnJXMnIHVu
aXF1ZVZhcmlhYmxlSUQ6JyVsbHUnLCBsaW5lOicldScsIGNvbHVtbjonJXUnIFxuIiwgaWRlbnQu
YXNjaWkoKS5kYXRhKCksIGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlELCBsb2NhdGlvbi0+bGlu
ZSwgbG9jYXRpb24tPmNvbHVtbik7Ci0gICAgZXhlYy0+Y29kZUJsb2NrKCktPnJlY29yZFR5cGVJ
bmZvcm1hdGlvbkZvckxvY2F0aW9uKHYsIGxvY2F0aW9uLCBwdHIpOwotICAgIC8vU3RyaW5nIHZh
cihleGVjLT5jb2RlQmxvY2soKS0+bmFtZUZvclJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlcikpOwot
ICAgIC8vQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJsb2NrKCktPnN5bWJv
bFRhYmxlKCktPm1fbG9jayk7Ci0gICAgLy9wcmludGYoInByb2ZpbGVfdHlwZXNfd2l0aF9oaWdo
X2ZpZGVsaXR5IGV4ZWN1dGluZyBhc3NpZ24gdG8gZ2xvYmFsVmFyaWFibGVJRDonJWxsdScsIGxp
bmU6JyV1JywgY29sdW1uOicldSdcbiIsIGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlELCBsb2Nh
dGlvbi0+bGluZSwgbG9jYXRpb24tPmNvbHVtbik7CisgICAgdm0uaGlnaEZpZGVsaXR5TG9nKCkt
PnJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9uKHYsIGxvY2F0aW9uKTsKICAgICBMTElO
VF9FTkRfSU1QTCgpOwogfQogCkBAIC0xNDc3LDQ4ICsxNDY4LDE3IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV9zY29wZSkKIAogTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3B1dF90b19zY29wZSkKIHsKLSAgICAvL0xMSU5UX0JFR0lOKCk7Ci0gICAgLy9D
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIC8vY29uc3QgSWRl
bnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsK
LSAgICAvL0pTT2JqZWN0KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+KExMSU5UX09QKDEpLmpz
VmFsdWUoKSk7Ci0gICAgLy9KU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7
Ci0gICAgLy9SZXNvbHZlTW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUgPSBSZXNvbHZlTW9kZUFuZFR5
cGUocGNbNF0udS5vcGVyYW5kKTsKLQotICAgIC8vaWYgKG1vZGVBbmRUeXBlLm1vZGUoKSA9PSBU
aHJvd0lmTm90Rm91bmQgJiYgIXNjb3BlLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCkpCi0gICAg
Ly8gICAgTExJTlRfVEhST1coY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVu
dCkpOwotCi0gICAgLy9QdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSk7Ci0gICAgLy9zY29wZS0+bWV0aG9kVGFibGUoKS0+cHV0KHNjb3BlLCBleGVj
LCBpZGVudCwgdmFsdWUsIHNsb3QpOwotCi0gICAgLy8vLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFs
cy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRp
ZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KLSAgICAvL2lmICht
b2RlQW5kVHlwZS50eXBlKCkgPT0gR2xvYmFsUHJvcGVydHkgfHwgbW9kZUFuZFR5cGUudHlwZSgp
ID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgewotICAgIC8vICAgIGlm
IChzbG90LmlzQ2FjaGVhYmxlUHV0KCkgJiYgc2xvdC5iYXNlKCkgPT0gc2NvcGUgJiYgc2NvcGUt
PnN0cnVjdHVyZSgpLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKLSAgICAvLyAg
ICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAg
IC8vICAgICAgICBwY1s1XS51LnN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgc2NvcGUtPnN0cnVjdHVyZSgpKTsKLSAgICAvLyAgICAgICAgcGNb
Nl0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKLSAgICAvLyAgICB9Ci0gICAgLy99
Ci0KICAgICBMTElOVF9QVVRfVE9fU0NPUEVfQ09NTU9OKCk7CiAgICAgTExJTlRfRU5EKCk7CiB9
CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9m
aWxlKQogewotICAgIC8vIHB1dF90b19zY29wZV93aXRoX3Byb2ZpbGUgc2NvcGUsIGlkLCB2YWx1
ZSwgUmVzb2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQsIExvY2F0aW9uKgorICAg
IC8vIHB1dF90b19zY29wZV93aXRoX3Byb2ZpbGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVzb2x2ZU1v
ZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQsIFR5cGVMb2NhdGlvbioKICAgICBMTElOVF9Q
VVRfVE9fU0NPUEVfQ09NTU9OKCk7Ci0gICAgLy9UT0RPOiBtYXliZSBtYWtlIG93biBkaXNjcmV0
ZSBmdW5jaXRvbiBmb3IgcHJvZmlsaW5nIGNhc2Ugdy9vdXQgdGhpcyBpZiBzdGF0ZW1lbnQsIG1h
eWJlIG1ha2UgYSBtYWNybyBzaGFyaW5nIGNvZGUgYmV0d2VlbiB0aGUgdHdvPwotICAgIExvY2F0
aW9uKiBsb2NhdGlvbiA9IHBjWzddLnUubG9jYXRpb247CisgICAgVHlwZUxvY2F0aW9uKiBsb2Nh
dGlvbiA9IHBjWzddLnUubG9jYXRpb247CiAgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCk7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4qIHB0ciA9IDA7Ci0gICAgaWYgKHYuaXND
ZWxsKCkpIHsKLSAgICAgICAgcHRyID0gbmV3IFN0cm9uZzxTdHJ1Y3R1cmU+KCk7Ci0gICAgICAg
IHB0ci0+c2V0KHZtLCB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgfQotICAgIC8vcHJp
bnRmKCJwdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOiAnJXMnIHVuaXF1ZVZhcmlhYmxlSUQ6JyVs
bHUnLCBsaW5lOicldScsIGNvbHVtbjonJXUnIFxuIiwgaWRlbnQuYXNjaWkoKS5kYXRhKCksIGxv
Y2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlELCBsb2NhdGlvbi0+bGluZSwgbG9jYXRpb24tPmNvbHVt
bik7Ci0gICAgZXhlYy0+Y29kZUJsb2NrKCktPnJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxvY2F0
aW9uKHYsIGxvY2F0aW9uLCBwdHIpOwotICAgIGRlbGV0ZSBwdHI7Ci0KKyAgICB2bS5oaWdoRmlk
ZWxpdHlMb2coKS0+cmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24odiwgbG9jYXRpb24p
OwogICAgIExMSU5UX0VORCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDJlOTc5YzIuLjhh
YTgxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNDQwLDIzICsxNDQwLDIzIEBAIF9sbGludF9v
cF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKIAogCiBtYWNybyBwdXRCeUlkKGdldFByb3BlcnR5U3Rv
cmFnZSkKLSAgICAjdHJhY2VFeGVjdXRpb24oKQotICAgICN3cml0ZUJhcnJpZXJPbk9wZXJhbmRz
KDEsIDMpCi0gICAgI2xvYWRpIDRbUENdLCB0MwotICAgICNsb2FkaSAxNltQQ10sIHQxCi0gICAg
I2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJ
ZFNsb3cpCi0gICAgI2xvYWRpIDEyW1BDXSwgdDIKLSAgICAjZ2V0UHJvcGVydHlTdG9yYWdlKAot
ICAgICMgICAgdDAsCi0gICAgIyAgICB0MywKLSAgICAjICAgIG1hY3JvIChwcm9wZXJ0eVN0b3Jh
Z2UsIHNjcmF0Y2gpCi0gICAgIyAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qw
XSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgIyAgICAgICAgbG9hZGkgMjBbUENdLCB0MQotICAg
ICMgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCBzY3JhdGNoLCB0MikKLSAg
ICAjICAgICAgICBzdG9yZWkgc2NyYXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFd
Ci0gICAgIyAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwg
dDFdCi0gICAgIyAgICAgICAgZGlzcGF0Y2goOSkKLSAgICAjICAgIGVuZCkKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcygxLCAzKQorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCisgICAgICAgIHQwLAorICAgICAgICB0MywK
KyAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgICAg
ICAgICAgbG9hZGkgMjBbUENdLCB0MQorICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDIsIHNjcmF0Y2gsIHQyKQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09m
ZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQorICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCisgICAgICAgICAgICBkaXNwYXRjaCg5KQorICAg
ICAgICBlbmQpCiAKICAgICAub3BQdXRCeUlkU2xvdzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfcHV0X2J5X2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNWQ2M2U3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgiCisjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCit2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6aW5pdGlhbGl6ZUhpZ2hG
aWRlbGl0eUxvZygpCit7CisgICAgbV9oaWdoRmlkZWxpdHlMb2dTaXplID0gMTAwMDA7CisgICAg
bV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0ciA9IChMb2czVHVwbGUqKikgbWFsbG9jKHNpemVvZihM
b2czVHVwbGUqKSAqIG1faGlnaEZpZGVsaXR5TG9nU2l6ZSk7CisgICAgTG9nM1R1cGxlKiogcHRy
ID0gbV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0cjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9oaWdoRmlkZWxpdHlMb2dTaXplOyBpKyspIHsKKyAgICAgICAgKnB0ciA9IG5ldyBMb2cz
VHVwbGU7IAorICAgICAgICBwdHIrKzsKKyAgICB9CisKKyAgICBtX2hpZ2hGaWRlbGl0eUxvZ0N1
cnJlbnRQcm9jZXNzT2Zmc2V0ID0gMDsKK30KKworSGlnaEZpZGVsaXR5TG9nOjp+SGlnaEZpZGVs
aXR5TG9nKCkKK3sKKyAgICBMb2czVHVwbGUqKiBwdHIgPSBtX2hpZ2hGaWRlbGl0eUxvZ1N0YXJ0
UHRyOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9oaWdoRmlkZWxpdHlMb2dTaXplOyBp
KyspIHsKKyAgICAgICAgZGVsZXRlICpwdHI7CisgICAgICAgIHB0cisrOworICAgIH0KKworICAg
IGZyZWUobV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0cik7Cit9CisKK3ZvaWQgSGlnaEZpZGVsaXR5
TG9nOjpyZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbihKU1ZhbHVlIHYsIFR5cGVMb2Nh
dGlvbiogbG9jYXRpb24pCit7CisgICAgQVNTRVJUKG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQdHIp
OworICAgIEFTU0VSVChtX2hpZ2hGaWRlbGl0eUxvZ0N1cnJlbnRQcm9jZXNzT2Zmc2V0IDwgbV9o
aWdoRmlkZWxpdHlMb2dTaXplKTsKKworICAgIExvZzNUdXBsZSogdHVwbGUgPSAqKG1faGlnaEZp
ZGVsaXR5TG9nU3RhcnRQdHIgKyBtX2hpZ2hGaWRlbGl0eUxvZ0N1cnJlbnRQcm9jZXNzT2Zmc2V0
KTsKKyAgICB0dXBsZS0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICB0dXBsZS0+dmFsdWUgPSB2
OworICAgIHR1cGxlLT5zdHJ1Y3R1cmUgPSAodi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVj
dHVyZSgpIDogMCk7CisKKyAgICBtX2hpZ2hGaWRlbGl0eUxvZ0N1cnJlbnRQcm9jZXNzT2Zmc2V0
ICs9IDE7CisgICAgaWYgKG1faGlnaEZpZGVsaXR5TG9nQ3VycmVudFByb2Nlc3NPZmZzZXQgPT0g
bV9oaWdoRmlkZWxpdHlMb2dTaXplKSB7CisgICAgICAgIHByb2Nlc3NIaWdoRmlkZWxpdHlMb2co
KTsKKyAgICB9Cit9CisKK3ZvaWQgSGlnaEZpZGVsaXR5TG9nOjpwcm9jZXNzSGlnaEZpZGVsaXR5
TG9nKCkKK3sKKyAgICBMb2czVHVwbGUqKiBwdHIgPSBtX2hpZ2hGaWRlbGl0eUxvZ1N0YXJ0UHRy
OworICAgIHNpemVfdCBpID0gMDsKKyAgICB3aGlsZSAoaSA8IG1faGlnaEZpZGVsaXR5TG9nQ3Vy
cmVudFByb2Nlc3NPZmZzZXQpIHsKKyAgICAgICAgTG9nM1R1cGxlKiB0dXBsZSA9ICpwdHI7Cisg
ICAgICAgIFR5cGVTZXQqIHR5cGVTZXQgPSB0dXBsZS0+bG9jYXRpb24tPnR5cGVTZXQ7CisgICAg
ICAgIHR5cGVTZXQtPmFkZFR5cGVGb3JWYWx1ZSh0dXBsZS0+dmFsdWUsIHR1cGxlLT5zdHJ1Y3R1
cmUgPyB0dXBsZS0+c3RydWN0dXJlIDogbnVsbHB0cik7CisgICAgICAgIHB0cisrOworICAgICAg
ICBpKys7CisgICAgfQorCisgICAgbV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNl
dCA9IDA7Cit9CisKKy8vdm9pZCBIaWdoRmlkZWxpdHlMb2c6Om1lcmdlV2l0aEdsb2JhbFByb2Zp
bGVTdGF0ZShIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIqIHByb2ZpbGVyKQorLy97CisvLyAgICBw
cm9jZXNzSGlnaEZpZGVsaXR5TG9nKCk7CisvLyAgICBtZXJnZUxvY2F0aW9uQmFnV2l0aFZNKCk7
CisvL30KKworCit9IC8vbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45NTU5MWVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhpZ2hGaWRlbGl0eUxvZ19o
CisjZGVmaW5lIEhpZ2hGaWRlbGl0eUxvZ19oCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisj
aW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CisgICAgLy9jbGFzcyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI7CisgICAgY2xhc3MgVHlwZUxv
Y2F0aW9uOworCitjbGFzcyBIaWdoRmlkZWxpdHlMb2cgeworCitwdWJsaWM6CisKKyAgICBzdHJ1
Y3QgTG9nM1R1cGxlIHsKKyAgICAgICAgcHVibGljOgorCisgICAgICAgIEpTVmFsdWUgdmFsdWU7
CisgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb247IC8vVHlwZUxvY2F0aW9uKiBhcmUgYWxs
b2NhdGVkIGR1cmluZyBsaW5rIHRpbWUgaW4gYSBDb2RlQmxvY2suIFRoaXMgY29kZSBhc3N1bWVz
IHRoYXQgbm8gY29kZSBibG9ja3MgZGllIGJlZm9yZSB3ZSBwcm9jZXNzIHRoZSBsb2cuCisgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgIH07CisKKyAgICBIaWdoRmlkZWxpdHlMb2co
KQorICAgICAgICAvLzogbV9oaWdoRmlkZWxpdHlMb2dTaXplKDEwMDAwKQorICAgIHsKKyAgICAg
ICAgaW5pdGlhbGl6ZUhpZ2hGaWRlbGl0eUxvZygpOworICAgIH0KKworICAgIH5IaWdoRmlkZWxp
dHlMb2coKTsKKworICAgIHZvaWQgcmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24oSlNW
YWx1ZSB2LCBUeXBlTG9jYXRpb24qKTsKKyAgICB2b2lkIHByb2Nlc3NIaWdoRmlkZWxpdHlMb2co
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKKwor
ICAgIHVuc2lnbmVkIG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsKKyAgICBzaXplX3QgbV9oaWdoRmlk
ZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldDsKKyAgICBMb2czVHVwbGUqKiBtX2hpZ2hGaWRl
bGl0eUxvZ1N0YXJ0UHRyOworCit9OworCit9CisKKyNlbmRpZiAvL0hpZ2hGaWRlbGl0eUxvZ19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyLmNwcAppbmRleCA5OWRjNzRhLi43ZjFmZTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlci5jcHAKQEAgLTMwLDEyNCArMzAsNzQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLQotU3Ry
aW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2Uo
dW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGlu
ZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRy
X3Qgc291cmNlSUQpCi17Ci0gICAgRnVuY3Rpb25Cb3VuZGFyeU1hcCYgZnVuY3Rpb25Cb3VuZGFy
eSA9IG1faWRUb0hpc3RvcnlNYXAuZmluZChzb3VyY2VJRCktPnZhbHVlOwotICAgIE5lYXJlc3RU
ZXh0dWFsQmxvY2s8VHlwZUJvdW5kYXJ5PiBuZWFyZXN0QmxvY2soc3RhcnRMaW5lLCBzdGFydENv
bHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBzb3VyY2VJRCk7Ci0gICAgZm9yIChhdXRvIGl0ZXIg
PSBmdW5jdGlvbkJvdW5kYXJ5LmJlZ2luKCksIGVuZCA9IGZ1bmN0aW9uQm91bmRhcnkuZW5kKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgVHlwZUJvdW5kYXJ5JiBib3VuZGFyeSA9
IGl0ZXItPnZhbHVlOwotICAgICAgICBuZWFyZXN0QmxvY2sudXBkYXRlKGJvdW5kYXJ5Lm1fc3Rh
cnRMaW5lLCBib3VuZGFyeS5tX3N0YXJ0Q29sdW1uLCBib3VuZGFyeS5tX2VuZExpbmUsIGJvdW5k
YXJ5Lm1fZW5kQ29sdW1uLCBib3VuZGFyeS5tX3NvdXJjZUlELCBib3VuZGFyeSk7Ci0gICAgfQot
Ci0gICAgaWYgKG5lYXJlc3RCbG9jay5mb3VuZEFUYXJnZXQoKSkgewotICAgICAgICBUeXBlQm91
bmRhcnkmIGJvdW5kYXJ5ID0gbmVhcmVzdEJsb2NrLmJlc3RUYXJnZXQoKTsKLSAgICAgICAgU3Ry
aW5nIHMoYm91bmRhcnkudHlwZXNGb3JWYXJpYWJsZSh2YXJpYWJsZU5hbWUpLnNlZW5UeXBlcygp
KTsKLSAgICAgICAgcmV0dXJuIHM7Ci0gICAgfSAKLQotICAgIHJldHVybiAiIjsKLX0KLQotdm9p
ZCBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6Om1lcmdlVHlwZXNGb3JDb2RlQmxvY2soQ29kZUJs
b2NrKiBjb2RlQmxvY2spCi17Ci0gICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci0gICAgaW50cHRyX3Qgc291cmNlSUQgPSBleGVj
dXRhYmxlLT5zb3VyY2VJRCgpOwotCi0gICAgRnVuY3Rpb25Cb3VuZGFyeU1hcCYgYm91bmRhcnlN
YXAgPSBtYWtlT3JHZXRGdW5jdGlvbkJvdW5kYXJ5KHNvdXJjZUlEKTsKLSAgICBUeXBlQm91bmRh
cnkmIHR5cGVCb3VuZGFyeSA9IG1ha2VPckdldFR5cGVCb3VuZGFyeShjb2RlQmxvY2ssIGJvdW5k
YXJ5TWFwKTsKLQotICAgIHR5cGVCb3VuZGFyeS5tZXJnZVdpdGhUeXBlSGlzdG9yeShjb2RlQmxv
Y2spOwotfQotCi1IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OkZ1bmN0aW9uQm91bmRhcnlNYXAm
IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6bWFrZU9yR2V0RnVuY3Rpb25Cb3VuZGFyeShpbnRw
dHJfdCBpZCkKLXsKLSAgICBhdXRvIGl0ZXIgPSBtX2lkVG9IaXN0b3J5TWFwLmZpbmQoaWQpOwot
ICAgIGF1dG8gZW5kID0gbV9pZFRvSGlzdG9yeU1hcC5lbmQoKTsKLSAgICBpZiAoaXRlciAhPSBl
bmQpCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKLQotICAgIEZ1bmN0aW9uQm91bmRhcnlN
YXAgbWFwOwotICAgIG1faWRUb0hpc3RvcnlNYXAuc2V0KGlkLCBtYXApOwotCi0gICAgcmV0dXJu
IG1faWRUb0hpc3RvcnlNYXAuZmluZChpZCktPnZhbHVlOwotfQotCi1UeXBlQm91bmRhcnkmIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6bWFrZU9yR2V0VHlwZUJvdW5kYXJ5KENvZGVCbG9jayog
Y29kZUJsb2NrLCBGdW5jdGlvbkJvdW5kYXJ5TWFwJiBtYXApCitTdHJpbmcgSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExp
bmUsIHVuc2lnbmVkICwgdW5zaWduZWQgLCB1bnNpZ25lZCAsIGNvbnN0IFN0cmluZyYgLCBpbnRw
dHJfdCBzb3VyY2VJRCkKIHsKLSAgICBTdHJpbmcgaGFzaChUeXBlQm91bmRhcnk6OmJvdW5kYXJ5
SGFzaEZvckNvZGVCbG9jayhjb2RlQmxvY2spKTsKLSAgICBhdXRvIGl0ZXIgPSBtYXAuZmluZCho
YXNoKTsKLSAgICBhdXRvIGVuZCA9IG1hcC5lbmQoKTsKLSAgICBpZiAoaXRlciAhPSBlbmQpCi0g
ICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKLQotICAgIFR5cGVCb3VuZGFyeSBib3VuZGFyeShj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKTsKLSAgICBtYXAuc2V0KGhhc2gsIGJvdW5kYXJ5
KTsKLQotICAgIHJldHVybiBtYXAuZmluZChoYXNoKS0+dmFsdWU7CisgICAgLy9hdXRvIGl0ZXIg
PSBtX2xvY2F0aW9uVmFyaWFibGVNYXAuZmluZChnZXRMb2NhdGlvbkJhc2VkSGFzaChzb3VyY2VJ
RCwgc3RhcnRMaW5lKSk7CisgICAgLy9hdXRvIGVuZCA9IG1fbG9jYXRpb25WYXJpYWJsZU1hcC5l
bmQoKTsKKyAgICAvLy8vVE9ETzogdGhpcyBhc3NzZXJ0aW9uIHNob3VsZCBhbHdheXMgaG9sZCwg
YnV0IGRvZXNuJ3QgYi9jIGhhdmVuJ3QgZmlndXJlZCBvdXQgdW5pcXVlSURzIHcvIHN5bWJvbCB0
YWJsZXMgeWV0CisgICAgLy8vL0FTU0VSVChpdGVyICE9IGVuZCk7CisgICAgLy9pZiAoaXRlciA9
PSBlbmQpCisgICAgLy8gICAgcmV0dXJuICAiIjsKKworICAgIC8vU3RyaW5nIHMoaXRlci0+dmFs
dWUuc2VlblR5cGVzKCkpOworICAgIC8vcmV0dXJuIHM7CisKKyAgICBhdXRvIGl0ZXIgPSBtX2xv
Y2F0aW9uVG9HbG9iYWxNYXAuZmluZChnZXRMb2NhdGlvbkJhc2VkSGFzaChzb3VyY2VJRCwgc3Rh
cnRMaW5lKSk7CisgICAgYXV0byBlbmQgPSBtX2xvY2F0aW9uVG9HbG9iYWxNYXAuZW5kKCk7Cisg
ICAgLy9UT0RPOiB0aGlzIGFzc3NlcnRpb24gc2hvdWxkIGFsd2F5cyBob2xkLCBidXQgZG9lc24n
dCBiL2MgaGF2ZW4ndCBmaWd1cmVkIG91dCB1bmlxdWVJRHMgdy8gc3ltYm9sIHRhYmxlcyB5ZXQK
KyAgICAvL0FTU0VSVChpdGVyICE9IGVuZCk7CisgICAgaWYgKGl0ZXIgPT0gZW5kKQorICAgICAg
ICByZXR1cm4gICIiOworCisgICAgYXV0byBpdGVyMiA9IG1fZ2xvYmFsVmFyaWFibGVNYXAuZmlu
ZChpdGVyLT52YWx1ZSk7CisgICAgYXV0byBlbmQyID0gbV9nbG9iYWxWYXJpYWJsZU1hcC5lbmQo
KTsKKyAgICBpZiAoaXRlcjIgPT0gZW5kMikKKyAgICAgICAgcmV0dXJuICIiOworCisgICAgcmV0
dXJuIGl0ZXIyLT52YWx1ZS5zZWVuVHlwZXMoKTsKIH0KIAotCi1UeXBlQm91bmRhcnk6OlR5cGVC
b3VuZGFyeSgpCit2b2lkIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6bWVyZ2VJblR5cGVzRm9y
TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2NhdGlvbikKIHsKLX0KLQotVHlwZUJvdW5kYXJ5OjpU
eXBlQm91bmRhcnkoU2NyaXB0RXhlY3V0YWJsZSogZSkKLSAgICA6IG1fc3RhcnRMaW5lKGUtPmxp
bmVObygpKQotICAgICwgbV9zdGFydENvbHVtbihlLT5zdGFydENvbHVtbigpKQotICAgICwgbV9l
bmRMaW5lKGUtPmxhc3RMaW5lKCkpCi0gICAgLCBtX2VuZENvbHVtbihlLT5lbmRDb2x1bW4oKSkK
LSAgICAsIG1fc291cmNlSUQoZS0+c291cmNlSUQoKSkKLXsKLX0KLQotVHlwZVNldCYgVHlwZUJv
dW5kYXJ5Ojp0eXBlc0ZvclZhcmlhYmxlKGNvbnN0IFN0cmluZyB2YXIpCi17Ci0gICAgYXV0byBp
dGVyID0gbV92YXJpYWJsZVRvVHlwZVNldE1hcC5maW5kKHZhcik7Ci0gICAgYXV0byBlbmQgPSBt
X3ZhcmlhYmxlVG9UeXBlU2V0TWFwLmVuZCgpOwotICAgIGlmIChpdGVyICE9IGVuZCkKLSAgICAg
ICAgcmV0dXJuIGl0ZXItPnZhbHVlOwotCi0gICAgLy9wcmludGYoIk5vIHZhcmlhYmxlIG5hbWVk
ICclcycgd2hlbiBwaW5naW5nIHR5cGVzXG4iLCB2YXIuYXNjaWkoKS5kYXRhKCkpOwotICAgIFR5
cGVTZXQgdDsKLSAgICBtX3ZhcmlhYmxlVG9UeXBlU2V0TWFwLnNldCh2YXIsIHQpOwotICAgIHJl
dHVybiBtX3ZhcmlhYmxlVG9UeXBlU2V0TWFwLmZpbmQodmFyKS0+dmFsdWU7Ci19CisgICAgaWYg
KGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlEID09IC0xKQorICAgICAgICBnb3RvIG5leHQ7CisK
KyAgICB7CisgICAgICAgIGlmICghbV9nbG9iYWxWYXJpYWJsZU1hcC5pc1ZhbGlkS2V5KGxvY2F0
aW9uLT5nbG9iYWxWYXJpYWJsZUlEKSkgeworICAgICAgICAgICAgcHJpbnRmKCJHbG9iYWxWYXJp
YWJsTWFwIGludmFsaWQgaWQ6JyVsbHUnXG4iLCBsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCk7
CisgICAgICAgICAgICBnb3RvIG5leHQ7IAorICAgICAgICB9CisgICAgICAgIGF1dG8gaXRlciA9
IG1fZ2xvYmFsVmFyaWFibGVNYXAuZmluZChsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCk7Cisg
ICAgICAgIGF1dG8gZW5kID0gbV9nbG9iYWxWYXJpYWJsZU1hcC5lbmQoKTsKKyAgICAgICAgVHlw
ZVNldCB0eXBlU2V0ID0gKihsb2NhdGlvbi0+dHlwZVNldCk7CisgICAgICAgIGlmIChpdGVyICE9
IGVuZCkgCisgICAgICAgICAgICB0eXBlU2V0Lm1lcmdlV2l0aFR5cGVTZXQoaXRlci0+dmFsdWUp
OworCisgICAgICAgIG1fZ2xvYmFsVmFyaWFibGVNYXAuc2V0KGxvY2F0aW9uLT5nbG9iYWxWYXJp
YWJsZUlELCB0eXBlU2V0KTsKKyAgICB9CiAKLXZvaWQgVHlwZUJvdW5kYXJ5OjptZXJnZVdpdGhU
eXBlSGlzdG9yeShDb2RlQmxvY2sqKQotewotICAgIC8vVE9ETzogbWF5YmUgY29tcHV0ZSBpbnZl
cnNlIHN5bWJvbCB0YWJsZSwgbWFraW5nIHRoaXMgTygybikgaW5zdGVhZCBvZiBPKG5eMikKLSAg
ICAvLyAgICAgICBidXQsIGFyZSB0aGUgc2NvcGUgc2l6ZXMgbGFyZ2UgZW5vdWdoIHRvIGp1c3Rp
ZnkgdGhpcz8KLSAgICAKLSAgICAvL2ZvciAoaW50IGkgPSAwLCBzaXplID0gdHlwZUhpc3Rvcnku
c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgLy8gICAgaW50IHJlZ0lkID0gdHlwZUhpc3Rv
cnkub3BlcmFuZEZvckluZGV4KGkpOwotICAgIC8vICAgIFZpcnR1YWxSZWdpc3RlciByZWcocmVn
SWQpOwotICAgIC8vICAgIFN0cmluZyB2YXJOYW1lID0gY29kZUJsb2NrLT5uYW1lRm9yUmVnaXN0
ZXIocmVnKTsKLSAgICAvLyAgICBpZiAoIXZhck5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgLy8gICAg
ICAgIFR5cGVTZXQmIHR5cGVTZXQgPSB0eXBlSGlzdG9yeS5hdChpKTsKLSAgICAvLyAgICAgICAg
YXV0byBpdGVyID0gbV92YXJpYWJsZVRvVHlwZVNldE1hcC5maW5kKHZhck5hbWUpOwotICAgIC8v
ICAgICAgICBhdXRvIGVuZCA9IG1fdmFyaWFibGVUb1R5cGVTZXRNYXAuZW5kKCk7Ci0gICAgLy8g
ICAgICAgIGlmIChpdGVyICE9IGVuZCkgCi0gICAgLy8gICAgICAgICAgICB0eXBlU2V0Lm1lcmdl
V2l0aFR5cGVTZXQoaXRlci0+dmFsdWUpOwotICAgIC8vICAgICAgICBtX3ZhcmlhYmxlVG9UeXBl
U2V0TWFwLnNldCh2YXJOYW1lLCB0eXBlU2V0KTsKLSAgICAvLyAgICB9IGVsc2UgewotICAgIC8v
ICAgICAgICBwcmludGYoIiIpOwotICAgIC8vICAgIH0KLSAgICAvL30KLX0KKyAgICBuZXh0Ogor
ICAgIFN0cmluZyBoYXNoU3RyaW5nKGdldExvY2F0aW9uQmFzZWRIYXNoKGxvY2F0aW9uLT5zb3Vy
Y2VJRCwgbG9jYXRpb24tPmxpbmUpKTsKKyAgICB7CisgICAgICAgIGlmICghbV9sb2NhdGlvblZh
cmlhYmxlTWFwLmlzVmFsaWRLZXkoaGFzaFN0cmluZykpCisgICAgICAgICAgICBwcmludGYoIkxv
Y2FsVmFpcmFibE1hcCBpbnZhbGlkIGlkOiclcydcbiIsIGhhc2hTdHJpbmcuYXNjaWkoKS5kYXRh
KCkpOworICAgICAgICBhdXRvIGl0ZXIgPSBtX2xvY2F0aW9uVmFyaWFibGVNYXAuZmluZChoYXNo
U3RyaW5nKTsKKyAgICAgICAgYXV0byBlbmQgPSBtX2xvY2F0aW9uVmFyaWFibGVNYXAuZW5kKCk7
CisgICAgICAgIFR5cGVTZXQgdHlwZVNldCA9ICoobG9jYXRpb24tPnR5cGVTZXQpOworICAgICAg
ICBpZiAoaXRlciAhPSBlbmQpIAorICAgICAgICAgICAgdHlwZVNldC5tZXJnZVdpdGhUeXBlU2V0
KGl0ZXItPnZhbHVlKTsKKworICAgICAgICBtX2xvY2F0aW9uVmFyaWFibGVNYXAuc2V0KGhhc2hT
dHJpbmcsIHR5cGVTZXQpOworICAgIH0gCiAKLVN0cmluZyBUeXBlQm91bmRhcnk6OmJvdW5kYXJ5
SGFzaEZvckNvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBTY3JpcHRFeGVj
dXRhYmxlKiBlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKLSAgICByZXR1cm4gVHlw
ZUJvdW5kYXJ5Ojpib3VuZGFyeUhhc2hGb3JSYW5nZShlLT5saW5lTm8oKSwgZS0+c3RhcnRDb2x1
bW4oKSwgZS0+bGFzdExpbmUoKSwgZS0+ZW5kQ29sdW1uKCkpOworICAgIGlmIChsb2NhdGlvbi0+
Z2xvYmFsVmFyaWFibGVJRCAhPSAtMSkgeworICAgICAgICBtX2xvY2F0aW9uVG9HbG9iYWxNYXAu
c2V0KGhhc2hTdHJpbmcsIGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlEKTsKKyAgICB9CiB9CiAK
LVN0cmluZyBUeXBlQm91bmRhcnk6OmJvdW5kYXJ5SGFzaEZvclJhbmdlKHVuc2lnbmVkIHN0YXJ0
TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVu
ZENvbHVtbikKK1dURjo6U3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYXRp
b25CYXNlZEhhc2goaW50cHRyX3QgaWQsIHVuc2lnbmVkIGxpbmUpCiB7Ci0gICAgcmV0dXJuIFN0
cmluZzo6bnVtYmVyKHN0YXJ0TGluZSkgKyBTdHJpbmcoIjoiKSAKLSAgICAgICAgICAgKyBTdHJp
bmc6Om51bWJlcihzdGFydENvbHVtbikgKyBTdHJpbmcoIjoiKSAKLSAgICAgICAgICAgKyBTdHJp
bmc6Om51bWJlcihlbmRMaW5lKSArIFN0cmluZygiOiIpCi0gICAgICAgICAgICsgU3RyaW5nOjpu
dW1iZXIoZW5kQ29sdW1uKTsKKyAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoaWQpICsgU3RyaW5n
KCI6IikgKyBTdHJpbmc6Om51bWJlcihsaW5lKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCmluZGV4
IDc0MzFhN2IuLjQwMjUzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVk
ZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDQsNDAgKzQ1LDIwIEBAIGNsYXNzIEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlciB7CiAKIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0VHlwZXNGb3JWYXJp
YWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxl
TmFtZSwgaW50cHRyX3Qgc291cmNlSUQpOwotICAgIHZvaWQgbWVyZ2VUeXBlc0ZvckNvZGVCbG9j
ayhDb2RlQmxvY2sqKTsKLQorICAgIHZvaWQgbWVyZ2VJblR5cGVzRm9yTG9jYXRpb24oVHlwZUxv
Y2F0aW9uKik7CiAgICAgCiBwcml2YXRlOgotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFR5
cGVCb3VuZGFyeT4gRnVuY3Rpb25Cb3VuZGFyeU1hcDsgLy8xIHRvIDEgdy8gYSBzY3JpcHQgZmls
ZS90YWcuCi0gICAgdHlwZWRlZiBIYXNoTWFwPGludHB0cl90LCBGdW5jdGlvbkJvdW5kYXJ5TWFw
PiBTb3VyY2VJRFRvSGlzdG9yeTsKLSAgICBTb3VyY2VJRFRvSGlzdG9yeSBtX2lkVG9IaXN0b3J5
TWFwOwotICAgIEZ1bmN0aW9uQm91bmRhcnlNYXAmIG1ha2VPckdldEZ1bmN0aW9uQm91bmRhcnko
aW50cHRyX3QpOwotICAgIFR5cGVCb3VuZGFyeSYgbWFrZU9yR2V0VHlwZUJvdW5kYXJ5KENvZGVC
bG9jayosIEZ1bmN0aW9uQm91bmRhcnlNYXAmKTsKLX07Ci0KLS8vbWFueSB0byBvbmUgdy8gYSBm
aWxlL3NjcmlwdCB0YWcKLWNsYXNzIFR5cGVCb3VuZGFyeSB7Ci0KLXB1YmxpYzoKKyAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgZ2V0TG9jYXRpb25CYXNlZEhhc2goaW50cHRyX3QsIHVuc2lnbmVkKTsK
IAotICAgIFR5cGVCb3VuZGFyeSgpOwotICAgIFR5cGVCb3VuZGFyeShTY3JpcHRFeGVjdXRhYmxl
Kik7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6U3RyaW5nLCBUeXBlU2V0PiBMb2NhdGlvbkJh
c2VkVmFyaWFibGVNYXA7IC8vMSB0byAxIHcvIGEgc2NyaXB0IGZpbGUvdGFnLiAoZm9yIG5vdywg
aGFjayBpdCBhbmQgc2F5IE1hcDogKElEOkxpbmUpID0+IFR5cGVTZXQuIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9idmlvdXNseSwgdGhpcyBhc3N1bWVkIGFs
bCBhc3NpZ25tZW50cyBhcmUgb24gZGlzY3JldGUgbGluZXMpCisgICAgdHlwZWRlZiBIYXNoTWFw
PGludDY0X3QsIFR5cGVTZXQ+IEdsb2JhbFZhcmlhYmxlTWFwOyAKKyAgICB0eXBlZGVmIEhhc2hN
YXA8V1RGOjpTdHJpbmcsIGludDY0X3Q+IExvY2F0aW9uVG9HbG9iYWxNYXA7CiAKLSAgICBzdGF0
aWMgU3RyaW5nIGJvdW5kYXJ5SGFzaEZvckNvZGVCbG9jayhDb2RlQmxvY2sqKTsKLSAgICBzdGF0
aWMgU3RyaW5nIGJvdW5kYXJ5SGFzaEZvclJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbik7Ci0g
ICAgdm9pZCBtZXJnZVdpdGhUeXBlSGlzdG9yeShDb2RlQmxvY2sqKTsKLSAgICBUeXBlU2V0JiB0
eXBlc0ZvclZhcmlhYmxlKGNvbnN0IFN0cmluZyB2YXIpOwotICAgIAotICAgIHVuc2lnbmVkIG1f
c3RhcnRMaW5lOwotICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47Ci0gICAgdW5zaWduZWQgbV9l
bmRMaW5lOwotICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwotICAgIGludHB0cl90IG1fc291cmNl
SUQ7Ci0gICAgCi1wcml2YXRlOgorICAgIEdsb2JhbFZhcmlhYmxlTWFwIG1fZ2xvYmFsVmFyaWFi
bGVNYXA7CisgICAgTG9jYXRpb25CYXNlZFZhcmlhYmxlTWFwIG1fbG9jYXRpb25WYXJpYWJsZU1h
cDsKKyAgICBMb2NhdGlvblRvR2xvYmFsTWFwIG1fbG9jYXRpb25Ub0dsb2JhbE1hcDsKIAotICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFR5cGVTZXQ+IFR5cGVTZXRNYXA7IAotICAgIFR5cGVT
ZXRNYXAgbV92YXJpYWJsZVRvVHlwZVNldE1hcDsgICAKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDkxNDcxYWEuLjczYTc5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI0NSw5ICsyNDUsOSBAQCBKU0dsb2Jh
bE9iamVjdDo6TmV3R2xvYmFsVmFyIEpTR2xvYmFsT2JqZWN0OjphZGRHbG9iYWxWYXIoY29uc3Qg
SWRlbnRpZmllciYgaWRlbgogICAgIGlmIChjb25zdGFudE1vZGUgPT0gSXNWYXJpYWJsZSkKICAg
ICAgICAgbmV3RW50cnkucHJlcGFyZVRvV2F0Y2goc3ltYm9sVGFibGUoKSk7CiAgICAgU3ltYm9s
VGFibGU6Ok1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCktPmFkZChsb2NrZXIs
IGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgYWRkUmVnaXN0ZXJzKDEpOwotICAg
IGVsc2UKKyAgICB9IGVsc2UKICAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LmdldEluZGV4KCk7CiAgICAgTmV3R2xvYmFsVmFyIHZhcjsKICAgICB2YXIucmVnaXN0ZXJOdW1i
ZXIgPSBpbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5k
ZXggOTYxZmRlYy4uN2E5YTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAKQEAgLTI2MCw2ICsyNjAsNyBAQCBzdGF0aWMgdm9pZCByZWNvbXB1dGVEZXBlbmRl
bnRPcHRpb25zKCkKICAgICB3aGlsZSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KE9wdGlvbnM6OnRo
cmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCkpIDw8IChPcHRpb25zOjpyZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlck1heCgpICsgMSkpIDw9IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkKICAgICAgICAgT3B0aW9uczo6cmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgoKSsrOwogCisgICAgT3B0aW9uczo6cHJvZmlsZVR5
cGVzV2l0aEhpZ2hGaWRlbGl0eSgpID0gdHJ1ZTsKICAgICBBU1NFUlQoKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCkpIDw8
IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KCkpID4gMCk7CiAgICAgQVNT
RVJUKChzdGF0aWNfY2FzdDxpbnQ2NF90PihPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFm
dGVyTG9uZ1dhcm1VcCgpKSA8PCBPcHRpb25zOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1h
eCgpKSA8PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuY3BwCmluZGV4IDk1NWE2ZDMuLjk3YzdiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAgU3ltYm9sVGFibGVF
bnRyeSYgU3ltYm9sVGFibGVFbnRyeTo6Y29weVNsb3coY29uc3QgU3ltYm9sVGFibGVFbnRyeSYg
b3RoZXIpCiAgICAgRmF0RW50cnkqIG5ld0ZhdEVudHJ5ID0gbmV3IEZhdEVudHJ5KCpvdGhlci5m
YXRFbnRyeSgpKTsKICAgICBmcmVlRmF0RW50cnkoKTsKICAgICBtX2JpdHMgPSBiaXR3aXNlX2Nh
c3Q8aW50cHRyX3Q+KG5ld0ZhdEVudHJ5KTsKLSAgICBtX3VuaXF1ZUlEID0gb3RoZXIubV91bmlx
dWVJRDsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTE1MCw4ICsxNDksOSBAQCBTeW1ib2xU
YWJsZSogU3ltYm9sVGFibGU6OmNsb25lQ2FwdHVyZWROYW1lcyhWTSYgdm0pCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgcmVzdWx0LT5tX21hcC5hZGQoCiAgICAgICAgICAgICBpdGVy
LT5rZXksCisgICAgICAgICAgICAvL2l0ZXItPnZhbHVlKTsKICAgICAgICAgICAgIFN5bWJvbFRh
YmxlRW50cnkoaXRlci0+dmFsdWUpKTsKLSAgICAgICAgICAgIC8vU3ltYm9sVGFibGVFbnRyeShp
dGVyLT52YWx1ZS5nZXRJbmRleCgpLCBpdGVyLT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkpKTsKKyAg
ICAgICAgICAgIC8vT1JJR0lOQUw6IFN5bWJvbFRhYmxlRW50cnkoaXRlci0+dmFsdWUuZ2V0SW5k
ZXgoKSwgaXRlci0+dmFsdWUuZ2V0QXR0cmlidXRlcygpKSk7CiAgICAgfQogICAgIAogICAgIGlm
IChtX3Nsb3dBcmd1bWVudHMpIHsKQEAgLTE2MCw4ICsxNjAsMzkgQEAgU3ltYm9sVGFibGUqIFN5
bWJvbFRhYmxlOjpjbG9uZUNhcHR1cmVkTmFtZXMoVk0mIHZtKQogICAgICAgICAgICAgcmVzdWx0
LT5tX3Nsb3dBcmd1bWVudHNbaV0gPSBtX3Nsb3dBcmd1bWVudHNbaV07CiAgICAgfQogCisgICAg
cmVzdWx0LT5tX3VuaXF1ZUlETWFwID0gbV91bmlxdWVJRE1hcDsKKyAgICByZXN1bHQtPm1fcmVn
aXN0ZXJUb1ZhcmlhYmxlTWFwID0gbV9yZWdpc3RlclRvVmFyaWFibGVNYXA7CisgICAgCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAoraW50NjRfdCBTeW1ib2xUYWJsZTo6dW5pcXVlSURGb3JWYXJp
YWJsZShjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5LCBWTSYgdm0p
Cit7CisgICAgYXV0byBpdGVyID0gbV91bmlxdWVJRE1hcC5maW5kKGtleSk7CisgICAgYXV0byBl
bmQgPSBtX3VuaXF1ZUlETWFwLmVuZCgpOworICAgIGlmIChpdGVyID09IGVuZCkgeworICAgICAg
ICBwcmludGYoIk5vIHZhcmlhYmxlIGluIG1hcCBmb3IgdmFyOiAnJXMnXG4iLCBTdHJpbmcoa2V5
KS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpbnQ2
NF90JiBpZCA9IGl0ZXItPnZhbHVlOworICAgIGlmIChpZCA9PSAtMSkgCisgICAgICAgIGlkID0g
dm0uZ2V0TmV4dFVuaXF1ZVZhcmlhYmxlSUQoKTsKKworICAgIHJldHVybiBpZDsKK30KKworaW50
NjRfdCBTeW1ib2xUYWJsZTo6dW5pcXVlSURGb3JSZWdpc3Rlcihjb25zdCBDb25jdXJyZW50SklU
TG9ja2VyJiBsb2NrZXIsIGludCByZWdpc3RlckluZGV4LCBWTSYgdm0pCit7CisgICAgYXV0byBp
dGVyID0gbV9yZWdpc3RlclRvVmFyaWFibGVNYXAuZmluZChyZWdpc3RlckluZGV4KTsKKyAgICBh
dXRvIGVuZCA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLmVuZCgpOworICAgIGlmIChpdGVyID09
IGVuZCkgeworICAgICAgICBwcmludGYoIk5vIHJlZ2lzdGVyIGluIG1hcCBmb3IgcmVnaXN0ZXIg
aW5kZXg6ICclZCdcbiIsIHJlZ2lzdGVySW5kZXgpOworICAgICAgICByZXR1cm4gLTE7IC8vSSB0
aGluayB0aGlzIGhhcHBlbnMgd2l0aCBjZXJ0YWluIHBhcmFtZXRlcnMgdG8gZnVuY3Rpb25zLiBU
T0RPOiBmaWd1cmUgb3V0IHdoeS93aGF0IHByZWNpc2VseQorICAgIH0KKworICAgIHJldHVybiB1
bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaXRlci0+dmFsdWUuZ2V0KCksIHZtKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5oCmluZGV4IDlmNTBmNmEuLjZlYjRlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMTcyLDcgKzE3Miw2IEBAIHN0cnVjdCBTeW1i
b2xUYWJsZUVudHJ5IHsKICAgICAgICAgICAgIHJldHVybiBjb3B5U2xvdyhvdGhlcik7CiAgICAg
ICAgIGZyZWVGYXRFbnRyeSgpOwogICAgICAgICBtX2JpdHMgPSBvdGhlci5tX2JpdHM7Ci0gICAg
ICAgIG1fdW5pcXVlSUQgPSBvdGhlci5tX3VuaXF1ZUlEOwogICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICAgfQogCkBAIC0yMzcsMTIgKzIzNiw2IEBAIHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5IHsK
ICAgICAgICAgbm90aWZ5V3JpdGVTbG93KHZtLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXRVbmlxdWVJRCh1aW50NjRfdCBpZCkgewotICAgICAgICBtX3VuaXF1ZUlEID0gaWQ7Ci0gICAg
fQotCi0gICAgdWludDY0X3QgdW5pcXVlSUQoKSBjb25zdCB7IHJldHVybiBtX3VuaXF1ZUlEOyB9
Ci0KIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IFNsaW1GbGFnID0gMHgxOwog
ICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBSZWFkT25seUZsYWcgPSAweDI7CkBAIC0yNTksNyAr
MjUyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGludHB0cl90IG1fYml0czsg
Ly8gYWx3YXlzIGhhcyBGYXRGbGFnIHNldCBhbmQgZXhhY3RseSBtYXRjaGVzIHdoYXQgdGhlIGJp
dHMgd291bGQgaGF2ZSBiZWVuIGlmIHRoaXMgd2Fzbid0IGZhdC4KLQogICAgICAgICBSZWZQdHI8
VmFyaWFibGVXYXRjaHBvaW50U2V0PiBtX3dhdGNocG9pbnRzOwogICAgIH07CiAKQEAgLTMzMiw3
ICszMjQsNiBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIGludHB0cl90IG1fYml0czsKLSAgICB1
aW50NjRfdCBtX3VuaXF1ZUlEOwogfTsKIAogc3RydWN0IFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJh
aXRzIDogSGFzaFRyYWl0czxTeW1ib2xUYWJsZUVudHJ5PiB7CkBAIC0zNDQsNiArMzM1LDggQEAg
cHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFN0cmluZ0ltcGw+LCBTeW1ib2xUYWJsZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwg
SGFzaFRyYWl0czxSZWZQdHI8U3RyaW5nSW1wbD4+LCBTeW1ib2xUYWJsZUluZGV4SGFzaFRyYWl0
cz4gTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludDY0X3Q+
IFVuaXF1ZUlETWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxTdHJpbmdJbXBs
PiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
aW50Pj4gUmVnaXN0ZXJUb1ZhcmlhYmxlTWFwOwogCiAgICAgc3RhdGljIFN5bWJvbFRhYmxlKiBj
cmVhdGUoVk0mIHZtKQogICAgIHsKQEAgLTQyMSw2ICs0MTQsMTIgQEAgcHVibGljOgogCiAgICAg
TWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBs
KiBrZXksIGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5KQogICAgIHsKKyAgICAgICAgLy91
c2UgLTEgYXMgYSBmbGFnIHRvIGluZGljYXRlIHdlIG5lZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBJ
RCBiZWNhdXNlIHdlIG5lZWQgdGhlIFZNIHRvIGRvIHRoaXMuIAorICAgICAgICAvL1doZW4gbGlu
a2luZywgd2UgY2FuIHByb2R1Y2UgdGhpcyB1bmlxdWUgSUQgYXMgd2UgaGF2ZSBhY2Nlc3MgdG8g
Vk0KKyAgICAgICAgaWYgKE9wdGlvbnM6OnByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkg
eworICAgICAgICAgICAgbV91bmlxdWVJRE1hcC5zZXQoa2V5LCAtMSk7IAorICAgICAgICAgICAg
bV9yZWdpc3RlclRvVmFyaWFibGVNYXAuc2V0KGVudHJ5LmdldEluZGV4KCksIGtleSk7CisgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIG1fbWFwLmFkZChrZXksIGVudHJ5KTsKICAgICB9CiAKQEAg
LTQzMiw2ICs0MzEsMTAgQEAgcHVibGljOgogCiAgICAgTWFwOjpBZGRSZXN1bHQgc2V0KGNvbnN0
IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXksIGNvbnN0IFN5bWJvbFRhYmxl
RW50cnkmIGVudHJ5KQogICAgIHsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnByb2ZpbGVUeXBlc1dp
dGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICAgICAgbV91bmlxdWVJRE1hcC5zZXQoa2V5LCAt
MSk7IAorICAgICAgICAgICAgbV9yZWdpc3RlclRvVmFyaWFibGVNYXAuc2V0KGVudHJ5LmdldElu
ZGV4KCksIGtleSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fbWFwLnNldChrZXksIGVu
dHJ5KTsKICAgICB9CiAKQEAgLTQ1Miw2ICs0NTUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBjb250YWlucyhsb2NrZXIsIGtleSk7CiAgICAgfQogCisgICAgaW50NjRfdCB1bmlxdWVJREZv
clZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXksIFZN
JiB2bSk7CisgICAgaW50NjRfdCB1bmlxdWVJREZvclJlZ2lzdGVyKGNvbnN0IENvbmN1cnJlbnRK
SVRMb2NrZXImIGxvY2tlciwgaW50IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSk7CisKICAgICBib29s
IHVzZXNOb25TdHJpY3RFdmFsKCkgeyByZXR1cm4gbV91c2VzTm9uU3RyaWN0RXZhbDsgfQogICAg
IHZvaWQgc2V0VXNlc05vblN0cmljdEV2YWwoYm9vbCB1c2VzTm9uU3RyaWN0RXZhbCkgeyBtX3Vz
ZXNOb25TdHJpY3RFdmFsID0gdXNlc05vblN0cmljdEV2YWw7IH0KIApAQCAtNTAyLDYgKzUwOCw4
IEBAIHByaXZhdGU6CiAgICAgflN5bWJvbFRhYmxlKCk7CiAKICAgICBNYXAgbV9tYXA7CisgICAg
VW5pcXVlSURNYXAgbV91bmlxdWVJRE1hcDsKKyAgICBSZWdpc3RlclRvVmFyaWFibGVNYXAgbV9y
ZWdpc3RlclRvVmFyaWFibGVNYXA7CiAKICAgICBpbnQgbV9wYXJhbWV0ZXJDb3VudEluY2x1ZGlu
Z1RoaXM7CiAgICAgYm9vbCBtX3VzZXNOb25TdHJpY3RFdmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlU2V0LmNwcAppbmRleCAxMzdhNjI3Li45NGZkNjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtMzgsNyArMzgsNyBAQCBUeXBl
U2V0OjpUeXBlU2V0KCkKIHsKIH0KIAotUnVudGltZVR5cGUgVHlwZVNldDo6Z2V0UnVudGltZVR5
cGVGb3JWYWx1ZShKU1ZhbHVlIHYpCitSdW50aW1lVHlwZSBUeXBlU2V0OjpnZXRSdW50aW1lVHlw
ZUZvclZhbHVlKEpTVmFsdWUgdiwgU3RydWN0dXJlKikKIHsKICAgICBSdW50aW1lVHlwZSByZXQ7
CiAgICAgaWYgKHYuaXNGdW5jdGlvbigpKQpAQCAtNjIsMTEgKzYyLDI2IEBAIFJ1bnRpbWVUeXBl
IFR5cGVTZXQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2KQogfQogCiAvL3N0cnVj
dHVyZSBtYXkgYmUgbnVsbAotdm9pZCBUeXBlU2V0OjphZGRUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2
LCBTdHJ1Y3R1cmUqKQordm9pZCBUeXBlU2V0OjphZGRUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkgCiB7Ci0gICAgUnVudGltZVR5cGUgdCA9IGdldFJ1bnRpbWVU
eXBlRm9yVmFsdWUodik7CisgICAgUnVudGltZVR5cGUgdCA9IGdldFJ1bnRpbWVUeXBlRm9yVmFs
dWUodiwgc3RydWN0dXJlKTsKICAgICBtX3NlZW5UeXBlcyA9IG1fc2VlblR5cGVzIHwgdDsKLS8v
ICAgIGlmICh0ID09IFR5cGVPYmplY3QgJiYgdi5pc0NlbGwoKSkgeworICAgIC8vaWYgKHQgPT0g
VHlwZU9iamVjdCkgeworICAgIC8vICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworICAgIC8vICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KCk7CisgICAgLy8gICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICAvLyAgICBzdHJ1Y3R1
cmUtPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFt
ZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworCisgICAgLy8gICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgeworICAg
IC8vICAgICAgICBQcm9wZXJ0eU5hbWUgbmFtZSA9IHByb3BlcnR5TmFtZXNbaV07CisgICAgLy8g
ICAgICAgIFN0cmluZ0ltcGwqIHB1YmxpY05hbWUgPSBuYW1lLnB1YmxpY05hbWUoKTsKKyAgICAv
LyAgICAgICAgUFJJTlRfU1BBQ0VTKCk7CisgICAgLy8gICAgICAgIHByaW50ZigicHJvcGVydHk6
ICclcydcbiIsIHB1YmxpY05hbWUtPnV0ZjgoKS5kYXRhKCkpOyAgCisgICAgLy8gICAgfQorICAg
IC8vfQorICAgIAorCisKIC8vICAgICAgICBpbnQgc3BhY2VzID0gMDsgCiAvLyNkZWZpbmUgUFJJ
TlRfU1BBQ0VTKCkgXAogLy8gICAgICAgIGRvIHsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVNldC5oCmluZGV4IDUyZmY4YWQuLmZjYzIyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlU2V0LmgKQEAgLTUzLDEyICs1MywxMyBAQCBwdWJsaWM6CiAgICAgVHlw
ZVNldCgpOwogICAgIHZvaWQgYWRkVHlwZUZvclZhbHVlKEpTVmFsdWUgdiwgU3RydWN0dXJlKik7
CiAgICAgdm9pZCBtZXJnZVdpdGhUeXBlU2V0KGNvbnN0IFR5cGVTZXQmKTsKLSAgICBzdGF0aWMg
UnVudGltZVR5cGUgZ2V0UnVudGltZVR5cGVGb3JWYWx1ZShKU1ZhbHVlKTsKKyAgICBzdGF0aWMg
UnVudGltZVR5cGUgZ2V0UnVudGltZVR5cGVGb3JWYWx1ZShKU1ZhbHVlLCBTdHJ1Y3R1cmUqKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0cmluZyBzZWVuVHlwZXMoKTsKIAogcHJpdmF0
ZToKICAgICB1aW50MzJfdCBtX3NlZW5UeXBlczsKICAgICB2b2lkIGR1bXBTZWVuVHlwZXMoKTsK
KyAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fcHJvdG90eXBlSGlzdG9yeTsKIAogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDgzYTYwNmEuLmRkYWNhMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRl
ICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgiCiAj
aW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKQEAgLTIzMiw3ICsyMzMsOCBAQCBWTTo6
Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2NvZGVDYWNoZShD
b2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAgICwgbV9lbmFibGVkUHJvZmlsZXIobnVsbHB0cikKICAg
ICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlz
KSkKLSAgICAsIG1fbmV4dFVuaXF1ZVZhcmlhYmxlSUQoMCkKKyAgICAsIG1fbmV4dFVuaXF1ZVZh
cmlhYmxlSUQoMSkKKyAgICAsIG1fbmV4dFVuaXF1ZUluc3RydWN0aW9uSUQoMSkKIHsKICAgICBp
bnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3Rh
Y2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKQEAgLTMyNiw5ICszMjgsOSBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMu
CiAgICAgbV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFy
cmF5Q29udHJvbGxlcigpKTsKIAotICAgIC8vbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcj4oKTsKLQorICAgIC8vVE9E
TzogY29uZGl0aW9uYWxseSBhbGxvY2F0ZSBhbGwgdGhpcyBzdHVmZiBiYXNlZCBvbiBpZiB0aGlz
IG1vZGUgaXMgZW5hYmxlZAogICAgIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI+KCk7CisgICAgbV9oaWdoRmlkZWxp
dHlMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hGaWRlbGl0eUxvZz4oKTsKIH0KIAogVk06On5W
TSgpCkBAIC05MjEsMjggKzkyMyw2IEBAIHZvaWQgVk06OnNldEVuYWJsZWRQcm9maWxlcihMZWdh
Y3lQcm9maWxlciogcHJvZmlsZXIpCiAgICAgfQogfQogCi0KLWNsYXNzIE5lYXJlc3RDb2RlQmxv
Y2tGdW5jdG9yIHsKLXB1YmxpYzoKLSAgICBOZWFyZXN0Q29kZUJsb2NrRnVuY3Rvcih1bnNpZ25l
ZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIGludHB0cl90IHNvdXJjZUlEKQotICAgICAgICA6IG1fbmVhcmVzdEJs
b2NrKE5lYXJlc3RUZXh0dWFsQmxvY2s8Q29kZUJsb2NrKj4oc3RhcnRMaW5lLCBzdGFydENvbHVt
biwgZW5kTGluZSwgZW5kQ29sdW1uLCBzb3VyY2VJRCkpCi0gICAgewotICAgIH0KLQotICAgIGJv
b2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykgIAotICAgIHsKLSAgICAgICAgU2Ny
aXB0RXhlY3V0YWJsZSogZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci0gICAgICAg
IG1fbmVhcmVzdEJsb2NrLnVwZGF0ZShlLT5saW5lTm8oKSwgZS0+c3RhcnRDb2x1bW4oKSwgZS0+
bGFzdExpbmUoKSwgZS0+ZW5kQ29sdW1uKCksIGUtPnNvdXJjZUlEKCksIGNvZGVCbG9jayk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGZvdW5kQUNvZGVCbG9jaygp
IHsgcmV0dXJuIG1fbmVhcmVzdEJsb2NrLmZvdW5kQVRhcmdldCgpOyB9Ci0gICAgQ29kZUJsb2Nr
KiBiZXN0Q29kZUJsb2NrKCkgeyByZXR1cm4gbV9uZWFyZXN0QmxvY2suYmVzdFRhcmdldCgpOyB9
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBOZWFyZXN0VGV4dHVhbEJsb2NrPENvZGVCbG9jayo+
IG1fbmVhcmVzdEJsb2NrOwotfTsKLQogU3RyaW5nIFZNOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5S
YW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBl
bmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBj
b25zdCBTdHJpbmcmIHNvdXJjZUlEQXNTdHJpbmcpCiB7CiAgICAgYm9vbCBva2F5OwpAQCAtOTUw
LDIxICs5MzAsMjIgQEAgU3RyaW5nIFZNOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNp
Z25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLAogICAgIGlmICghb2theSkKICAg
ICAgICAgQ1JBU0goKTsKIAotICAgIC8vVE9ETzogaXMgaXQgc2FmZSB0byBkbyB0aGlzIGl0ZXJh
dGlvbiBvdmVyIHRoZSBoZWFwIGF0IGFueSB0aW1lPwotICAgIE5lYXJlc3RDb2RlQmxvY2tGdW5j
dG9yIGZ1bmN0b3Ioc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBz
b3VyY2VJRCk7Ci0gICAgaGVhcC5mb3JFYWNoQ29kZUJsb2NrKGZ1bmN0b3IpOwotCi0gICAgaWYg
KGZ1bmN0b3IuZm91bmRBQ29kZUJsb2NrKCkpIHsKLSAgICAgICAgLy9wcmludGYoIkZvdW5kIGEg
Y29kZSBibG9jayBpbiBmdW5jdG9yXG4iKTsKLSAgICAgICAgbWVyZ2VIaWdoRmlkZWxpdHlQcm9m
aWxlVHlwZXMoZnVuY3Rvci5iZXN0Q29kZUJsb2NrKCkpOwotICAgIH0KLSAgICAKKyAgICAvLy8v
VE9ETzogaXMgaXQgc2FmZSB0byBkbyB0aGlzIGl0ZXJhdGlvbiBvdmVyIHRoZSBoZWFwIGF0IGFu
eSB0aW1lPworICAgIC8vVXBkYXRlQ29kZUJsb2NrRnVuY3RvciBmdW5jdG9yKHNvdXJjZUlEKTsK
KyAgICAvL2hlYXAuZm9yRWFjaENvZGVCbG9jayhmdW5jdG9yKTsKKyAgICB1cGRhdGVIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZVN0YXRlKCk7CisgICAgcHJpbnRmKCJHZXR0aW5nIHR5cGUgZm9yIHZh
cmlhYmxlIGdpdmVuIHNvdXJjZUlEOiclbGQnIGxpbmU6JyV1J1xuIiwgc291cmNlSUQsIHN0YXJ0
TGluZSk7CiAgICAgcmV0dXJuIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLT5nZXRUeXBlc0Zv
clZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1
bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQpOwogfQogCi12b2lkIFZNOjptZXJnZUhpZ2hGaWRl
bGl0eVByb2ZpbGVUeXBlcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQgVk06OnVwZGF0ZUhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUoKQogewotICAgIG1faGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyLT5tZXJnZVR5cGVzRm9yQ29kZUJsb2NrKGNvZGVCbG9jayk7ICAgCisgICAgaGlnaEZp
ZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coKTsKKyAgICBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIqIHByb2ZpbGVyID0gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuZ2V0KCk7
CisgICAgZm9yIChCYWc8VHlwZUxvY2F0aW9uPjo6aXRlcmF0b3IgaXRlciA9IG1fbG9jYXRpb25J
bmZvLmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7CisgICAgICAgIFR5cGVMb2NhdGlvbiogbG9j
YXRpb24gPSAqaXRlcjsKKyAgICAgICAgcHJvZmlsZXItPm1lcmdlSW5UeXBlc0ZvckxvY2F0aW9u
KGxvY2F0aW9uKTsKKyAgICB9CiB9CiAKIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNKiB2bSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGYzNmEwZDguLjBjZDUyYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDYsOSArNDYsMTEgQEAKICNpbmNsdWRlICJT
dHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFy
cmF5Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIldh
dGNoZG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20u
aCIKKyNpbmNsdWRlIDx3dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2Nh
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTc1LDYgKzc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRXhlY1N0YXRl
OwogICAgIGNsYXNzIEhhbmRsZVN0YWNrOwogICAgIGNsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlcjsKKyAgICBjbGFzcyBIaWdoRmlkZWxpdHlMb2c7CiAgICAgY2xhc3MgSWRlbnRpZmllcjsK
ICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKQEAgLTUx
Nyw5ICs1MjAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxl
cyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0
KCk7IH0KIAogICAgICAgICBTdHJpbmcgZ2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWdu
ZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5z
aWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VJRCk7Ci0gICAgICAgIHZvaWQgbWVyZ2VIaWdoRmlkZWxpdHlQcm9maWxlVHlwZXMo
Q29kZUJsb2NrKiBjb2RlQmxvY2spOworICAgICAgICBIaWdoRmlkZWxpdHlMb2cqIGhpZ2hGaWRl
bGl0eUxvZygpIHsgcmV0dXJuIG1faGlnaEZpZGVsaXR5TG9nLmdldCgpOyB9CisgICAgICAgIHZv
aWQgdXBkYXRlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVTdGF0ZSgpOworICAgICAgICBUeXBlTG9j
YXRpb24qIG5leHRMb2NhdGlvbigpIHsgcmV0dXJuIG1fbG9jYXRpb25JbmZvLmFkZCgpOyB9CiAK
ICAgICAgICAgdWludDY0X3QgZ2V0TmV4dFVuaXF1ZVZhcmlhYmxlSUQoKSB7IHJldHVybiBtX25l
eHRVbmlxdWVWYXJpYWJsZUlEKys7IH0KKyAgICAgICAgdWludDY0X3QgZ2V0TmV4dFVuaXF1ZUlu
c3RydWN0aW9uSUQoKSB7IHJldHVybiBtX25leHRVbmlxdWVJbnN0cnVjdGlvbklEKys7IH0KIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CkBAIC01NzAsNyArNTc2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZDb3VudGVk
QXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRz
OwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyPiBtX2hp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlcjsKLSAgICAgICAgdWludDY0X3QgbV9uZXh0VW5pcXVlVmFy
aWFibGVJRDsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hGaWRlbGl0eUxvZz4gbV9oaWdo
RmlkZWxpdHlMb2c7CisgICAgICAgIC8vdWludDY0X3QgbV9uZXh0VW5pcXVlVmFyaWFibGVJRDsK
KyAgICAgICAgaW50NjRfdCBtX25leHRVbmlxdWVWYXJpYWJsZUlEOworICAgICAgICB1aW50NjRf
dCBtX25leHRVbmlxdWVJbnN0cnVjdGlvbklEOworICAgICAgICBCYWc8VHlwZUxvY2F0aW9uPiBt
X2xvY2F0aW9uSW5mbzsKICAgICB9OwogCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VD
b2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmluZGV4IGMwN2Y3NTkuLjQ1N2EyMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNv
ZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC05OTUsNyArOTk1LDcgQEAgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX2Rpc21pc3NQb3BvdmVyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUuSmF2YVNj
cmlwdEV4cHJlc3Npb246Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tl
blRyYWNraW5nQ29udHJvbGxlci5Nb2RlLlBvc3RKYXZhU2NyaXB0RXhwcmVzc2lvbjoKKyAgICAg
ICAgLy9jYXNlIFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIu
TW9kZS5Qb3N0SmF2YVNjcmlwdEV4cHJlc3Npb246CiAgICAgICAgICAgICB0aGlzLnRva2VuVHJh
Y2tpbmdDb250cm9sbGVyLm1vdXNlT3ZlckRlbGF5RHVyYXRpb24gPSBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRleHRFZGl0b3IuRHVyYXRpb25Ub01vdXNlT3ZlclRva2VuVG9NYWtlSG92ZXJlZFRv
a2VuOwogICAgICAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5tb3VzZU91dFJl
bGVhc2VEZWxheUR1cmF0aW9uID0gV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkR1
cmF0aW9uVG9Nb3VzZU91dE9mSG92ZXJlZFRva2VuVG9SZWxlYXNlOwogICAgICAgICAgICAgdGhp
cy50b2tlblRyYWNraW5nQ29udHJvbGxlci5jbGFzc05hbWVGb3JIaWdobGlnaHRlZFJhbmdlID0g
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkhvdmVyZWRFeHByZXNzaW9uSGlnaGxp
Z2h0U3R5bGVDbGFzc05hbWU7CkBAIC0xMDU5LDggKzEwNTksOCBAQCBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW9kZSA9
PT0gV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLkph
dmFTY3JpcHRFeHByZXNzaW9uCi0gICAgICAgICAgICB8fCB0aGlzLnRva2VuVHJhY2tpbmdDb250
cm9sbGVyLm1vZGUgPT09IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRy
b2xsZXIuTW9kZS5Qb3N0SmF2YVNjcmlwdEV4cHJlc3Npb24pIHsKKyAgICAgICAgaWYgKHRoaXMu
dG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW9kZSA9PT0gV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JU
b2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLkphdmFTY3JpcHRFeHByZXNzaW9uKSB7CisgICAg
ICAgICAgICAvL3x8IHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW9kZSA9PT0gV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLlBvc3RKYXZhU2Ny
aXB0RXhwcmVzc2lvbikgewogICAgICAgICAgICAgdGhpcy5fdG9rZW5UcmFja2luZ0NvbnRyb2xs
ZXJIaWdobGlnaHRlZEphdmFTY3JpcHRFeHByZXNzaW9uKGNhbmRpZGF0ZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCmluZGV4IGE1MTgyZmQuLjc4ZjY2NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rl
eHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGV4dEVkaXRvci5qcwpAQCAtMTA1LDcgKzEwNSw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yID0gZnVuY3Rpb24oZWxlbWVudCwgbWltZVR5cGUsIGRlbGVnYXRlKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgLy9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBtb3Vz
ZVVwVGVzdC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZW1vdmUiLCBtb3VzZVVwVGVzdC5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICAKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233308</attachid>
            <date>2014-06-18 08:12:39 -0700</date>
            <delta_ts>2014-06-18 09:34:24 -0700</delta_ts>
            <desc>path</desc>
            <filename>diff.diff</filename>
            <type>text/plain</type>
            <size>1080152</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODFjY2IxYy4uMzNiNGQ5NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgyMyw2ICs4MjMsMTMgQEAKIAkJNDEzNTlDRjMw
RkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0
ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZvdW5k
YXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
ICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAwRUY3
QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1MjJBQkFGMjE5NDc2QjIyMDA4QjFDODUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjJB
QkFGMTE5NDc2QjIyMDA4QjFDODUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTIyQUJBRjQxOTQ3
NkI0MzAwOEIxQzg1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjJBQkFGMzE5NDc2QjQzMDA4QjFD
ODUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCAqLzsgfTsKKwkJNTIyQUJBRjcxOTQ3
NkJGQzAwOEIxQzg1IC8qIFR5cGVTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTIyQUJBRjUxOTQ3NkJGQzAwOEIxQzg1IC8qIFR5cGVTZXQuY3Bw
ICovOyB9OworCQk1MjJBQkFGODE5NDc2QkZDMDA4QjFDODUgLyogVHlwZVNldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIyQUJBRjYxOTQ3NkJGQzAw
OEIxQzg1IC8qIFR5cGVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk1MjJBQkFGQTE5NEE4MDQzMDA4QjFDODUgLyogVHlwZUxvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjJBQkFGOTE5
NEE4MDQzMDA4QjFDODUgLyogVHlwZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTI3MEEzNDkxOTRGQzczRjAwRUREMkM0IC8qIEhp
Z2hGaWRlbGl0eUxvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MjcwQTM0NzE5NEZDNzNGMDBFREQyQzQgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCAq
LzsgfTsKKwkJNTI3MEEzNEExOTRGQzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxvZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3MEEzNDgxOTRG
QzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1MTA1MDI2MThFQjgyNzUwMDAwMUYzRSAvKiBK
U0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0NDBGODhGMEE1MDhCMTAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24u
aCAqLzsgfTsKIAkJNTU0MDc1NzIxOERBNThBRDAwRUZGN0YyIC8qIEFyZ0xpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjYwNTEyMEUyMDNFRjgw
MEI5QTY0RCAvKiBBcmdMaXN0LmggKi87IH07CiAJCTU1NDA3NTczMThEQTU4QUQwMEVGRjdGMiAv
KiBBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMjU3REU2MEUxRjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVudHMuaCAqLzsgfTsKQEAgLTI1
OTksNiArMjYwNiwxMyBAQAogCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGpz
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgfTsKIAkJNTFGMEVC
NjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5h
bWUgPSBGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9Owog
CQk1MUYwRUMwNzA1Qzg2QzlBMDBFNkRGMUIgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHls
aWIiOyBuYW1lID0gbGlib2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7
IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTUyMkFCQUYxMTk0NzZCMjIwMDhCMUM4
NSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUyMkFCQUYzMTk0NzZCNDMwMDhCMUM4NSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTIyQUJB
RjUxOTQ3NkJGQzAwOEIxQzg1IC8qIFR5cGVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVHlwZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUyMkFCQUY2MTk0NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFR5cGVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTIyQUJBRjkxOTRBODA0MzAwOEIxQzg1IC8qIFR5cGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTI3MEEzNDcxOTRGQzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaWdoRmlkZWxpdHlMb2cuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjcwQTM0ODE5NEZDNzNGMDBFREQyQzQg
LyogSGlnaEZpZGVsaXR5TG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhp
Z2hGaWRlbGl0eUxvZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwNzU4NDE4
RjRBMzc1MDA2MDJBNUQgLyogQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwN0FDODE4REE1OEFEMDBFRkY3RjIg
LyogbGliQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTVENTM3MjZEMEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gVHJhY2luZy5kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDE2Nyw2ICs0MTgxLDEyIEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBy
dW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1
MjcwQTM0NzE5NEZDNzNGMDBFREQyQzQgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCAqLywKKwkJCQk1
MjcwQTM0ODE5NEZDNzNGMDBFREQyQzQgLyogSGlnaEZpZGVsaXR5TG9nLmggKi8sCisJCQkJNTIy
QUJBRjUxOTQ3NkJGQzAwOEIxQzg1IC8qIFR5cGVTZXQuY3BwICovLAorCQkJCTUyMkFCQUY2MTk0
NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0LmggKi8sCisJCQkJNTIyQUJBRjMxOTQ3NkI0MzAwOEIx
Qzg1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgKi8sCisJCQkJNTIyQUJBRjExOTQ3
NkIyMjAwOEIxQzg1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovLAogCQkJCUJDRjYw
NTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAz
RUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCUJDMjU3REU1MEUxRjUxQzUwMDE2QjZD
OSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtNDk5OCw2ICs1MDE4LDcgQEAKIAkJCQkwRkI1NDY3
ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLAogCQkJ
CTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICov
LAogCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICov
LAorCQkJCTUyMkFCQUY5MTk0QTgwNDMwMDhCMUM4NSAvKiBUeXBlTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkI1NDY3QzE0RjVDRkQzMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5jcHAgKi8sCiAJCQkJMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUuaCAqLywKIAkJCQkxNENBOTU4QzE2QUI1MEZBMDA5MzhBMDYgLyogT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUuaCAqLywKQEAgLTU1MDEsOCArNTUyMiwxMiBAQAogCQkJCTBG
NkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MjcwQTM0QTE5NEZDNzNGMDBFREQyQzQgLyogSGlnaEZpZGVs
aXR5TG9nLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjJBQkFGODE5NDc2QkZDMDA4QjFDODUgLyog
VHlwZVNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTIyQUJBRjIxOTQ3NkIyMjAwOEIxQzg1IC8q
IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3QjgzQUMw
RTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjJBQkFGQTE5NEE4MDQzMDA4QjFDODUgLyogVHlwZUxv
Y2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyog
SW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAw
MjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTI0OEY5MTkxNDQyRDkw
MEI3RkRFNCAvKiBWYXJpYWJsZVdhdGNocG9pbnRTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
QEAgLTY5MTMsNiArNjkzOCw3IEBACiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R0J5dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMw
MDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5
NTcxNEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUyMkFCQUY3MTk0NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGM0IzQTI3MTU0NEM5OTUwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3N0E0MjNGMTdBMEJCRkQwMEE4REI4MSAvKiBERkdD
bG9iYmVyaXplLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3N0E0MjQxMTdBMEJCRkQwMEE4REI4
MSAvKiBERkdDbG9iYmVyU2V0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNjkyMSw2ICs2OTQ3LDcg
QEAKIAkJCQkwRjM4QjAxNzE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBp
bGF0aW9uTW9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNCM0ExQTE1M0U2OEYyMDAzRUQw
RkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTIy
QUJBRjQxOTQ3NkI0MzAwOEIxQzg1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkJFMEY3MjE2QzFEQjAzMDA4MkM1RTggLyogREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNTE3QTBCOENDMDA3NzNB
RDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC03MzI5LDYgKzczNTYsNyBAQAogCQkJCTBGMENENEM0MTVGNkI2QkIwMDMyRjFDMCAv
KiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTU0MUIxMTYx
M0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkQ4MkU4NjE0MUYzRkYxMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTI3MEEzNDkxOTRGQzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBN0MxRUFGMTE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNp
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MzBCNjEzMTI1MDA2OEYwMDlEMjVCMSAvKiBT
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFQjEwN0VD
N0U3MDA2NTA0NDYgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvai5vcmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oub3JpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iYzM3ODVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oub3JpZwpAQCAtMCww
ICsxLDgwODEgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xh
c3NlcyA9IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBC
ZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBC
RkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdl
dDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50
IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAw
QkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQlkZXBlbmRl
bmNpZXMgPSAoCisJCQkJNjU0NDJENTAxOEVCQjc0NDAwN0FGOTJGIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3RO
YW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CisJCTVENkIyQTQ3MTUyQjlFMTcwMDUyMzFE
RSAvKiBUZXN0IFRvb2xzICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDVENkIyQTRDMTUyQjlFMTcwMDUyMzFERSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiVGVzdCBUb29scyIg
Ki87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJ
NUQ2QjJBNEYxNTJCOUUyMzAwNTIzMURFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkJ
NUQ2QjJBNTExNTJCOUUyMzAwNTIzMURFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkJ
NUQ2QjJBNTUxNTJCOUUyMzAwNTIzMURFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkp
OworCQkJbmFtZSA9ICJUZXN0IFRvb2xzIjsKKwkJCXByb2R1Y3ROYW1lID0gIlRlc3QgVG9vbHMi
OworCQl9OworCQk2NTc4OEE5RDE4QjQwOUVCMDBDMTg5RkYgLyogT2ZmbGluZSBBc3NlbWJsZXIg
Ki8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gNjU3ODhBQTIxOEI0MDlFQjAwQzE4OUZGIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJPZmZsaW5lIEFzc2VtYmxlciIgKi87CisJCQli
dWlsZFBoYXNlcyA9ICgKKwkJCQk2NTc4OEFBMDE4QjQwOUVCMDBDMTg5RkYgLyogT2ZmbGluZSBB
c3NlbWJsZSAqLywKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJNjUyNDRCRDMxOEVD
QjUwMDAwMTBCNzA4IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkJNjU3ODhBOUUxOEI0
MDlFQjAwQzE4OUZGIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9
ICJPZmZsaW5lIEFzc2VtYmxlciI7CisJCQlwcm9kdWN0TmFtZSA9ICJPZmZsaW5lIEFzc2VtYmxl
ciI7CisJCX07CisJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICovOworCQkJYnVp
bGRQaGFzZXMgPSAoCisJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyAqLywKKwkJCQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJh
dGUgRFRyYWNlIGhlYWRlciAqLywKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOwor
CQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBT
b3VyY2VzIjsKKwkJfTsKKwkJOTMyRjVCRTMwODIyQTFDNzAwNzM2OTc1IC8qIEFsbCAqLyA9IHsK
KwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSAxNDlDMjc2QzA4OTAyQUZFMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkFsbCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk1
REY3RTFDQzE4OEU2Qjg3MDAzRjlBNDYgLyogQ29weSBqc2MgaW50byBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgKi8sCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTkzMkY1QkU3MDgy
MkExQzcwMDczNjk3NSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTVENjlFOTEyMTUy
QkU1NDcwMDI4RDcyMCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTVENkIyQTU3MTUy
QjlFMkUwMDUyMzFERSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUg
PSBBbGw7CisJCQlwcm9kdWN0TmFtZSA9IEFsbDsKKwkJfTsKKy8qIEVuZCBQQlhBZ2dyZWdhdGVU
YXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkw
RjAzMzJDMDE4QURGQUUxMDA1Rjk3OUEgLyogRXhpdGluZ0pJVFR5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwMzMyQkYxOEFERkFFMTAwNUY5
NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLzsgfTsKKwkJMEYwMzMyQzMxOEIwMTc2MzAwNUY5
NzlBIC8qIEdldEJ5SWRWYXJpYW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMDMzMkMxMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFu
dC5jcHAgKi87IH07CisJCTBGMDMzMkM0MThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwMzMy
QzIxOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5SWRWYXJpYW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwMzMyQzYxOEI1M0ZBOTAwNUY5NzlB
IC8qIEZUTFdlaWdodC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwMzMyQzUxOEI1M0ZBOTAwNUY5NzlBIC8qIEZUTFdlaWdodC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMDMzMkM4MThCNTQ2RUMw
MDVGOTc5QSAvKiBGVExXZWlnaHRlZFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwMzMyQzcxOEI1NDZFQzAwNUY5NzlBIC8qIEZUTFdlaWdo
dGVkVGFyZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYwNUMzQjQxNjgzQ0Y5MjAwQkFGNDVCIC8qIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5l
cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MDVDM0IyMTY4M0NGOEYwMEJBRjQ1QiAvKiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwNzc2
QkYxNEZGMDAyQjAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA3NzZCRDE0RkYwMDI4MDAxMDIz
MzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRU
aHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJMEYw
QjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyog
TExJbnRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQwMDg4
NUI0RiAvKiBDb2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgxNEJD
RjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJl
c3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgz
QjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYgLyog
Q2FsbExpbmtJbmZvLmNwcCAqLzsgfTsKKwkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENh
bGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzQUYxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4M0I5MTRCQ0Y5NUYw
MDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1
QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJG
MUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERpcmVjdElu
ZGV4TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGMENENEM0MTVGNkI2QkIwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENENEMzMTVG
NkI2QjUwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCAqLzsgfTsKKwkJMEYwRkM0
NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQg
LyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjEzNkQ0RDE3NEFENjlFMDA3NUIzNTQgLyogRGVmZXJHQy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxMzZENEIxNzRB
RDY5QjAwNzVCMzU0IC8qIERlZmVyR0MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjEzOTEyOTE2NzcxQzMzMDA5Q0NCMDcgLyogUHJvZmlsZXJC
eXRlY29kZVNlcXVlbmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMTM5MTI0MTY3NzFDMzAwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2Vx
dWVuY2UuY3BwICovOyB9OworCQkwRjEzOTEyQTE2NzcxQzM2MDA5Q0NCMDcgLyogUHJvZmlsZXJC
eXRlY29kZVNlcXVlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjEzOTEyNTE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJCeXRlY29kZVNlcXVl
bmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEYxMzkxMkIxNjc3MUMzQTAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxMzkxMjYx
Njc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwICovOyB9Owor
CQkwRjEzOTEyQzE2NzcxQzNEMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxMzkxMjcx
Njc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjEzRTA0RTE2MTY0QTFG
MDBEQzhERTcgLyogSW5kZXhpbmdUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTNFMDRDMTYxNjRBMUIwMERDOERFNyAvKiBJbmRleGluZ1R5
cGUuY3BwICovOyB9OworCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1Bh
dGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1
RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYxNjAxNUQxNTYxOThDOTAwQzI1
ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNjAxNUExNTYxOThCRjAwQzI1ODdD
IC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwICovOyB9OworCQkwRjE2MDE1
RTE1NjE5OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNjAxNUIxNTYx
OThCRjAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjE5MENBQzE4OUQ4
MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE5MENBQTE4OUQ4MkY2MDAwQUU1RjAg
LyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgKi87IH07CisJCTBGMTkwQ0FEMTg5RDgyRjYw
MDBBRTVGMCAvKiBQcm9maWxlckpldHRpc29uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE5MENBQjE4OUQ4MkY2MDAwQUU1RjAgLyogUHJv
ZmlsZXJKZXR0aXNvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGMUREODRBMThBOTQ1QkUwMDI2RjNGQSAvKiBKU0NJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFERDg0OTE4
QTk0NUJFMDAyNkYzRkEgLyogSlNDSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMUUzQTQ2MTUzNENCQUYwMDBGOTQ1NiAvKiBERkdB
cmd1bWVudFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjFFM0E0MzE1MzRDQkFEMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMUUz
QTQ3MTUzNENCQjkwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxRTNBNDQxNTM0Q0JBRDAwMEY5
NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYxRTNBNjcxNTNBMjFFMjAwMEY5NDU2IC8qIERGR1Np
bGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMUUzQTY1MTUzQTIxREYwMDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3Rl
clNhdmVQbGFuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYxRkU1MUMxOTIyQTNCQzAwNjk4N0M1IC8qIEFib3J0UmVhc29uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFGRTUxQjE5MjJBM0JDMDA2
OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjIzNUJEMzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFy
Z3VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjM1QkJEMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuY3BwICovOyB9Owor
CQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIzNUJCRTE3MTc4RTFDMDA2
OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMzVCRDUxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRB
cmd1bWVudEZvck9wZXJhbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyMzVCQkYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZv
ck9wZXJhbmQuY3BwICovOyB9OworCQkwRjIzNUJENjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhp
dEFyZ3VtZW50Rm9yT3BlcmFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyMzVCQzAxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZv
ck9wZXJhbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50TGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMzVCQzExNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIzNUJEODE3MTc4RTFDMDA2OTBDN0Yg
LyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkMyMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0VGh1
bmtHZW5lcmF0b3IuY3BwICovOyB9OworCQkwRjIzNUJEOTE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
RXhpdFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjIzNUJDMzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJh
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEYyMzVCREExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIzNUJDNDE3MTc4RTFDMDA2OTBD
N0YgLyogRlRMRXhpdFZhbHVlLmNwcCAqLzsgfTsKKwkJMEYyMzVCREIxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTEV4aXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyMzVCQzUxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjM1QkRDMTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkM2MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JF
eGl0LmNwcCAqLzsgfTsKKwkJMEYyMzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkM3
MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMzVCREUxNzE3OEUxQzAwNjkwQzdGIC8qIEZU
TE9TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMjM1QkM4MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29t
cGlsYXRpb25JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEYyMzVCREYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXRDb21waWxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIzNUJD
OTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGVyLmNwcCAqLzsgfTsKKwkJMEYy
MzVCRTAxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMzVCQ0ExNzE3OEUxQzAwNjkw
QzdGIC8qIEZUTE9TUkV4aXRDb21waWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVu
a3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
MzVCQ0IxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgKi87IH07CisJCTBGMjM1QkUy
MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkNDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVu
a3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjIzNUJFMzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVmFsdWVGb3JtYXQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMzVCQ0QxNzE3OEUxQzAwNjkw
QzdGIC8qIEZUTFZhbHVlRm9ybWF0LmNwcCAqLzsgfTsKKwkJMEYyMzVCRTQxNzE3OEUxQzAwNjkw
QzdGIC8qIEZUTFZhbHVlRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIzNUJDRTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVmFsdWVGb3JtYXQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIz
NUJFQjE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMzVCRTcxNzE3OEU3MzAwNjkwQzdG
IC8qIERGR09TUkV4aXRCYXNlLmNwcCAqLzsgfTsKKwkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdG
IC8qIERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjIzNUJFODE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIzNUJF
RDE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkU5MTcxNzhFNzMwMDY5
MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwICovOyB9OworCQkwRjIzNUJFRTE3MTc4
RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIzNUJFQTE3MTc4RTczMDA2OTBDN0YgLyog
REZHT1NSRXhpdFByZXBhcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVu
Y2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyNEU1
NDAxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcg
LyogQXNzZW1ibHlIZWxwZXJzLmNwcCAqLzsgfTsKKwkJMEYyNEU1NDExN0VBOUY1OTAwQUJCMjE3
IC8qIEFzc2VtYmx5SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyNEU1M0MxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjRF
NTQyMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjRFNTNEMTdFQTlGNTkwMEFCQjIxNyAvKiBD
Q2FsbEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjI0RTU0MzE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1M0UxN0VBOUY1OTAwQUJC
MjE3IC8qIEZQUkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjI0RTU0NDE3RUE5RjU5MDBBQkIyMTcgLyogR1BSSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1M0YxN0VBOUY1OTAw
QUJCMjE3IC8qIEdQUkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjI0RTU0QzE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU0
NTE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5jcHAgKi87IH07CisJCTBGMjRFNTRE
MTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU0NjE3RUUyNzQ5MDBBQkIyMTcgLyogSklU
T3BlcmF0aW9ucy5oICovOyB9OworCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJl
Z2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjI0RTU0ODE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyNEU1NTAxN0VFMjc0
OTAwQUJCMjE3IC8qIFJlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyNEU1NDkxN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guY3BwICov
OyB9OworCQkwRjI0RTU1MTE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NEExN0VFMjc0OTAwQUJC
MjE3IC8qIFJlcGF0Y2guaCAqLzsgfTsKKwkJMEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3IC8qIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyNEU1NEIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvci5oICovOyB9OworCQkwRjI0RTU1NTE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5l
Q2FsbEZyYW1lU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMjRFNTUzMTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQuY3Bw
ICovOyB9OworCQkwRjI0RTU1NjE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU1
NDE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyNEU1NTgxN0Y3NEVEQjAwQUJC
MjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyNEU1NTcxN0Y3NEVEQjAwQUJCMjE3IC8qIFZhbHVlUmVjb3Zlcnku
Y3BwICovOyB9OworCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxs
b2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMjU2QzM0MTYyN0IwQUEwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMjVGMUFFMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExJbmxp
bmVDYWNoZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMjVGMUE3MTgxNjM1RjMwMDUyMkYzOSAvKiBGVExJbmxpbmVDYWNoZURlc2Ny
aXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjI1RjFBRjE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjVGMUE4MTgxNjM1
RjMwMDUyMkYzOSAvKiBGVExJbmxpbmVDYWNoZVNpemUuY3BwICovOyB9OworCQkwRjI1RjFCMDE4
MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI1RjFBOTE4MTYzNUYzMDA1MjJGMzkgLyog
RlRMSW5saW5lQ2FjaGVTaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEYyNUYxQjExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2Fs
bC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI1
RjFBQTE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCAqLzsgfTsKKwkJMEYy
NUYxQjIxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNUYxQUIxODE2MzVGMzAwNTIyRjM5
IC8qIEZUTFNsb3dQYXRoQ2FsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENh
bGxLZXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyNUYxQUMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgKi87IH07
CisJCTBGMjVGMUI0MTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjVGMUFEMTgxNjM1
RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjZBQzE3QjZCNTNGMDBBN0FFM0YgLyog
R0NJbmNvbWluZ1JlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMkI2NkE4MTdCNkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291
bnRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGMkI2NkFEMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkE5
MTdCNkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjZBRTE3QjZC
NTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkFBMTdCNkI1M0QwMEE3QUUzRiAv
KiBHQ0luY29taW5nUmVmQ291bnRlZFNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2NkFGMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29t
aW5nUmVmQ291bnRlZFNldElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkI2NkFCMTdCNkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVm
Q291bnRlZFNldElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjJCNjZERTE3QjZCNUFCMDBBN0FFM0YgLyogRGF0YVZpZXcuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QjAxN0I2
QjVBQjAwQTdBRTNGIC8qIERhdGFWaWV3LmNwcCAqLzsgfTsKKwkJMEYyQjY2REYxN0I2QjVBQjAw
QTdBRTNGIC8qIERhdGFWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjJCNjZCMTE3QjZCNUFCMDBBN0FFM0YgLyogRGF0YVZpZXcuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjZFMDE3QjZC
NUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCMjE3QjZCNUFCMDBBN0FFM0YgLyog
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEYyQjY2RTExN0I2QjVBQjAwQTdBRTNGIC8qIEdlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkI2NkIzMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYyQjY2RTIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QjQxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuY3BwICovOyB9OworCQkwRjJCNjZFMzE3QjZCNUFC
MDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QjUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZm
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjJCNjZFNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkI2MTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwICovOyB9OworCQkw
RjJCNjZFNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCNzE3QjZC
NUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQjY2RTYxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJy
YXlCdWZmZXJQcm90b3R5cGUuY3BwICovOyB9OworCQkwRjJCNjZFNzE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QjkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZm
ZXJQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjJCNjZFODE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXcuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QkEx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmNwcCAqLzsgfTsKKwkJMEYyQjY2
RTkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCQjE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNBcnJheUJ1ZmZlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjJCNjZFQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZl
clZpZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCNjZCQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYy
QjY2RUIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QkQxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTRGF0YVZpZXcuY3BwICovOyB9OworCQkwRjJCNjZFQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNE
YXRhVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyQjY2QkUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjZFRDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmll
d1Byb3RvdHlwZS5jcHAgKi87IH07CisJCTBGMkI2NkVFMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Rh
dGFWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJCNjZDMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2
NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QzExN0I2QjVBQjAwQTdBRTNGIC8q
IEpTRmxvYXQzMkFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEYyQjY2RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZDMjE3
QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjZGMTE3QjZCNUFCMDBBN0FFM0YgLyog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkI2NkMzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMkI2NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCNjZDNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMkI2NkYzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQjY2RjQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQjY2QzYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGMkI2NkY1MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQjY2QzcxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEYyQjY2RjYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQjY2QzgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGMkI2NkY3MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDhBcnJh
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2
QzkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50OEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQjY2RjgxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyQjY2Q0ExN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZBcnJheS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2NkY5MTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0ludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkNCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDMyQXJy
YXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjJCNjZGQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkNDMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwICovOyB9OworCQkw
RjJCNjZGQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZDRDE3QjZC
NUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQjY2RkMxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2Q0UxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlw
ZWRBcnJheVByb3RvdHlwZXMuY3BwICovOyB9OworCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2Q0YxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJh
eVByb3RvdHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjJCNjZGRTE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZEMDE3QjZC
NUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5jcHAgKi87IH07CisJCTBGMkI2NkZGMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZEMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFy
cmF5cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGMkI2NzAwMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkQyMTdCNkI1QUIwMEE3QUUz
RiAvKiBKU1VpbnQ4QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjJCNjcwMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50OENsYW1wZWRB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
QjY2RDMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjcwMjE3QjZCNUFC
MDBBN0FFM0YgLyogSlNVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2RDQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDE2QXJy
YXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjJCNjcwMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2RDUxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTVWludDMyQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjJCNjcwNDE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJh
eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyQjY2RDYxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9s
bGVyLmNwcCAqLzsgfTsKKwkJMEYyQjY3MDUxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVk
QXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJCNjZENzE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRy
b2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjJCNjcwNjE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheUFkYXB0b3JzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZEODE3QjZCNUFC
MDBBN0FFM0YgLyogVHlwZWRBcnJheUFkYXB0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQjY3MDcxN0I2QjVBQjAwQTdBRTNGIC8qIFR5
cGVkQXJyYXlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMkI2NkQ5MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJv
bGxlci5jcHAgKi87IH07CisJCTBGMkI2NzA4MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyQjY2REExN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQjY3MDkx
N0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZEQjE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRB
cnJheXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjJCNjcwQTE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2REMxN0I2QjVBQjAw
QTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmNwcCAqLzsgfTsKKwkJMEYyQjY3MEIxN0I2QjVBQjAw
QTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZERDE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheVR5
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjJCREMxNTE1MUM1RDREMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREMxMjE1MUM1RDRBMDBDRDg5
MTAgLyogREZHRml4dXBQaGFzZS5jcHAgKi87IH07CisJCTBGMkJEQzE2MTUxQzVENEYwMENEODkx
MCAvKiBERkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjJCREMxMzE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkJEQzIx
MTUxRTgwM0IwMENEODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkJEQzFGMTUxRTgwMzgwMENEODkxMCAvKiBE
RkdJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjJCREMyQzE1MUZERTkxMDBDRDg5MTAgLyogT3BlcmFuZHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkJEQzJCMTUxRkRFOEIw
MENEODkxMCAvKiBPcGVyYW5kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGMkJEQzQ1MTUyMjgwMUIwMENEODkxMCAvKiBERkdNaW5pZmllZEdy
YXBoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJC
REMzRDE1MjI4MDE3MDBDRDg5MTAgLyogREZHTWluaWZpZWRHcmFwaC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkJEQzQ2MTUyMjgwMjAwMENE
ODkxMCAvKiBERkdNaW5pZmllZE5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkJEQzNFMTUyMjgwMTcwMENEODkxMCAvKiBERkdNaW5pZmllZE5v
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjJCREM0NzE1MjI4MDI1MDBDRDg5MTAgLyogREZHVmFsdWVSZWNvdmVyeU92ZXJyaWRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREMzRjE1MjI4
MDE3MDBDRDg5MTAgLyogREZHVmFsdWVSZWNvdmVyeU92ZXJyaWRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQkRDNDgxNTIyODAyOTAwQ0Q4
OTEwIC8qIERGR1ZhbHVlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJCREM0MDE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFsdWVTb3VyY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJC
REM0OTE1MjI4MDk2MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQkRDNDExNTIyODAxNzAwQ0Q4OTEw
IC8qIERGR1ZhcmlhYmxlRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjJCREM0QTE1MjI4MDlBMDBDRDg5MTAgLyogREZHVmFyaWFibGVF
dmVudFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCREM0MjE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudFN0cmVhbS5j
cHAgKi87IH07CisJCTBGMkJEQzRCMTUyMjgwOUQwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50
U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjJCREM0MzE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudFN0cmVhbS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkJEQzREMTUy
MjgxODYwMENEODkxMCAvKiBERkdNaW5pZmllZE5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQkRDNEMxNTIyODE4MzAwQ0Q4OTEwIC8qIERG
R01pbmlmaWVkTm9kZS5jcHAgKi87IH07CisJCTBGMkJEQzRGMTUyMjhCRjMwMENEODkxMCAvKiBE
RkdWYWx1ZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJCREM0RTE1MjI4QkU3MDBDRDg5MTAgLyogREZHVmFsdWVTb3VyY2UuY3BwICov
OyB9OworCQkwRjJCREM1MTE1MjI4RkZEMDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREM1MDE1
MjI4RkZBMDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5jcHAgKi87IH07CisJCTBGMkU4OTJD
MTZEMDI4QUQwMDlFNEZEMiAvKiBVbnVzZWRQb2ludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTk4N0YyRjE2ODI4QTdFMDAzQzJGOEQgLyogVW51
c2VkUG9pbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMkU4OTJEMTZEMDJCQUYwMDlFNEZEMiAvKiBERkdNaW5pZmllZElELmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxMDE2QjNBOTY0
MDAzRjY5NkIgLyogREZHTWluaWZpZWRJRC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBERkdEQ0VQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjJGQzc3MDE2RTEyRjZGMDAzOEQ5NzYgLyogREZHRENFUGhhc2UuY3BwICovOyB9OworCQkwRjJG
Qzc3MzE2RTEyRjc0MDAzOEQ5NzYgLyogREZHRENFUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkZDNzcxMTZFMTJGNkYwMDM4RDk3NiAvKiBE
RkdEQ0VQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMkZDQ0Y5MThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJGQ0NGMjE4
QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuY3BwICovOyB9OworCQkwRjJGQ0NG
QTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkZDQ0YzMThBNjAwNzAwMDFBMjdGOCAv
KiBERkdHcmFwaFNhZmVwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGMkZDQ0ZCMThBNjAwNzAwMDFBMjdGOCAvKiBERkdTYWZlcG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRkND
RjQxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5jcHAgKi87IH07CisJCTBGMkZDQ0ZD
MThBNjAwNzAwMDFBMjdGOCAvKiBERkdTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkZDQ0Y1MThBNjAwNzAwMDFBMjdGOCAvKiBERkdT
YWZlcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjJGQ0NGRDE4QTYwMDcwMDAxQTI3RjggLyogREZHU2Nhbm5hYmxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJGQ0NGNjE4QTYwMDcwMDAx
QTI3RjggLyogREZHU2Nhbm5hYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEYyRkNDRkUxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERh
dGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
RkNDRjcxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEuY3BwICovOyB9OworCQkwRjJG
Q0NGRjE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRkNDRjgxOEE2MDA3MDAwMUEyN0Y4IC8q
IERGR1RocmVhZERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMDBCNzcxOEFC
MDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjMwMEI3QjE4QUIxQjE0MDBBNkQ3MkUgLyogREZH
SW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMDBCNzkxOEFCMUIxNDAwQTZENzJFIC8qIERGR0ludGVn
ZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcCAqLzsgfTsKKwkJMEYzMDBCN0MxOEFCMUIxNDAwQTZE
NzJFIC8qIERGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMwMEI3QTE4QUIxQjE0MDBBNkQ3MkUgLyog
REZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjM0QjE0OTE2RDQyMDEwMDAxQ0RBNUEgLyogREZH
VXNlS2luZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjM0QjE0NzE2RDQyMDBFMDAxQ0RBNUEgLyogREZHVXNlS2luZC5jcHAgKi87IH07CisJCTBG
MzRCMTRBMTZENDIwMTMwMDFDREE1QSAvKiBERkdVc2VLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM0QjE0ODE2RDQyMDBFMDAxQ0RBNUEgLyog
REZHVXNlS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMzRCMTRDMTZENDNFMEQwMDFDREE1QSAvKiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMzRCMTRCMTZENDNFMEMwMDFDREE1QSAvKiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzhCMDBGMTdDRjA3N0YwMEIx
NDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwICovOyB9OworCQkwRjM4QjAxMjE3Q0YwNzgzMDBC
MTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjM4QjAxMDE3Q0YwNzdGMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBv
aW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEYzOEIwMTcxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzhCMDEzMTdDRkU3NTUw
MEIxNDREMyAvKiBERkdDb21waWxhdGlvbktleS5jcHAgKi87IH07CisJCTBGMzhCMDE4MTdDRkU3
NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbktleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMTQxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0Nv
bXBpbGF0aW9uS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM4QjAx
NTE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmNwcCAqLzsgfTsKKwkJMEYz
OEIwMUExN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMTYxN0NGRTc1NTAwQjE0
NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGM0FDNzUyMTgzRUExMDQwMDMyMDI5RiAvKiBTdGFja0Fs
aWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYzQUM3NTExODNFQTEwNDAwMzIwMjlGIC8qIFN0YWNrQWxpZ25tZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzQUM3NTQxODhFNUVDODAw
MzIwMjlGIC8qIEV4aXRpbmdKSVRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjNBQzc1MzE4OEU1RUM4MDAzMjAyOUYgLyogRXhpdGluZ0pJVFR5
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjNCM0ExQTE1M0U2OEYyMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMTcxNTNF
NjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCAqLzsgfTsKKwkJMEYz
QjNBMUIxNTNFNjhGNDAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0ExODE1M0U2OEVG
MDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjNCM0EyNzE1NDRDOTk1MDAzRUQwRkYg
LyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyNDE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5jcHAgKi87IH07CisJCTBGM0IzQTI4MTU0NEM5OTcwMDNFRDBG
RiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0Ey
OTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovOyB9OworCQkwRjNCM0EyQzE1
NDc1MDAyMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxp
ZGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0NTE0NjBDQkFCMDAxMzFG
OEYgLyogVmFsdWVSZWNvdmVyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNDI2QTQ5MTQ2MENCQjcwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2
QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQyNkE0QjE0NjBDRDZFMDAxMzFG
OEYgLyogRGF0YUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQzMTczODE0NkJB
QzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFi
bGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3Mjcw
MEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2Vw
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkw
RjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUy
NzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1Bh
dGhzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5jcHAgKi87IHNldHRpbmdz
ID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBG
NDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50U2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0
NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyog
TExJbnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmln
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBD
NjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAw
QkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xl
dmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyog
TG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAv
KiBMTEludERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJ
bnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcy
IC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENh
bGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ4NTMy
MTE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzFGMTg3NzUwNTYwMDgzQjY4NyAvKiBE
RkdBcml0aE1vZGUuY3BwICovOyB9OworCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZH
QXJpdGhNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ4NTMyMDE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0ODUzMjcxODdERkRFQzAw
ODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzIzMTg3REZERUMwMDgzQjY4NyAvKiBGVExB
dmFpbGFibGVSZWNvdmVyeS5jcHAgKi87IH07CisJCTBGNDg1MzI4MTg3REZERUMwMDgzQjY4NyAv
KiBGVExBdmFpbGFibGVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0ODUzMjQxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJl
Y292ZXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY0ODUzMjkxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzI1MTg3REZE
RUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5jcHAgKi87IH07CisJCTBGNDg1MzJBMTg3
REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0ODUzMjYxODdERkRFQzAwODNCNjg3IC8qIEZU
TFJlY292ZXJ5T3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY0OTNBRkExNkQwQ0FEMzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDkzQUY4
MTZEMENBRDEwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgKi87IH07CisJCTBGNEI5NERD
MTdCOUYwNzUwMEREMDNBNCAvKiBUeXBlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Qjk0REIxN0I5RjA3NTAwREQwM0E0IC8q
IFR5cGVkQXJyYXlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0Q0VENUUxOENFQTdBQjAwODAyRkUwIC8qIFBvbHltb3JwaGljR2V0
QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0Q0VENUMxOENFQTdBQjAwODAyRkUwIC8qIFBvbHltb3JwaGljR2V0QnlJZExpc3QuY3Bw
ICovOyB9OworCQkwRjRDRUQ1RjE4Q0VBN0FCMDA4MDJGRTAgLyogUG9seW1vcnBoaWNHZXRCeUlk
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
Q0VENUQxOENFQTdBQjAwODAyRkUwIC8qIFBvbHltb3JwaGljR2V0QnlJZExpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjRGMjlERjE4QjZB
RDFDMDA1N0JDMTUgLyogREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0RjI5REQx
OEI2QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNl
LmNwcCAqLzsgfTsKKwkJMEY0RjI5RTAxOEI2QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRpY0V4ZWN1
dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjRGMjlERTE4QjZBRDFDMDA1N0JDMTUgLyogREZHU3RhdGljRXhl
Y3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjU1NDFCMTE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lh
bFBvaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCAqLzsgfTsK
KwkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1NDFCMDE2MTNDMUZCMDBD
RTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMgLyogVG9OYXRpdmVG
cm9tVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNTU5ODk3MTdDODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNTVDMTk0MTcyNzZF
NDYwMENFQUJGRCAvKiBERkdBYnN0cmFjdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVDMTkzMTcyNzZFNDYwMENFQUJGRCAvKiBERkdB
YnN0cmFjdFZhbHVlLmNwcCAqLzsgfTsKKwkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8qIEFi
c3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovOyB9OworCQkw
RjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8q
IEFic3RyYWN0UEMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjU2QTFEMzE1MDAwRjM1MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NkExRDExNTAw
MEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjU2QTFENTE1MDAxQ0Y0MDAyOTkyQjEgLyog
RXhlY3V0aW9uQ291bnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5j
cHAgKi87IH07CisJCTBGNTcyRDRGMTY4NzlGREQwMEU1N0ZCRCAvKiBUaHVua0dlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NzJENEQx
Njg3OUZEQjAwRTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY1NzgwQTIxOEZFMUU5ODAwMUU3MkQ5IC8q
IFB1cmVOYU4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNTc4MEExMThGRTFFOTgwMDFFNzJEOSAvKiBQdXJlTmFOLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY1QTUyRDAxN0FERDcxNzAwOEVDQjJE
IC8qIENvcHlUb2tlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY1QTUyQ0YxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tlbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNUE2MjgzMTg4Qzk4RDQw
MDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUE2MjgxMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJh
bmdlLmNwcCAqLzsgfTsKKwkJMEY1QTYyODQxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFu
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUE2
MjgyMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY1RUY5MUUxNjg3OEY3QTAwM0U1QzI1
IC8qIEpJVFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjVFRjkxQjE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCAqLzsgfTsK
KwkJMEY1RUY5MUYxNjg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1
IC8qIEpJVFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxp
emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVG
MDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNjIwMTc0MTQzRkNE
MzMwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBE
RkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjYyMDE3NjE0M0ZDRDNCMDA2OEI3N0MgLyogREZHQmFzaWNCbG9j
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAx
NzAxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Jhc2ljQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjYyMDE3NzE0M0ZDRDNGMDA2OEI3N0Mg
LyogREZHQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2MjAxNkYxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjYz
OTQzRjE1Qzc1RjE5MDA2QTU5N0MgLyogREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2Mzk0M0QxNUM3NUYx
NDAwNkE1OTdDIC8qIERGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjYzOTQ0MDE1Qzc1RjFEMDA2QTU5
N0MgLyogREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYzOTQzQzE1Qzc1RjE0MDA2QTU5N0MgLyogREZH
VHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgKi87IH07CisJCTBGNjM5NDU0MTVEMDcwNTUwMDZB
NTk3QyAvKiBBcnJheVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2Mzk0NTExNUQwNzA1MTAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5j
cHAgKi87IH07CisJCTBGNjM5NDU1MTVEMDcwNTcwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjM5NDUyMTVE
MDcwNTEwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjYzOTQ3ODE1RENFMzRCMDA2QTU5N0MgLyogREZH
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2Mzk0NzYxNURDRTM0NzAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFi
c3RyYWN0VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjYzOTQ4NDE1RTQ4MTE4MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjM5NDgxMTVFNDgx
MTQwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuY3BwICovOyB9OworCQkwRjYzOTQ4NTE1RTQ4MTFC
MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjYzOTQ4MjE1RTQ4MTE0MDA2QTU5N0MgLyogREZHQXJyYXlNb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY2
NjZFQzAxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUJF
MTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY2NjZFQzEx
ODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEg
LyogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjY2NkVDNjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxh
YmlsaXR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNjY2RUMyMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwICovOyB9Owor
CQkwRjY2NkVDNzE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2NkVDMzE4MzU2NzJCMDBE
MDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY2NjZFQ0MxODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3Vy
cmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2NkVDQTE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJy
ZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcCAqLzsgfTsKKwkJMEY2NjZFQ0QxODM2QjM3RTAw
RDAxN0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQ0IxODM2QjM3RTAwRDAx
N0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNjZFMTZCMTRERjNGMTYwMEI3
QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyogREZHQWRqYWNlbmN5
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGNjZFMTZDMTRERjNGMTYwMEI3QjJFNCAvKiBERkdFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2OTE0REYzRjEzMDBCN0IyRTQgLyog
REZHRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGNkIxQ0I1MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQjMxODVGQzlFOTAwODQ1
RDk3IC8qIEZUTEpTQ2FsbC5jcHAgKi87IH07CisJCTBGNkIxQ0I2MTg1RkM5RTkwMDg0NUQ5NyAv
KiBGVExKU0NhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNkIxQ0I0MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjZCMUNCOTE4NjEyNDRDMDA4
NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
NkIxQ0JBMTg2MTI0NEMwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0I4MTg2MTI0
NEMwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjZCMUNCRDE4NjEyNDZBMDA4NDVE
OTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0JCMTg2MTI0NkEwMDg0
NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwICovOyB9Owor
CQkwRjZCMUNCRTE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVy
R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVy
R2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEY2QjFDQzMxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQkYx
ODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwICovOyB9OworCQkwRjZC
MUNDNDE4NjJDNDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzAxODYyQzQ3ODAwODQ1
RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjZCMUNDNTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53
aW5kSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjZCMUNDMTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5jcHAgKi87IH07CisJ
CTBGNkIxQ0M2MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjZCMUNDMjE4NjJDNDc4MDA4NDVE
OTcgLyogRlRMVW53aW5kSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNkIxQ0M5MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFp
bFJldHVyblRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjZCMUNDNzE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5U
aHVua3MuY3BwICovOyB9OworCQkwRjZCMUNDQTE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVj
a0ZhaWxSZXR1cm5UaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNkIxQ0M4MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGNkU4NDVBMTkwMzBCRUYwMDU2Mjc0MSAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2RTg0NTkx
OTAzMEJFRjAwNTYyNzQxIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5jcHAgKi87IH07CisJCTBG
NzAyNUE5MTcxNEIwRkEwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MDI1QTcxNzE0
QjBGODAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgKi87IH07CisJCTBG
NzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzAyNUE4MTcxNEIw
RjgwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjcxNENBNDE2RUE5MkYwMDBGM0VC
RUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcxNENBMTE2RUE5MkVEMDBGM0VCRUIgLyog
REZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgKi87IH07CisJCTBGNzE0Q0E1MTZFQTky
RjIwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcxNENBMjE2RUE5MkVEMDBGM0VC
RUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNzNEN0FFMTY1QTE0MkQwMEFDQUI3MSAv
KiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNEN0FCMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2Fs
bFN0dWJSb3V0aW5lLmNwcCAqLzsgfTsKKwkJMEY3M0Q3QUYxNjVBMTQzMDAwQUNBQjcxIC8qIENs
b3N1cmVDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJS
b3V0aW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MkEzQTIwMTY1MUM2
NjEwMEE4MEFGRSAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGNzU3NkQyMThF
MUZFRTkwMDJFRjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc1NzZEMDE4RTFGRUU5MDAy
RUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwICovOyB9OworCQkwRjc1NzZE
MzE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzU3NkQxMThFMUZFRTkw
MDJFRjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYz
RSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjc2NkQyNjE1QThDQzFCMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUu
Y3BwICovOyB9OworCQkwRjc2NkQyQjE1QThDQzM4MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVT
ZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3
NjZEMjkxNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmNwcCAqLzsgfTsKKwkJ
MEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQyQTE1QThDQzM0MDA4
RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjc2NkQyRjE1QThEQ0UwMDA4RjM2M0UgLyogR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNzY2RDJEMTVBOERDREQwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRp
bmUuY3BwICovOyB9OworCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0
dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjc2NkQyRTE1QThEQ0REMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3NjZEMzEx
NUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQxQzE1QTUwMjhEMDA4RjM2M0UgLyogSklU
U3R1YlJvdXRpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjc2NkQzODE1QUU0QTFDMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjc2NkQzNjE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0
Y2hwb2ludC5jcHAgKi87IH07CisJCTBGNzY2RDM5MTVBRTRBMUYwMDhGMzYzRSAvKiBTdHJ1Y3R1
cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1
YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3
NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi87IH07CisJCTBG
N0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTFGMTQxNzJDMkYwMDE3OUM5
NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3RTE0
NjlFQkM0MDBDRjI0NDIgLyogREZHQ29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFs
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4
MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAv
KiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKKwkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzY0QjUxNjRCMEMw
RTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGODg1RTExMTg0OUEzQkUwMEYxRTNGQSAvKiBC
eXRlY29kZVVzZURlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY4ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY4RjJCOTUxNzJF
MDRBMDAwN0RCREE1IC8qIEZUTExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY4RjJCOTMxNzJFMDQ5RTAwN0RCREE1IC8qIEZUTExpbmsuY3Bw
ICovOyB9OworCQkwRjhGMkI5NjE3MkUwNEEzMDA3REJEQTUgLyogRlRMTGluay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4RjJCOTQxNzJFMDQ5RTAw
N0RCREE1IC8qIEZUTExpbmsuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjhGMkI5OTE3MkYwNEZGMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50
aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGOEYyQjk3MTcyRjA0RkQwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwICov
OyB9OworCQkwRjhGMkI5QTE3MkYwNTAxMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGMkI5
ODE3MkYwNEZEMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY4RjJCOUUxNzMwNkM4RDAw
N0RCREE1IC8qIFNvdXJjZUNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY4RjJCOUQxNzMwNkM4QjAwN0RCREE1IC8qIFNvdXJjZUNvZGUuY3Bw
ICovOyB9OworCQkwRjhGOTQzQzE2Njc2MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjhGOTQzQTE2Njc2MzExMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgKi87
IH07CisJCTBGOEY5NDQwMTY2NzYzMzAwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDNEMTY2NzYz
MkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCAqLzsgfTsKKwkJMEY4Rjk0NDExNjY3NjMz
MjAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tI
YXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDNGMTY2NzYzMkQwMEQ2MTk3MSAv
KiBDb2RlVHlwZS5jcHAgKi87IH07CisJCTBGOEY5NDQ0MTY2NzYzNTQwMEQ2MTk3MSAvKiBKSVRD
b2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
OEY5NDQzMTY2NzYzNTIwMEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCAqLzsgfTsKKwkJMEY4Rjk0NDYx
NjY3NjRGMTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4Rjk0NDUxNjY3NjRFRTAwRDYxOTcxIC8qIENvZGVP
cmlnaW4uY3BwICovOyB9OworCQkwRjkxODFDNzE4NDE1Q0E1MDA1N0I2NjkgLyogVmFyaWFibGVX
YXRjaHBvaW50U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjkxODFDNjE4NDE1Q0E1MDA1N0I2NjkgLyogVmFyaWFibGVXYXRjaHBvaW50U2V0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5MTlE
MEMxNTdFRTA5RjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMDkxNTdFRTA5RDAwNEE0
RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICovOyB9OworCQkwRjkxOUQwRDE1N0VFMEEy
MDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3lt
Ym9sVGFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5j
cHAgKi87IH07CisJCTBGOTE5RDExMTU3RjMzMkMwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjkxOUQwRjE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTE5
RDI1MTU4NTNDRTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDIyMTU4NTNDREUwMDRBNEU3RCAvKiBX
YXRjaHBvaW50LmNwcCAqLzsgfTsKKwkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNo
cG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
OTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdE
IC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGOTE5RDI3MTU4NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgKi87
IH07CisJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5MzE0Q0E3
REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovOyB9OworCQkwRjkzMzI5RTE0Q0E3
REM1MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlu
a1N0YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGOTMzMjlGMTRDQTdEQ0EwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk1MTRDQTdEQzEw
MDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLzsgfTsKKwkJMEY5MzMyQTAxNENBN0RDRDAw
ODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGOTMzMjk2MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5
MzMyQTMxNENBN0RENzAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTkxNENBN0RDMTAwODVGM0M2
IC8qIFB1dEJ5SWRTdGF0dXMuY3BwICovOyB9OworCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYg
LyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjkzMzJBNTE0
Q0E3REREMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5QjE0Q0E3REMxMDA4NUYzQzYgLyogU3RydWN0
dXJlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY5M0I0QTkxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTNCNEE3MThCOTJDNEQw
MDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi87IH07CisJCTBGOTNCNEFBMThCOTJDNEQw
MDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJp
YW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NjNCMzYxM0ZDNkZERTAwMDJEOUIy
IC8qIFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklU
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5
NkVCQjExNjY3NkVGNDAwOEJBREUzIC8qIENvZGVCbG9ja1dpdGhKSVRUeXBlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5NzQ5NzExNjg3QURF
NDAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTc0OTZGMTY4N0FERTIwMEE0RkY2QSAvKiBKU0NlbGxJbmxp
bmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY5ODIwNjAxNkJGRTM4MTAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk4MjA1RDE2QkZFMzdG
MDAyNDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCAqLzsgfTsKKwkJMEY5ODIwNjExNkJG
RTM4MzAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5ODIwNUUxNkJGRTM3RjAwMjQwRDAyIC8qIFBy
ZWNpc2VKdW1wVGFyZ2V0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGOUM1RTVFMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUM1
RTVDMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmNwcCAqLzsgfTsKKwkJMEY5
QzVFNUYxOEUzNUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUM1RTVEMThFMzVGNUUwMEQ0MzFD
MyAvKiBGVExEV0FSRlJlZ2lzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY5RDMzNzAxNjVEQkI5MDAwNUFEMzg3IC8qIERpc2Fzc2VtYmxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlE
MzM2RTE2NURCQjhEMDA1QUQzODcgLyogRGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKKwkJMEY5RDMz
OTYxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM5NDE3RkZDNEU2MDA3M0MyQkMgLyog
REZHRmx1c2hlZEF0LmNwcCAqLzsgfTsKKwkJMEY5RDMzOTcxN0ZGQzRFNjAwNzNDMkJDIC8qIERG
R0ZsdXNoZWRBdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOUQzMzlBMTgwM0FEQjcw
MDczQzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzOTgxODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFw
cy5jcHAgKi87IH07CisJCTBGOUQzMzlCMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzk5
MTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjlGQjRGNDE3RkNCOTE3MDBDQjY3RjggLyog
REZHU3RhY2tMYXlvdXRQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjlGQjRGMjE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAgKi87IH07CisJCTBGOUZCNEY1MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xh
eW91dFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjlGQjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOUZDOEMzMTRF
MUI1RkUwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOEJGMTRFMUI1RkIwMEQ1MkFF
MCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCAqLzsgfTsKKwkJMEY5RkM4QzQxNEUxQjYw
MDAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOEMwMTRFMUI1RkIwMEQ1MkFFMCAvKiBQ
b2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUZDOEMxMTRF
MUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZBMkMxN0IxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5u
ZXJVdGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkEyQzE3OTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmNwcCAqLzsgfTsK
KwkJMEZBMkMxN0MxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMkMxN0ExN0Q3Q0Y4NDAw
OUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGQTU4MUJBMTUwRTk1MkMwMEI5QTJEOSAvKiBERkdOb2Rl
RmxhZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAgKi87IH07CisJCTBG
QTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI4MTUwRTk1MkEwMEI5QTJEOSAv
KiBERkdOb2RlRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI5MTUwRTk1
MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGQTdBOEVCMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBN0E4RTkx
OEI0MTNDODAwNTIzNzFEIC8qIFJlZy5jcHAgKi87IH07CisJCTBGQTdBOEVDMThCNDEzQzgwMDUy
MzcxRCAvKiBSZWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQTdBOEVBMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkE3QThFRTE4Q0U0RkQ4MDA1MjM3MUQg
LyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTdBOEVEMThDRTRGRDgwMDUyMzcxRCAvKiBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IuY3BwICovOyB9OworCQkwRkFGN0VGRDE2NUJBOTFCMDAwQzg0NTUg
LyogSklURGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQUY3RUZBMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIu
Y3BwICovOyB9OworCQkwRkFGN0VGRTE2NUJBOTFGMDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkFGN0VG
QjE2NUJBOTE5MDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZCMTA1ODUxNjc1NDgwRjAwRjhBQjZF
IC8qIEV4aXRLaW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQjEwNTgyMTY3NTQ4MEMwMEY4QUI2RSAvKiBFeGl0S2luZC5jcHAgKi87IH07CisJ
CTBGQjEwNTg2MTY3NTQ4MTIwMEY4QUI2RSAvKiBFeGl0S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCMTA1ODMxNjc1NDgwQzAwRjhBQjZFIC8q
IEV4aXRLaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZCMTA1OEIxNjc1NDgzMTAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkIxMDU4NzE2NzU0
ODJFMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmNwcCAqLzsgfTsKKwkJMEZCMTA1OEMxNjc1
NDgzMzAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCMTA1ODgxNjc1NDgyRTAwRjhBQjZFIC8qIFByb2Zp
bGVyT1NSRXhpdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGQjEwNThEMTY3NTQ4MzcwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjEwNTg5
MTY3NTQ4MkUwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmNwcCAqLzsgfTsKKwkJMEZC
MTA1OEUxNjc1NDgzQTAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdFNpdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjEwNThBMTY3NTQ4MkUwMEY4
QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZCMTRFMUUxODEyNEFDRTAwOUI2QjREIC8qIEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQjE0RTFDMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAgKi87IH07CisJCTBGQjE0RTFGMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCMTRFMUQxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJh
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEZCMTRFMjExODEyNTcwQjAwOUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCMTRFMjAxODEyNTcw
QjAwOUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQjE0RTIzMTgxMzA5NTUwMDlCNkI0RCAv
KiBERkdJbmxpbmVDYWNoZVdyYXBwZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkIxNEUyMjE4MTMwOTU1MDA5QjZCNEQgLyogREZHSW5s
aW5lQ2FjaGVXcmFwcGVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZC
NTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0Njc4MTRGNUM0
NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi87IH07CisJCTBGQjU0
NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1NDY3QTE0RjVD
N0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQjU0NjdEMTRGNUNGRDYw
MDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0NjdDMTRGNUNGRDMwMDJDMjk4
OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCAqLzsgfTsKKwkJMEZCN0YzOTUx
NUVEOEU0NjAwRjE2N0IyIC8qIEFycmF5Q29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdGMzg5MTVFRDhFMzgwMEYxNjdCMiAvKiBB
cnJheUNvbnZlbnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZCN0YzOTYxNUVEOEU0NjAwRjE2N0IyIC8qIEFycmF5U3RvcmFnZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOEExNUVE
OEUzODAwRjE2N0IyIC8qIEFycmF5U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQjdGMzk3MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0
ZXJmbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QjdGMzhCMTVFRDhFMzgwMEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkI3RjM5ODE1RUQ4RTQ2MDBGMTY3QjIg
LyogQnV0dGVyZmx5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZCN0YzOEMxNUVEOEUzODAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkI3
RjM5OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdGMzhEMTVFRDhFMzgwMEYxNjdCMiAv
KiBJbmRleGluZ0hlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QjdGMzhFMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkI3RjM5QjE1RUQ4
RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3RjM4RjE1RUQ4RTM4MDBGMTY3QjIgLyogSW5kZXhpbmdU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEZCN0YzOUMxNUVEOEU0NjAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOTAxNUVEOEUzODAwRjE2
N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGQjdGMzlEMTVFRDhFNDYwMEYxNjdCMiAvKiBSZWplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdGMzkxMTVF
RDhFMzgwMEYxNjdCMiAvKiBSZWplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJy
YXlWYWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZCN0YzOTIxNUVEOEUzODAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkJDMEFFNzE0
OTZDN0M0MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCQzBBRTQxNDk2QzdDMTAwRDRGQkREIC8qIERG
R0V4aXRQcm9maWxlLmNwcCAqLzsgfTsKKwkJMEZCQzBBRTgxNDk2QzdDNzAwRDRGQkREIC8qIERG
R0V4aXRQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkJDMEFFNTE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkJEN0U2OTE0NDc5
OTk2MDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZCRDdFNjcxNDQ3OTk4RjAwNDgxMzE1IC8qIENvZGVPcmlnaW4u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkJF
MEY3MjE2QzFEQjAzMDA4MkM1RTggLyogREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJFMEY2QjE2QzFEQjAx
MDA4MkM1RTggLyogREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgKi87IH07CisJCTBGQkUwRjcz
MTZDMURCMDUwMDgyQzVFOCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJFMEY2QzE2QzFEQjAxMDA4MkM1
RTggLyogREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQkUwRjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQ
cmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZCRTBGNkQxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rp
b25JbmplY3Rpb25QaGFzZS5jcHAgKi87IH07CisJCTBGQkUwRjc1MTZDMURCMEIwMDgyQzVFOCAv
KiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkUwRjZFMTZDMURCMDEwMDgyQzVFOCAvKiBERkdQcmVk
aWN0aW9uSW5qZWN0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRkJFMEY3NjE2QzFEQjBGMDA4MkM1RTggLyogREZHVW5pZmljYXRp
b25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkJFMEY2RjE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5jcHAgKi87
IH07CisJCTBGQkUwRjc3MTZDMURCMTIwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJFMEY3MDE2
QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0
MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkMwOTc2ODE0NjhBNkVGMDBDRjI0NDIgLyogREZHT1NSRXhpdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzA5NzcxMTQ2OTNB
RjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzZGMTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdP
U1JFeGl0Q29tcGlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRkMwOTc3MjE0NjkzQUY5MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
MDk3NzAxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCAqLzsgfTsK
KwkJMEZDMDk3NzYxNDY5NDNCMDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjMyXzY0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5Nzc1
MTQ2OTQzQUQwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgKi87IH07CisJ
CTBGQzA5NzkxMTQ2QTZGNzEwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzhFMTQ2QTZGNjMwMENGMjQ0
MiAvKiBERkdPU1JFeGl0LmNwcCAqLzsgfTsKKwkJMEZDMDk3OTIxNDZBNkY3MzAwQ0YyNDQyIC8q
IERGR09TUkV4aXRDb21waWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBp
bGVyLmNwcCAqLzsgfTsKKwkJMEZDMDk3QTExNDZCMjhDQTAwQ0YyNDQyIC8qIERGR1RodW5rcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc5
RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAqLzsgfTsKKwkJMEZDMDk3QTIxNDZC
MjhDQzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3QTAxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzIw
Q0I1MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzIwQ0IzMTg1MkUy
QzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCAqLzsgfTsKKwkJMEZD
MjBDQjYxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzIwQ0I0MTg1MkUy
QzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDMjBDQjkxODU1NkEzNTAwQzlF
OTU0IC8qIERGR1NTQUxvd2VyaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMjBDQjcxODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxv
d2VyaW5nUGhhc2UuY3BwICovOyB9OworCQkwRkMyMENCQTE4NTU2QTM1MDBDOUU5NTQgLyogREZH
U1NBTG93ZXJpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZDMjBDQjgxODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxvd2VyaW5nUGhhc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkMz
MTQxMjE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzMxNDEwMTgxNDU1OTEwMDAzMzIzMiAvKiBS
ZWdpc3RlclNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIzMiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMzE0MTExODE0
NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNldC5jcHAgKi87IH07CisJCTBGQzMxNDE1MTgx
NDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMzMTQxNDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0
ZXJTZXQuY3BwICovOyB9OworCQkwRkM3MTJERTE3Q0Q4Nzc5MDA4Q0M5M0MgLyogRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQzcxMkRDMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suY3BwICovOyB9OworCQkwRkM3MTJERjE3Q0Q4NzdDMDA4Q0M5M0MgLyogRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkM3MTJERDE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZDNzEyRTIxN0NEODc5MTAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQzcxMkUwMTdDRDg3OEYwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi87IH07CisJCTBGQzcxMkUzMTdDRDg3OTMwMDhDQzkz
QyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNzEyRTExN0NEODc4RjAwOENDOTND
IC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDODE1MEExNDA0M0JGNTAwQ0ZB
NjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzgxNTA5MTQwNDNCRDIwMENGQTYwMyAvKiBXcml0ZUJhcnJp
ZXJTdXBwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZDODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDODE1MDgx
NDA0M0JDQTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwICovOyB9OworCQkwRkM5
N0YzMzE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzk3RjJG
MTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwICov
OyB9OworCQkwRkM5N0YzNDE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkM5N0YzMDE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBv
aW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEZDOTdGMzUxODIwMjBENzAwMkM5QjI2IC8qIFByb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQzk3RjMxMTgyMDIwRDcwMDJDOUIyNiAvKiBQcm9maWxlZENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5jcHAgKi87IH07CisJCTBGQzk3RjM2MTgyMDIwRDcwMDJDOUIyNiAvKiBQ
cm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDOTdGMzIxODIwMjBENzAwMkM5QjI2IC8q
IFByb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDOTdGM0QxODIwMjExOTAwMkM5
QjI2IC8qIERGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDOTdGMzcxODIwMjExOTAwMkM5
QjI2IC8qIERGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwICovOyB9OworCQkw
RkM5N0YzRTE4MjAyMTE5MDAyQzlCMjYgLyogREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25Q
aGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
OTdGMzgxODIwMjExOTAwMkM5QjI2IC8qIERGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RkM5N0YzRjE4MjAyMTE5MDAyQzlCMjYgLyogREZHSnVtcFJlcGxhY2VtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzk3RjM5MTgyMDIxMTkw
MDJDOUIyNiAvKiBERkdKdW1wUmVwbGFjZW1lbnQuY3BwICovOyB9OworCQkwRkM5N0Y0MDE4MjAy
MTE5MDAyQzlCMjYgLyogREZHSnVtcFJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM5N0YzQTE4MjAyMTE5MDAyQzlCMjYgLyogREZH
SnVtcFJlcGxhY2VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZDOTdGNDExODIwMjExOTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xs
ZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZDOTdGM0IxODIwMjExOTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9u
UGhhc2UuY3BwICovOyB9OworCQkwRkM5N0Y0MjE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZDOTdGM0MxODIwMjExOTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xs
ZWN0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRkNDQUU0NTE2RDBDRjc0MDBEMEM2NUIgLyogUGFyc2VyRXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0NBRTQzMTZEMENGNkUw
MEQwQzY1QiAvKiBQYXJzZXJFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGQ0VGQUFCMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVz
dG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkNFRkFBOTE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuY3BwICovOyB9OworCQkw
RkNFRkFBQzE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0VGQUFBMTgwNEMxM0UwMDQ3MkNF
NCAvKiBGVExTYXZlUmVzdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGQ0VGQUIwMTgwNUNBNkQwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExW
TS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRUZB
QUUxODA1Q0E2RDAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDRUZBQjExODA1Q0E2RDAwNDcyQ0U0
IC8qIEluaXRpYWxpemVMTFZNTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDRUZBQUYxODA1Q0E2RDAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZN
TWFjLm1tICovOyB9OworCQkwRkNFRkFDMTE4MDVEOTRFMDA0NzJDRTQgLyogTExWTU92ZXJyaWRl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNF
RkFDMDE4MDVEOTQxMDA0NzJDRTQgLyogTExWTU92ZXJyaWRlcy5jcHAgKi87IH07CisJCTBGQ0VG
QUMzMTgwNUU3NDAwMDQ3MkNFNCAvKiBMTFZNRXhwb3J0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNFRkFDMjE4MDVFNzQwMDA0NzJDRTQgLyog
TExWTUV4cG9ydHMuY3BwICovOyB9OworCQkwRkNFRkFDQTE4MDVFNzU1MDA0NzJDRTQgLyogSW5p
dGlhbGl6ZUxMVk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZDRUZBQzQxODA1RTc1NTAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmNwcCAqLzsg
fTsKKwkJMEZDRUZBQ0IxODA1RTc1NTAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNUE9TSVguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRUZBQzUx
ODA1RTc1NTAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNUE9TSVguY3BwICovOyB9OworCQkwRkNF
RkFDQzE4MDVFNzU1MDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk1QT1NJWC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRUZBQzYxODA1RTc1NTAwNDcy
Q0U0IC8qIEluaXRpYWxpemVMTFZNUE9TSVguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRkNFRkFDRDE4MDVFNzU1MDA0NzJDRTQgLyogTExWTUFQ
SS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNF
RkFDNzE4MDVFNzU1MDA0NzJDRTQgLyogTExWTUFQSS5jcHAgKi87IH07CisJCTBGQ0VGQUNFMTgw
NUU3NTUwMDQ3MkNFNCAvKiBMTFZNQVBJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkNFRkFDODE4MDVFNzU1MDA0NzJDRTQgLyogTExWTUFQSS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQ0VGQUNG
MTgwNUU3NTUwMDQ3MkNFNCAvKiBMTFZNQVBJRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNFRkFDOTE4MDVFNzU1MDA0NzJDRTQgLyog
TExWTUFQSUZ1bmN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGQ0VGQUQxMTgwNUU3NzkwMDQ3MkNFNCAvKiBMTFZNQVBJRnVuY3Rpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNFRkFD
OTE4MDVFNzU1MDA0NzJDRTQgLyogTExWTUFQSUZ1bmN0aW9ucy5oICovOyB9OworCQkwRkNFRkFE
MzE4MDVFRENDMDA0NzJDRTQgLyogTExWTUhlYWRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0VGQUQyMTgwNUVEQ0MwMDQ3MkNFNCAvKiBMTFZN
SGVhZGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGQ0VGQUQ0MTgwNUVEQ0MwMDQ3MkNFNCAvKiBMTFZNSGVhZGVycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRUZBRDIxODA1RURDQzAwNDcy
Q0U0IC8qIExMVk1IZWFkZXJzLmggKi87IH07CisJCTBGQ0VGQUQ3MTgwNjE3NDYwMDQ3MkNFNCAv
KiBMTFZNQW5jaG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQ0VGQUQ2MTgwNjE3NDYwMDQ3MkNFNCAvKiBMTFZNQW5jaG9yLmNwcCAqLzsgfTsK
KwkJMEZDRUZBREExODA2MjBEQTAwNDcyQ0U0IC8qIExMVk1BUEkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0VGQUM4MTgwNUU3NTUwMDQ3MkNFNCAv
KiBMTFZNQVBJLmggKi87IH07CisJCTBGQ0VGQURDMTgwNjRBMTQwMDQ3MkNFNCAvKiBjb25maWdf
bGx2bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
RUZBREIxODA2NEExNDAwNDcyQ0U0IC8qIGNvbmZpZ19sbHZtLmggKi87IH07CisJCTBGQ0VGQURG
MTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNFRkFERDE4MDczOEMwMDA0NzJDRTQgLyogRlRM
TG9jYXRpb24uY3BwICovOyB9OworCQkwRkNFRkFFMDE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9j
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
Q0VGQURFMTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRDJDOTI0MTZEMDFFRTkwMEM3ODAz
RiAvKiBTdHJ1Y3R1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkQyQzkyMzE2RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlSW5saW5l
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
RDNDODI2MTQxMTVENDAwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEM0M4MjAxNDExNUNGODAwRkQ4MUNCIC8q
IERGR0RyaXZlci5jcHAgKi87IH07CisJCTBGRDNDODI4MTQxMTVENEYwMEZEODFDQiAvKiBERkdE
cml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RDNDODIyMTQxMTVEMEUwMEZEODFDQiAvKiBERkdEcml2ZXIuaCAqLzsgfTsKKwkJMEZEODFBRDIx
NTRGQjRFRTAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODFBQ0YxNTRGQjRFQjAwOTgzRTcyIC8qIERG
R0RvbWluYXRvcnMuY3BwICovOyB9OworCQkwRkQ4MUFEMzE1NEZCNEYwMDA5ODNFNzIgLyogREZH
RG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZEODFBRDAxNTRGQjRFQjAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkQ4MkUyMTE0MTcyQ0Uz
MDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTFFMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBh
YmlsaXRpZXMuY3BwICovOyB9OworCQkwRkQ4MkUzOTE0MUFCMTREMDAxNzlDOTQgLyogQ29tcGFj
dEpJVENvZGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRDgyRTU0MTQx
REFFRUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFNwZWN1
bGF0ZWRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZEODJFNTYxNDFEQUYwODAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTUyMTQxREFFREUw
MDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi87IH07CisJCTBGRDgyRTU3MTQxREFGMTAwMDE3
OUM5NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEODJFODYx
NDFGM0ZGMTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBT
cGVjdWxhdGVkVHlwZS5jcHAgKi87IH07CisJCTBGRDhBMzEzMTdENDMyNkMwMENBMkM0MCAvKiBD
b2RlQmxvY2tTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZEOEEzMTExN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5jcHAgKi87IH07
CisJCTBGRDhBMzE0MTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDhBMzEyMTdENDMyNkMwMENB
MkM0MCAvKiBDb2RlQmxvY2tTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRkQ4QTMxOTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NSRW50
cnlKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRDhBMzE1MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JPU1JFbnRyeUpJVENvZGUuY3Bw
ICovOyB9OworCQkwRkQ4QTMxQTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NSRW50cnlKSVRD
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4
QTMxNjE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NSRW50cnlKSVRDb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEOEEzMUIxN0Q1MUYy
MjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDhBMzE3MTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRy
eS5jcHAgKi87IH07CisJCTBGRDhBMzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEzMTgx
N0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEOEEzMjUxN0Q1MUY1NzAwQ0EyQzQwIC8qIERG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDhBMzFEMTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JF
bnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAgKi87IH07CisJCTBGRDhBMzI2MTdENTFGNTcwMENB
MkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEzMUUxN0Q1MUY1NzAwQ0EyQzQwIC8q
IERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEOEEzMjcxN0Q1MUY1NzAwQ0EyQzQwIC8qIERG
R1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEzMUYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwICovOyB9OworCQkwRkQ4QTMyODE3RDUxRjU3MDBDQTJD
NDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEzMjAxN0Q1MUY1NzAwQ0EyQzQwIC8qIERG
R1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRkQ4QTMyOTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9G
VExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEzMjExN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1Rv
RlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJMEZEOEEzMkExN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4QTMyMjE3RDUx
RjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkQ4QTMyQjE3
RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkQ4QTMyMzE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi87IH07CisJCTBGRDhBMzJDMTdENTFGNTcwMENBMkM0
MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4QTMyNDE3RDUx
RjU3MDBDQTJDNDAgLyogREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGREIyQ0M5MTczREE1MjAwMDdCM0MxQiAvKiBGVExBYmJyZXZpYXRlZFR5cGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRCMkNDNzE3M0RBNTFF
MDA3QjNDMUIgLyogRlRMQWJicmV2aWF0ZWRUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGREIyQ0NBMTczREE1MjMwMDdCM0MxQiAvKiBG
VExWYWx1ZUZyb21CbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZEQjJDQzgxNzNEQTUxRTAwN0IzQzFCIC8qIEZUTFZhbHVlRnJvbUJsb2NrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEQjJD
RTcxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dvcmtsaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREIyQ0U1MTc0ODMwQTIwMDdCM0MxQiAvKiBE
RkdXb3JrbGlzdC5jcHAgKi87IH07CisJCTBGREIyQ0U4MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdX
b3JrbGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEQjJDRTYxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dvcmtsaXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEQjJDRUExNzQ4OTZDNzAwN0Iz
QzFCIC8qIENvbmN1cnJlbnRKSVRMb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkRCMkNFOTE3NDg5NkM3MDA3QjNDMUIgLyogQ29uY3VycmVudEpJ
VExvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkREQkZC
MjE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHAgKi87IH07
CisJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkREQkZC
MzE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRTIyOEVEMTQzNkFC
MjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRTIyOEVFMTQz
NkFCMkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNw
cCAqLzsgfTsKKwkJMEZFODUzNEIxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBv
aW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkU4NTM0OTE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCAqLzsg
fTsKKwkJMEZFODUzNEMxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFODUzNEEx
NzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRTk1Rjc5MThCNTY5NDcwMEI1
MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkU5NUY3NzE4QjU2OTQ3MDBCNTMxRkIgLyogRlRMRGF0YVNlY3Rp
b24uY3BwICovOyB9OworCQkwRkU5NUY3QTE4QjU2OTQ3MDBCNTMxRkIgLyogRlRMRGF0YVNlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTk1
Rjc4MThCNTY5NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRUEwQTA4MTcwNTEzREIwMEJCNzIy
QyAvKiBGVExBYmJyZXZpYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkVBMDlGRDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9u
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
RUEwQTA5MTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTA5RkUxNzA1MTNEQjAwQkI3
MjJDIC8qIEZUTENhcGFiaWxpdGllcy5jcHAgKi87IH07CisJCTBGRUEwQTBBMTcwNTEzREIwMEJC
NzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRUEwOUZGMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRp
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RkVBMEEwQjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBMEEwMDE3MDUxM0RCMDBCQjcyMkMg
LyogRlRMQ29tcGlsZS5jcHAgKi87IH07CisJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBG
VExDb21waWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVBMEEwMTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRUEwQTBEMTcwNTEzREIwMEJC
NzIyQyAvKiBGVExKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUEwQTAyMTcwNTEzREIwMEJCNzIyQyAvKiBGVExKSVRDb2RlLmNwcCAq
LzsgfTsKKwkJMEZFQTBBMEUxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEpJVENvZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTAzMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExKSVRDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEZFQTBBMEYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZH
VG9MTFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRUEwQTA0MTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvTExWTS5jcHAgKi87IH07
CisJCTBGRUEwQTEwMTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvTExWTS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTBBMDUxNzA1MTNE
QjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFQTBBMTExNzA1MTNEQjAwQkI3MjJDIC8qIEZU
TE91dHB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQTBBMDYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTE91dHB1dC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRUEwQTEyMTcwNTEzREIwMEJCNzIy
QyAvKiBGVExTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZFQTBBMDcxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTFN0YXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFQTBBMTYxNzA2QkI5MDAw
QkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUEwQTE1MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgKi87
IH07CisJCTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTBBMTcxNzA4
QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5jcHAgKi87IH07CisJCTBGRUEwQTFEMTcw
OEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTE4MTcwOEIwMDcwMEJCNzIyQyAvKiBGVExB
YnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRkVBMEExRTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkVBMEExOTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAg
Ki87IH07CisJCTBGRUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkVBMEExQTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRUEwQTIw
MTcwOEIwMDcwMEJCNzIyQyAvKiBGVExUeXBlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTFCMTcwOEIwMDcwMEJCNzIyQyAvKiBG
VExUeXBlZFBvaW50ZXIuaCAqLzsgfTsKKwkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJDIC8qIEZU
TENvbW1vblZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZFQTBBMjExNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRUEwQTI0MTcw
OTYwNjkwMEJCNzIyQyAvKiBGVExJbnRyaW5zaWNSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBMEEyMjE3MDk2MDY5MDBCQjcyMkMg
LyogRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGRUEwQTI3MTcwOTYyM0IwMEJCNzIyQyAvKiBGVExDb21t
b25WYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZFQTBBMjUxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5jcHAgKi87IH07
CisJCTBGRUEwQTI4MTcwOTYyM0IwMEJCNzIyQyAvKiBGVExJbnRyaW5zaWNSZXBvc2l0b3J5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTI2
MTcwOTYyM0IwMEJCNzIyQyAvKiBGVExJbnRyaW5zaWNSZXBvc2l0b3J5LmNwcCAqLzsgfTsKKwkJ
MEZFQTBBMkExNzA5NjI5NjAwQkI3MjJDIC8qIEZUTE91dHB1dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBMEEyOTE3MDk2Mjk2MDBCQjcyMkMg
LyogRlRMT3V0cHV0LmNwcCAqLzsgfTsKKwkJMEZFQTBBMkMxNzBCNjYxOTAwQkI3MjJDIC8qIEZU
TEZvcm1hdHRlZFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkVBMEEyQjE3MEI2NjE5MDBCQjcyMkMgLyogRlRMRm9ybWF0dGVkVmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkVBMEEz
MTE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBMEEyRDE3MEQ0MEJGMDBCQjcyMkMgLyog
REZHQ29tbW9uRGF0YS5jcHAgKi87IH07CisJCTBGRUEwQTMyMTcwRDQwQkYwMEJCNzIyQyAvKiBE
RkdDb21tb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkVBMEEyRTE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRUEwQTMzMTcwRDQw
QkYwMEJCNzIyQyAvKiBERkdKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTJGMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdKSVRDb2Rl
LmNwcCAqLzsgfTsKKwkJMEZFQTBBMzQxNzBENDBCRjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTMwMTcw
RDQwQkYwMEJCNzIyQyAvKiBERkdKSVRDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFQjNFQ0YxNjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3Jv
QXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRUIzRUNFMTYyMzdGNjcwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAgKi87IH07
CisJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZD
OUE3MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCAqLzsg
fTsKKwkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZD
OUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGMEYxOTkxNkI3
MjlGNjAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRCNTFDMTZCNjI3NzIwMDNGNjk2QiAvKiBE
RkdMb25nTGl2ZWRTdGF0ZS5jcHAgKi87IH07CisJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAv
KiBERkdMb25nTGl2ZWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZCNEI1MUQxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0xvbmdMaXZlZFN0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZG
MEYxOUMxNkI3MkEwMzAwNURGOTVCIC8qIERGR05vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1MUUxNkI2Mjc3MjAwM0Y2OTZCIC8qIERG
R05vZGUuY3BwICovOyB9OworCQkwRkYwRjE5RDE2QjcyQTA4MDA1REY5NUIgLyogREZHQ29tbW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRC
NTFBMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdDb21tb24uY3BwICovOyB9OworCQkwRkYwRjE5RTE2
QjcyQTBCMDA1REY5NUIgLyogREZHRWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxQjE2QjYyNzcyMDAzRjY5NkIgLyogREZHRWRnZS5j
cHAgKi87IH07CisJCTBGRjBGMTlGMTZCNzJBMTcwMDVERjk1QiAvKiBGdW5jdGlvbkV4ZWN1dGFi
bGVEdW1wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjRCNTIxMTZCNjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCAq
LzsgfTsKKwkJMEZGMEYxQTAxNkI3MkExQTAwNURGOTVCIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUR1
bXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRC
NTIyMTZCNjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNDI3MzExNThFQkQ1
NDAwNENCOUZGIC8qIERpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3MkYxNThFQkQ0NDAwNENCOUZGIC8qIERpc2Fzc2VtYmxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
RjQyNzMyMTU4RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3MzAxNThFQkQ0NDAw
NENCOUZGIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgKi87IH07CisJCTBGRjQyNzQwMTU4RUJF
OEIwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0MjczNDE1OEVCRDk0MDA0Q0I5RkYgLyogdWRpczg2X2Rl
Y29kZS5jICovOyB9OworCQkwRkY0Mjc0MTE1OEVCRThEMDA0Q0I5RkYgLyogdWRpczg2X2RlY29k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3
MzUxNThFQkQ5NDAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuaCAqLzsgfTsKKwkJMEZGNDI3NDIx
NThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9leHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzM2MTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlz
ODZfZXh0ZXJuLmggKi87IH07CisJCTBGRjQyNzQzMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZf
aW5wdXQuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RjQyNzM3MTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODZfaW5wdXQuYyAqLzsgfTsKKwkJMEZGNDI3
NDQxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9pbnB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3MzgxNThFQkQ5NDAwNENCOUZGIC8qIHVk
aXM4Nl9pbnB1dC5oICovOyB9OworCQkwRkY0Mjc0NTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2
X3N5bi1hdHQuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRjQyNzM5MTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODZfc3luLWF0dC5jICovOyB9OworCQkw
RkY0Mjc0NjE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1pbnRlbC5jIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3M0ExNThFQkQ5NDAwNENC
OUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwuYyAqLzsgfTsKKwkJMEZGNDI3NDcxNThFQkU5MTAwNENC
OUZGIC8qIHVkaXM4Nl9zeW4uYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRjQyNzNCMTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmMgKi87IH07
CisJCTBGRjQyNzQ4MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0MjczQzE1OEVCRDk0MDA0Q0I5
RkYgLyogdWRpczg2X3N5bi5oICovOyB9OworCQkwRkY0Mjc0OTE1OEVCRTkxMDA0Q0I5RkYgLyog
dWRpczg2X3R5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkY0MjczRDE1OEVCRDk0MDA0Q0I5RkYgLyogdWRpczg2X3R5cGVzLmggKi87IH07CisJ
CTBGRjQyNzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzNFMTU4RUJEOTQwMDRDQjlGRiAvKiB1
ZGlzODYuYyAqLzsgfTsKKwkJMEZGNDI3NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3M0YxNThF
QkQ5NDAwNENCOUZGIC8qIHVkaXM4Ni5oICovOyB9OworCQkwRkY0Mjc0RDE1OEVCRkU2MDA0Q0I5
RkYgLyogdWRpczg2X2l0YWJfaG9sZGVyLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc0QzE1OEVCRkUxMDA0Q0I5RkYgLyogdWRpczg2X2l0YWJf
aG9sZGVyLmMgKi87IH07CisJCTBGRjQyNzU3MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQy
NzU2MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVyLmNwcCAqLzsgfTsKKwkJMEZGNDI3NjQx
NTkxQTFDQzAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc2MTE1OTFBMUM5MDA0Q0I5RkYgLyog
REZHRGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKKwkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8q
IERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRjYwQUMy
MTY3NDBGODMwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY2MEFDMDE2NzQwRjgxMDAwMjk3NzkgLyog
UmVkdWNlV2hpdGVzcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjYw
QUJGMTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmNwcCAqLzsgfTsKKwkJMEZG
NzE2OEMxNUEzQjIzNTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3MTY4QTE1QTNCMjMxMDA4RjVEQUEg
LyogUHJvcGVydHlPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRkY3MjlBNTE2NkFEMzUxMDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5
OTMxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlBRDE2NkFEMzVDMDAwRjVC
QTMgLyogUHJvZmlsZXJCeXRlY29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5MjE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJCeXRl
Y29kZS5jcHAgKi87IH07CisJCTBGRjcyOUFFMTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlckJ5
dGVjb2Rlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkY3Mjk5NDE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZXMuY3BwICovOyB9
OworCQkwRkY3MjlBRjE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5NjE2
NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbi5jcHAgKi87IH07CisJCTBGRjcy
OUIwMTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5ODE2NkFEMzQ3
MDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbktpbmQuY3BwICovOyB9OworCQkwRkY3MjlC
MTE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlBMTY2QUQzNDcw
MDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuY3BwICovOyB9OworCQkwRkY3MjlC
MjE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5QzE2NkFEMzQ3MDAwRjVCQTMg
LyogUHJvZmlsZXJEYXRhYmFzZS5jcHAgKi87IH07CisJCTBGRjcyOUIzMTY2QUQzNUMwMDBGNUJB
MyAvKiBQcm9maWxlck9yaWdpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkY3Mjk5RjE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW4u
Y3BwICovOyB9OworCQkwRkY3MjlCNDE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW5T
dGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkY3MjlBMTE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW5TdGFjay5jcHAgKi87IH07
CisJCTBGRjcyOUI5MTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2Rlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OTUxNjZBRDM0
NzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkExNjZBRDM2MDAwMEY1QkEzIC8qIFBy
b2ZpbGVyQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRjcyOTk3MTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZG
NzI5QkIxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5OTE2NkFEMzQ3
MDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCQzE2NkFEMzYwMDAwRjVCQTMg
LyogUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5QjE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJD
b21waWxlZEJ5dGVjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZGNzI5QkQxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyRGF0YWJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlE
MTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckRhdGFiYXNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkUxNjZBRDM2MDAwMEY1QkEz
IC8qIFByb2ZpbGVyRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OUUxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVy
RXhlY3V0aW9uQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGRjcyOUJGMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5QTAx
NjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QzAxNjZBRDM2MDAwMEY1QkEzIC8q
IFByb2ZpbGVyT3JpZ2luU3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRjcyOUEyMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpblN0
YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEZGOTIyRDQxNEY0NkI0MTAwNDFBMjRFIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEZGQTU0
OTcxNkI4ODM1MDAwQjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUyQTNBMjIxNjUxQzY5NzAwQTgwQUZFIC8qIEE2
NERPcGNvZGUuY3BwICovOyB9OworCQkwRkZBNTQ5ODE2Qjg4MzUzMDBCM0E5ODIgLyogQTY0RE9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUy
QTNBMjMxNjUxQzY5NzAwQTgwQUZFIC8qIEE2NERPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkZCOTIxODE2RDAyRUIyMDA1NUE1REIg
LyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGQjkyMUExNkQw
MkVDNTAwNTVBNURCIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ1NjUyMjE2QUI3ODBBMDAxOTc2NTMgLyog
REZHQmFzaWNCbG9ja0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZHTm9kZUFsbG9j
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZC
NEI1MUYxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR05vZGVBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkZCOTIxQzE2RDAyRjExMDA1
NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8qIERG
R09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRkZCOTIxRDE2RDAyRjMwMDA1NUE1REIgLyogREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMUUzQTUwMTUzN0MyQ0IwMDBGOTQ1NiAvKiBERkdTbG93UGF0aEdlbmVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRkI5MjIw
MTZEMDMzQjcwMDU1QTVEQiAvKiBOb2RlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyog
Tm9kZUNvbnN0cnVjdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGRkM5OUQxMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQwMTg0
RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkZDOTlENDE4NEVFMzE4MDA5QzEwQUIgLyogQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwICovOyB9OworCQkwRkZDOTlENTE4NEVFMzE4MDA5
QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIg
LyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGRkM5NTcxNEVGOTBBMDAwQzcyNTMyIC8q
IERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgKi87IH07
CisJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEMxNEVGOTA5NTAwQzcy
NTMyIC8qIERGR0NGQVBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRE
MTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi87IH07CisJCTBGRkZDOTVBMTRF
RjkwQTkwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEUxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBo
YXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEZGRkM5NUIxNEVGOTBBRDAwQzcyNTMyIC8qIERGR1BoYXNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRGMTRFRjkwOTUwMEM3MjUzMiAv
KiBERkdQaGFzZS5jcHAgKi87IH07CisJCTBGRkZDOTVDMTRFRjkwQUYwMEM3MjUzMiAvKiBERkdQ
aGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZG
RkM5NTAxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1BoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8q
IERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgKi87IH07CisJCTBGRkZDOTVFMTRFRjkwQjcw
MEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMy
IC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGRkM5NUYxNEVGOTBCQjAwQzcyNTMyIC8q
IERGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk1MzE0RUY5MDk1MDBDNzI1MzIgLyog
REZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcCAqLzsgfTsKKwkJMEZGRkM5NjAx
NEVGOTBCRDAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NTQxNEVG
OTA5NTAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0MDU2NkM0MTA3
RUMyNTUwMDVEQkM4RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA4OTRENTBGQUZCQTJEMDAwMDE4NjUgLyog
SlNBUElWYWx1ZVdyYXBwZXIuY3BwICovOyB9OworCQkxNDA1NjZENjEwN0VDMjcxMDA1REJDOEQg
LyogSlNGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNjkyQTg1RTAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5jcHAgKi87IH07
CisJCTE0MEI3RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBKU0FjdGl2YXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREQTgxOEYwRDk5RkQyMDAw
QjBBNEZCIC8qIEpTQWN0aXZhdGlvbi5jcHAgKi87IH07CisJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBD
RDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDBEMTdENjBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0MTIx
MTMxMEE0ODc5NEQwMDQ4MDI1NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3
MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OworCQkxNDEyMTEzNDBB
NDg3OTU4MDA0ODAyNTUgLyogbWluaWRvbS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQxMjExMDIwQTQ4NzgwOTAwNDgwMjU1IC8qIG1pbmlkb20uYyAq
LzsgfTsKKwkJMTQxNDQ4Q0IxM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJsb2NrU2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE0NDhDQTEzQTE3
NkVDMDBGNUJBMUEgLyogTWFya2VkQmxvY2tTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDE0NDhDRDEzQTE3ODM3MDBGNUJBMUEgLyogVGlu
eUJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDE0NDhDQzEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQxNTAxMzMxNTRC
QjEzRjAwNUQ4Qzk4IC8qIFdlYWtTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE1MDEzMjE1NEJCMTNGMDA1RDhDOTggLyogV2Vha1Nl
dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkxNDIwQkU3QjEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyMEJFN0ExMEFBNkREQjAwRjQ1
NUQyIC8qIFdlYWtSYW5kb20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkxNDIxMzU5QjBBNjc3RjRGMDBBODE5NUUgLyogSlNCYXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjEzNTlBMEE2NzdG
NEYwMEE4MTk1RSAvKiBKU0Jhc2UuY3BwICovOyB9OworCQkxNDI4MDgyMzEwN0VDMDJDMDAxM0U3
QjIgLyogRGVidWdnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjY5MkE4NTgwMjU1NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2VyLmNwcCAqLzsgfTsK
KwkJMTQyODA4MkQxMDdFQzA1NzAwMTNFN0IyIC8qIENhbGxEYXRhLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTYyREZFMEUyODI2MjMwMDA0RjMw
RCAvKiBDYWxsRGF0YS5jcHAgKi87IH07CisJCTE0MjgwODJFMTA3RUMwNTcwMDEzRTdCMiAvKiBD
b25zdHJ1Y3REYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQTYyREZGMEUyODI2MzEwMDA0RjMwRCAvKiBDb25zdHJ1Y3REYXRhLmNwcCAqLzsg
fTsKKwkJMTQyODA4M0ExMDdFQzA3NTAwMTNFN0IyIC8qIEpTU3RhY2suY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyOUQ4NUIwRUQyMThFOTAwQjg5
NjE5IC8qIEpTU3RhY2suY3BwICovOyB9OworCQkxNDI4MDg0MTEwN0VDMDkzMDAxM0U3QjIgLyog
UmVnRXhwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY2OTJBODdEMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuY3BwICovOyB9OworCQkxNDI4MDg0
MjEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMjAyQkQwRTE3MDZBNzAwMkM3RTgy
IC8qIFJlZ0V4cENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJMTQyODA4NDMxMDdFQzA5MzAwMTNF
N0IyIC8qIFJlZ0V4cE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNjkyQTg3QjAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwT2JqZWN0LmNw
cCAqLzsgfTsKKwkJMTQyODA4NDQxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QyMDJC
RjBFMTcwNkE3MDAyQzdFODIgLyogUmVnRXhwUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJMTQyODA4
NTAxMDdFQzBENzAwMTNFN0IyIC8qIE9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NzcwMjU1NTk3RDAxRkY2MEY3IC8qIE9w
ZXJhdGlvbnMuY3BwICovOyB9OworCQkxNDI4MDg1NTEwN0VDMEU3MDAxM0U3QjIgLyogR2V0dGVy
U2V0dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMDJFOUI4MEUxODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICovOyB9OworCQkx
NDI4MDg2MzEwN0VDMTFBMDAxM0U3QjIgLyogQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzk1MjMyMEUxNUVCNTYw
MEE4OThBQiAvKiBCb29sZWFuQ29uc3RydWN0b3IuY3BwICovOyB9OworCQkxNDI4MDg2NDEwN0VD
MTFBMDAxM0U3QjIgLyogQm9vbGVhbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1MDAyNTU1OTdEMDFGRjYwRjcgLyogQm9vbGVh
bk9iamVjdC5jcHAgKi87IH07CisJCTE0MjgwODY1MTA3RUMxMUEwMDEzRTdCMiAvKiBCb29sZWFu
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDNzk1MjM0MEUxNUVCNTYwMEE4OThBQiAvKiBCb29sZWFuUHJvdG90eXBlLmNwcCAqLzsg
fTsKKwkJMTQyODA4NzAxMDdFQzEzNDAwMTNFN0IyIC8qIEpTV3JhcHBlck9iamVjdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUM3QTE3MTBBOEVB
QUNCMDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0LmNwcCAqLzsgfTsKKwkJMTQyODA4NzUxMDdF
QzEzRTAwMTNFN0IyIC8qIEpTTG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUVBNEM5OTA5MkFGOUUyMDA5M0Q4MDAgLyogSlNMb2NrLmNwcCAq
LzsgfTsKKwkJMTQyOUQ3N0MwRUQyMEQ3MzAwQjg5NjE5IC8qIEludGVycHJldGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDc3QjBFRDIwRDcz
MDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkxNDI5RDdENDBFRDIxMjgyMDBCODk2MTkgLyogSW50ZXJwcmV0
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQy
OUQ3RDMwRUQyMTI4MjAwQjg5NjE5IC8qIEludGVycHJldGVyLmNwcCAqLzsgfTsKKwkJMTQyOUQ4
NzgwRUQyMUFDRDAwQjg5NjE5IC8qIEV4Y2VwdGlvbkhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyOUQ4NzcwRUQyMUFDRDAwQjg5NjE5
IC8qIEV4Y2VwdGlvbkhlbHBlcnMuY3BwICovOyB9OworCQkxNDI5RDg4NTBFRDIxQzNEMDBCODk2
MTkgLyogU2FtcGxpbmdUb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0MjlEODgzMEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuY3Bw
ICovOyB9OworCQkxNDI5RDg4NjBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDg4NDBFRDIx
QzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQyOUQ4REQwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxG
cmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDI5RDhEQjBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmNwcCAqLzsgfTsKKwkJMTQyOUQ4
REUwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyOUQ4REMwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxG
cmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTE0MjlEOTJGMEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyOUQ5MkQwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJ
VC5jcHAgKi87IH07CisJCTE0MjlEOTMwMEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlEOTJFMEVEMjJENzAw
MEI4OTYxOSAvKiBKSVQuaCAqLzsgfTsKKwkJMTQyRDM5MzkxMDNFNDU2MDAwN0RDQjUyIC8qIE51
bWVyaWNTdHJpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDJEMzkzODEwM0U0NTYwMDA3RENCNTIgLyogTnVtZXJpY1N0cmluZ3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDJENkYwODEzNTM5
QTI4MDBCMDJFODYgLyogTWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyRDZGMDYxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJs
b2NrLmNwcCAqLzsgfTsKKwkJMTQyRDZGMDkxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2Nr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDJENkYw
NzEzNTM5QTI4MDBCMDJFODYgLyogTWFya2VkQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDJENkYxMTEzNTM5QTQxMDBCMDJFODYgLyog
TWFya1N0YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0MkQ2RjBFMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovOyB9OworCQkx
NDJENkYxMjEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDJENkYwRjEzNTM5QTQxMDBCMDJFODYgLyog
TWFya1N0YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMTQyRTMxMzQxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyRTMxMkIxMzRGRjBBNjAwQUZBREI1
IC8qIEhhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTE0MkUzMTM1MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyRTMxMkMxMzRGRjBBNjAw
QUZBREI1IC8qIEhhbmRsZVNldC5jcHAgKi87IH07CisJCTE0MkUzMTM2MTM0RkYwQTYwMEFGQURC
NSAvKiBIYW5kbGVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0MkUzMTJEMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDJFMzEzNzEzNEZGMEE2
MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQyRTMxMkUxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVN0YWNr
LmNwcCAqLzsgfTsKKwkJMTQyRTMxMzgxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVN0YWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDJFMzEyRjEz
NEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDJFMzEzOTEzNEZGMEE2MDBBRkFEQjUgLyogTG9j
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkUz
MTMwMTM0RkYwQTYwMEFGQURCNSAvKiBMb2NhbC5oICovOyB9OworCQkxNDJFMzEzQTEzNEZGMEE2
MDBBRkFEQjUgLyogTG9jYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQyRTMxMzExMzRGRjBBNjAwQUZBREI1IC8qIExvY2FsU2NvcGUuaCAq
LzsgfTsKKwkJMTQyRTMxM0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyRTMxMzIxMzRGRjBBNjAwQUZB
REI1IC8qIFN0cm9uZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTE0MkUzMTNDMTM0RkYwQTYwMEFGQURCNSAvKiBXZWFrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDJFMzEzMzEzNEZGMEE2MDBBRkFE
QjUgLyogV2Vhay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTE0NDAwNTdGMEE1MzM1NjQwMDA1RjA2MSAvKiBKU05vZGUuYyBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDBGNjQyMEE0RjhCNkEwMDA1RjA2
MSAvKiBKU05vZGUuYyAqLzsgfTsKKwkJMTQ0MDA1Q0IwQTUzMzhEMTAwMDVGMDYxIC8qIEpTTm9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY2
NDEwQTRGOEI2QTAwMDVGMDYxIC8qIEpTTm9kZS5oICovOyB9OworCQkxNDQwMDVDQzBBNTMzOEY4
MDAwNUYwNjEgLyogTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ0MDA1MUYwQTUzMUQzQjAwMDVGMDYxIC8qIE5vZGUuaCAqLzsgfTsKKwkJMTQ0
MDA2M0YwQTUzNTk4QTAwMDVGMDYxIC8qIE5vZGUuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDAwNTIwMEE1MzFEM0IwMDA1RjA2MSAvKiBOb2RlLmMg
Ki87IH07CisJCTE0NDAwNzRBMEE1MzZDQzIwMDA1RjA2MSAvKiBOb2RlTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MDA3NDgwQTUzNkNDMjAw
MDVGMDYxIC8qIE5vZGVMaXN0LmggKi87IH07CisJCTE0NDAwNzRCMEE1MzZDQzIwMDA1RjA2MSAv
KiBOb2RlTGlzdC5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQ0MDA3NDkwQTUzNkNDMjAwMDVGMDYxIC8qIE5vZGVMaXN0LmMgKi87IH07CisJCTE0NDAw
NzU3MEE1MzcwRDIwMDA1RjA2MSAvKiBKU05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQwMDc1NTBBNTM3MEQyMDAwNUYwNjEgLyogSlNO
b2RlTGlzdC5oICovOyB9OworCQkxNDQwMDc1ODBBNTM3MEQyMDAwNUYwNjEgLyogSlNOb2RlTGlz
dC5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MDA3
NTYwQTUzNzBEMjAwMDVGMDYxIC8qIEpTTm9kZUxpc3QuYyAqLzsgfTsKKwkJMTQ0MEY2MTAwQTRG
ODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0QkQ1QTJEMEEzRTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi87
IH07CisJCTE0NDBGODkyMEE1MDhCMTAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4OTAw
QTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5jcHAgKi87IH07CisJCTE0NDBG
OEFGMEE1MDhEMjAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4QUQwQTUwOEQyMDAw
MDVGMDYxIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTE0NDBGQ0U0MEE1
MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDBGQ0UyMEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNz
UmVmLmNwcCAqLzsgfTsKKwkJMTQ0MjU2NjExNUVERTk4RDAwNjZBNDlCIC8qIEpTV2l0aFNjb3Bl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDI1
NjVGMTVFREU5OEQwMDY2QTQ5QiAvKiBKU1dpdGhTY29wZS5jcHAgKi87IH07CisJCTE0NDI1NjYy
MTVFREU5OEQwMDY2QTQ5QiAvKiBKU1dpdGhTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MjU2NjAxNUVERTk4RDAwNjZBNDlCIC8qIEpTV2l0
aFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMTQ0NjlEREUxMDdFQzdFNzAwNjUwNDQ2IC8qIExvb2t1cC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg2ODAyNTU1OTdEMDFGRjYwRjcg
LyogTG9va3VwLmNwcCAqLzsgfTsKKwkJMTQ0NjlEREYxMDdFQzdFNzAwNjUwNDQ2IC8qIE1hdGhP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjY5MkE4NkEwMjU1NTk3RDAxRkY2MEY3IC8qIE1hdGhPYmplY3QuY3BwICovOyB9OworCQkxNDQ2
OURFMDEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwODBFMTgzOURC
MDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTE0NDY5REUx
MTA3RUM3RTcwMDY1MDQ0NiAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwQTBFMTgzOURCMDAwRjky
OTcgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwICovOyB9OworCQkxNDQ2OURFMjEwN0VDN0U3
MDA2NTA0NDYgLyogTnVtYmVyQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwQzIwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJl
ckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJMTQ0NjlERTMxMDdFQzdFNzAwNjUwNDQ2IC8qIE51
bWJlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNjkyQTg3MDAyNTU1OTdEMDFGRjYwRjcgLyogTnVtYmVyT2JqZWN0LmNwcCAqLzsgfTsK
KwkJMTQ0NjlERTQxMDdFQzdFNzAwNjUwNDQ2IC8qIE51bWJlclByb3RvdHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDNDBFMTZENEU5
MDBBMDZFOTIgLyogTnVtYmVyUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJMTQ0NjlERTUxMDdFQzdF
NzAwNjUwNDQ2IC8qIE9iamVjdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY4MEM2MEUxNkQ0RTkwMEEwNkU5MiAvKiBPYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTE0NDY5REU2MTA3RUM3RTcwMDY1MDQ0NiAvKiBP
YmplY3RQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMyNjgwQzgwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdFByb3RvdHlwZS5jcHAg
Ki87IH07CisJCTE0NDY5REU3MTA3RUM3RTcwMDY1MDQ0NiAvKiBQcm9wZXJ0eU5hbWVBcnJheS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQwMEMw
RjBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwICovOyB9OworCQkxNDQ2
OURFODEwN0VDN0U3MDA2NTA0NDYgLyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjIxRTZCMDg5RTg1OTcwMDc2MEYzNSAv
KiBQcm9wZXJ0eVNsb3QuY3BwICovOyB9OworCQkxNDQ2OURFQjEwN0VDN0U3MDA2NTA0NDYgLyog
U3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9y
LmNwcCAqLzsgfTsKKwkJMTQ0NjlERUMxMDdFQzdFNzAwNjUwNDQ2IC8qIFN0cmluZ09iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzND
MjBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nT2JqZWN0LmNwcCAqLzsgfTsKKwkJMTQ0NjlERUQx
MDdFQzdFNzAwNjUwNDQ2IC8qIFN0cmluZ1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDNTBFMTZFRTMzMDBCMzQ0NjAgLyog
U3RyaW5nUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJMTQ0ODM2RTcxMzJEQTdCRTAwNUJFNzg1IC8q
IENvbnNlcnZhdGl2ZVJvb3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDlEQUFGMjEyRUI1NTlEMDA4M0IxMkIgLyogQ29uc2VydmF0aXZlUm9vdHMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDU3
MjI4NjE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ1NzIyODUxNDM3RTE0MDAwNUZERTI2IC8q
IFN0cm9uZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkxNDZBQUIzODBCNjZBOTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDZBQUIzNzBC
NjZBOTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5jcHAgKi87IH07CisJCTE0NkIxNkQ4MTJF
QjVCNTkwMDFCRUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDZCMTREQjEyRUI1QjEyMDAxQkVDMUIgLyog
Q29uc2VydmF0aXZlUm9vdHMuY3BwICovOyB9OworCQkxNDZGRTUxMjExQTcxMDQzMDA4N0FFNjYg
LyogSklUQ2FsbDMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0NkZFNTExMTFBNzEwNDMwMDg3QUU2NiAvKiBKSVRDYWxsMzJfNjQuY3BwICov
OyB9OworCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NDRBMzE2QUEyQzcw
MDBBNjVBRjAgLyogUHJvdG90eXBlTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ3NEMzM0MxNkFBMkQ5QjAwNjJGMDFEIC8qIFByb3RvdHlw
ZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NEQ4NDRBMjE2QUEyQzcwMDBBNjVBRjAgLyogUHJvdG90eXBlTWFwLmNwcCAqLzsgfTsKKwkJMTQ3
ODI5N0IxMzc5RThBODAwQTdDMkEzIC8qIEhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDZGQTVBODEzNzhGNkIwMDAzNjI3QTMgLyog
SGFuZGxlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRp
bWl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
N0I4M0FBMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0N0I4NDYz
MEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0N0I4NDYyMEU2REU2QjEwMDQ3NzVBNCAvKiBQ
dXRQcm9wZXJ0eVNsb3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMTBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi87IH07CisJCTE0N0YzOUJFMTA3RUMzNzYwMDQyN0E0
OCAvKiBBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMyNTdERTUwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi87IH07
CisJCTE0N0YzOUJGMTA3RUMzNzYwMDQyN0E0OCAvKiBBcnJheUNvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzk1MjA2MEUxNUU4
QTgwMEE4OThBQiAvKiBBcnJheUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJMTQ3RjM5QzAxMDdF
QzM3NjAwNDI3QTQ4IC8qIEFycmF5UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODREMDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJh
eVByb3RvdHlwZS5jcHAgKi87IH07CisJCTE0N0YzOUMxMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21t
b25JZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuY3Bw
ICovOyB9OworCQkxNDdGMzlDMjEwN0VDMzc2MDA0MjdBNDggLyogQ29tcGxldGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDkyMjBFRDFF
MDlDMDBGMUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi87IH07CisJCTE0N0YzOUMzMTA3RUMzNzYw
MDQyN0E0OCAvKiBEYXRlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMjAzNDUwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVDb25z
dHJ1Y3Rvci5jcHAgKi87IH07CisJCTE0N0YzOUM0MTA3RUMzNzYwMDQyN0E0OCAvKiBEYXRlQ29u
dmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEMjEyMDIyODBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uY3BwICovOyB9Owor
CQkxNDdGMzlDNTEwN0VDMzc2MDA0MjdBNDggLyogRGF0ZUluc3RhbmNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTE2NjAwMEUxOTk3QjEwMDgw
NjZERCAvKiBEYXRlSW5zdGFuY2UuY3BwICovOyB9OworCQkxNDdGMzlDNjEwN0VDMzc2MDA0MjdB
NDggLyogRGF0ZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0QyMDM0NzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5j
cHAgKi87IH07CisJCTE0N0YzOUM3MTA3RUMzNzYwMDQyN0E0OCAvKiBFcnJvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMzN0JFQTBFMUIwMENC
MDA3NjkxOEEgLyogRXJyb3IuY3BwICovOyB9OworCQkxNDdGMzlDODEwN0VDMzc2MDA0MjdBNDgg
LyogRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzAyRTkwNDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAgKi87IH07CisJCTE0N0YzOUM5MTA3RUMzNzYwMDQyN0E0OCAvKiBFcnJvckluc3RhbmNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJF
OThBMEUxODNFMzgwMDBGOTI5NyAvKiBFcnJvckluc3RhbmNlLmNwcCAqLzsgfTsKKwkJMTQ3RjM5
Q0ExMDdFQzM3NjAwNDI3QTQ4IC8qIEVycm9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJFOTA2MEUxODM5REIwMDBGOTI5NyAv
KiBFcnJvclByb3RvdHlwZS5jcHAgKi87IH07CisJCTE0N0YzOUNCMTA3RUMzNzYwMDQyN0E0OCAv
KiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMjY4MEMwMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCAqLzsgfTsKKwkJMTQ3RjM5Q0MxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0aW9u
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY2OTJBODVDMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87
IH07CisJCTE0N0YzOUNFMTA3RUMzNzYwMDQyN0E0OCAvKiBJZGVudGlmaWVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0EzNDlEMDM4QUU4MEYw
MDg2MzVDRSAvKiBJZGVudGlmaWVyLmNwcCAqLzsgfTsKKwkJMTQ3RjM5Q0YxMDdFQzM3NjAwNDI3
QTQ4IC8qIEludGVybmFsRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM5QkI5NUIwRTE5NjgwNjAwREY4ODU1IC8qIEludGVybmFsRnVu
Y3Rpb24uY3BwICovOyB9OworCQkxNDdGMzlEMDEwN0VDMzc2MDA0MjdBNDggLyogSlNBcnJheS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FERkNF
NjBDQ0JEN0FDMDBEMzBCMDggLyogSlNBcnJheS5jcHAgKi87IH07CisJCTE0N0YzOUQxMTA3RUMz
NzYwMDQyN0E0OCAvKiBKU0NlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM3RjhGQkEwRTE5RDFFRjAwODYzMkMwIC8qIEpTQ2VsbC5jcHAgKi87
IH07CisJCTE0N0YzOUQyMTA3RUMzNzYwMDQyN0E0OCAvKiBKU0dsb2JhbE9iamVjdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERFMEQ2ODBEMDI0
MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3QuY3BwICovOyB9OworCQkxNDdGMzlENDEwN0VD
Mzc2MDA0MjdBNDggLyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyMkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNw
cCAqLzsgfTsKKwkJMTQ3RjM5RDUxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTU3RyaW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJFOUI2MEUxODQy
RkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi87IH07CisJCTE0N0YzOUQ2MTA3RUMzNzYwMDQy
N0E0OCAvKiBKU0NKU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY2OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU0NKU1ZhbHVlLmNwcCAq
LzsgfTsKKwkJMTQ3RjM5RDcxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTVmFyaWFibGVPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMkEzOUEw
RTE2RTE0ODAwQUYyMUM4IC8qIEpTVmFyaWFibGVPYmplY3QuY3BwICovOyB9OworCQkxNDgxNkUx
QjE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTZFMTkxNTRDQzU2QzAwQjgwNTRDIC8q
IEJsb2NrQWxsb2NhdG9yLmNwcCAqLzsgfTsKKwkJMTQ4MTZFMUMxNTRDQzU2QzAwQjgwNTRDIC8q
IEJsb2NrQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDgxNkUxQTE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDgyQjc0RTBB
NDMwMzI4MDA1MTdDRkMgLyogSlNTdHJpbmdSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MkI3NEMwQTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3Ry
aW5nUmVmLmNwcCAqLzsgfTsKKwkJMTQ4MkI3RTQwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0
UmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
ODJCN0UyMEE0MzA3NjAwMDUxN0NGQyAvKiBKU09iamVjdFJlZi5jcHAgKi87IH07CisJCTE0ODc0
QUUzMTVFQkRFNEEwMDJFMzU4NyAvKiBKU05hbWVTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDg3NEFERjE1RUJERTRBMDAyRTM1ODcgLyog
SlNOYW1lU2NvcGUuY3BwICovOyB9OworCQkxNDg3NEFFNDE1RUJERTRBMDAyRTM1ODcgLyogSlNO
YW1lU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0ODc0QUUwMTVFQkRFNEEwMDJFMzU4NyAvKiBKU05hbWVTY29wZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0ODc0QUU1MTVFQkRFNEEwMDJF
MzU4NyAvKiBKU1Njb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0ODc0QUUxMTVFQkRFNEEwMDJFMzU4NyAvKiBKU1Njb3BlLmNwcCAqLzsgfTsK
KwkJMTQ4NzRBRTYxNUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODc0QUUyMTVFQkRFNEEwMDJFMzU4NyAv
KiBKU1Njb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMTQ4Q0QxRDgxMDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4dFJlZlByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OENEMUQ3MTA4
Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ4RjIxQUExMDdFQzUzQTAwNDJFQzJD
IC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk2OUEwNzIwMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVy
YXRvci5jcHAgKi87IH07CisJCTE0OEYyMUIwMTA3RUM1NDEwMDQyRUMyQyAvKiBMZXhlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg2NTAy
NTU1OTdEMDFGRjYwRjcgLyogTGV4ZXIuY3BwICovOyB9OworCQkxNDhGMjFCNzEwN0VDNTQ3MDA0
MkVDMkMgLyogTm9kZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjY5MkE4NkQwMjU1NTk3RDAxRkY2MEY3IC8qIE5vZGVzLmNwcCAqLzsgfTsKKwkJ
MTQ4RjIxQkMxMDdFQzU0RDAwNDJFQzJDIC8qIFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YwQjNBOTA5QkI0REMwMDA2OEZDRTMgLyog
UGFyc2VyLmNwcCAqLzsgfTsKKwkJMTQ5NTU5RUUwRERDRERGNzAwNjQ4MDg3IC8qIERlYnVnZ2Vy
Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0OTU1OUVEMEREQ0RERjcwMDY0ODA4NyAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5jcHAgKi87
IH07CisJCTE0QTE1NjMyMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBMTU2MzAxMDk2
NjM2NTAwNkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTRBMjNENzUwRjRFMUFCQjAwMjNDREFEIC8q
IEpJVFN0dWJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0QTIzRDZDMEY0RTE5Q0UwMDIzQ0RBRCAvKiBKSVRTdHVicy5jcHAgKi87IH07CisJCTE0
QUJERjYwMEE0MzdGRUYwMEVDQ0EwMSAvKiBKU0NhbGxiYWNrT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QUJERjVFMEE0MzdGRUYwMEVD
Q0EwMSAvKiBKU0NhbGxiYWNrT2JqZWN0LmNwcCAqLzsgfTsKKwkJMTRCNzIzQjIxMkQ3REE0NjAw
M0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEI3MjMzRjEyRDdEMERBMDAzQkQ1RUQgLyogTWFjaGlu
ZVN0YWNrTWFya2VyLmNwcCAqLzsgfTsKKwkJMTRCNzIzQjgxMkQ3REE2RjAwM0JENUVEIC8qIE1h
Y2hpbmVTdGFja01hcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRCNzIzNDAxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0QjhF
QzcyMEE1NjUyMDkwMDYyQkU1NCAvKiBDb3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTYwQTRDRjA0QjNCM0U3
MDA4QUU5NTIgLyogQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OworCQkxNEJBNzhGMTEz
QUFCODhGMDA1QjdDMkMgLyogU2xvdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkE3OEYwMTNBQUI4OEYwMDVCN0MyQyAvKiBTbG90Vmlz
aXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTE0QkE3QTk3MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkE3QTk1MTNBQURGRjgwMDVCN0MyQyAvKiBI
ZWFwLmNwcCAqLzsgfTsKKwkJMTRCQTdBOTgxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkE3QTk2MTNBQURG
RjgwMDVCN0MyQyAvKiBIZWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMTRCRDU5QzUwQTNFOEY5RjAwQkFGNTlDIC8qIEphdmFTY3JpcHRDb3Jl
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsg
Ki87IH07CisJCTE0QkQ1QTMwMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRDVBMjkwQTNF
OTFGNjAwQkFGNTlDIC8qIEpTQ29udGV4dFJlZi5jcHAgKi87IH07CisJCTE0QkQ1QTMyMEEzRTkx
RjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkQ1QTJCMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVm
LmNwcCAqLzsgfTsKKwkJMTRCRTdEMzMxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJFN0QzMjE3
MTM1Q0Y0MDBEMTgwN0EgLyogV2Vha0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNEJGQ0U2OTEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vh
a0dDTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTRDNTI0MkIwRjUzNTVFOTAwQkEzRDA0
IC8qIEpJVFN0dWJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNEE2NTgxQTBGNEUzNkY0MDAwMTUwRkQgLyogSklUU3R1YnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNENBOTU4QjE2QUI1MERFMDA5
MzhBMDYgLyogU3RhdGljUHJvcGVydHlBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDQTk1OEExNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkxNENBOTU4RDE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0Q0E5NThDMTZBQjUwRkEwMDkzOEEwNiAvKiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0RDJGM0RB
MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQyRjNEODEzOUY0QkUyMDA0OTEwMzEgLyogTWFy
a2VkU3BhY2UuY3BwICovOyB9OworCQkxNEQyRjNEQjEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2Vk
U3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
RDJGM0Q5MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0REYwNERBMTZCMzk5NkQwMDE2QTUx
MyAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNERGMDREOTE2QjM5OTZEMDAxNkE1MTMgLyogU3RhdGljUHJv
cGVydHlBbmFseXNpcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTE0RTg0RjlFMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFODRGOTkxNEVFMUFD
QzAwRDZENUQ0IC8qIFdlYWtCbG9jay5jcHAgKi87IH07CisJCTE0RTg0RjlGMTRFRTFBQ0MwMEQ2
RDVENCAvKiBXZWFrQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0RTg0RjlBMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNEU4NEZBMDE0RUUx
QUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNEU4NEY5QjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAg
Ki87IH07CisJCTE0RTg0RkExMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEU4NEY5QzE0RUUxQUNDMDBE
NkQ1RDQgLyogV2Vha1NldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTE0RTg0RkEyMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrSW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFODRGOUQxNEVFMUFD
QzAwRDZENUQ0IC8qIFdlYWtJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMTRFOUQxN0IxMDdFQzQ2OTAwNEREQTIxIC8qIEpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAgKi87IH07CisJCTE0RjcyNTY1MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3du
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRG
NzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5jcHAgKi87IH07CisJCTE0
RjcyNTY2MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjcyNTY0MTRFRTI2NUUwMEIxNjUy
QiAvKiBXZWFrSGFuZGxlT3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNp
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEY5
NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUEyOEQ0QTgxNzdCNzFDODAwMDdG
QTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUEyOEQ0QTcxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVm
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTFBQ0Y3Mzc3MTcxQ0E2RkIwMEM5QkIxRSAvKiBXZWFrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0Y3Mzc2MTcxQ0E2RkIwMEM5QkIxRSAv
KiBXZWFrLmNwcCAqLzsgfTsKKwkJMUNBQTlBMUUxOEY0OTk3RjAwMEEzNjlEIC8qIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNBQTlBMUMxOEY0OTk3RjAwMEEzNjlEIC8qIEluc3BlY3RvclByb2ZpbGVyQWdl
bnQuY3BwICovOyB9OworCQkxQ0FBOUExRjE4RjQ5OTdGMDAwQTM2OUQgLyogSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUNBQTlBMUQxOEY0OTk3RjAwMEEzNjlEIC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQ0FBOUEy
MjE4RjRBMjIwMDAwQTM2OUQgLyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUE5QTIwMThGNEEy
MjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuY3BwICovOyB9OworCQkx
Q0FBOUEyMzE4RjRBMjIwMDAwQTM2OUQgLyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FBOUEyMTE4
RjRBMjIwMDAwQTM2OUQgLyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmggKi87IH07CisJ
CTI2MDBCNUE2MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjAwQjVBNDE1MkJBQUE3MDA5
MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovOyB9OworCQkyNjAwQjVBNzE1MkJBQUE3MDA5
MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5l
ci5oICovOyB9OworCQkyQTExMTI0NTE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJB
MTExMjQzMTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwICovOyB9Owor
CQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTExMTI0NDE5MkZDRTc5
MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkEyODI1RDAxODM0MUYyRDAwODdGQkE5IC8qIERl
bGF5ZWRSZWxlYXNlU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJBMjgyNUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3Bl
LmggKi87IH07CisJCTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjEx
QjU3NDE3NkEyMjREMDAwRTJBMjMgLyogQVBJQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9OworCQky
QTRCQjdGMzE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0QkI3RjIxOEE0MTE3
OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLzsgfTsKKwkJMkE0RUM5MEIx
ODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRFQzkwOTE4NjBENkMyMDA5NEY3ODIg
LyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCAqLzsgfTsKKwkJMkE0RUM5MEMxODYwRDZDMjAwOTRG
NzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE0RUM5MEExODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmll
ckJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTY4Mjk1QTE4NzVGODA1
MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFw
T3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJBN0E1OEVGMTgwOEE0QzQw
MDIwQkRGNyAvKiBEZWZlckdDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCAqLzsg
fTsKKwkJMkE4MzYzODUxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYz
ODMxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovOyB9Owor
CQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODQxOEQ3
RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyQTgzNjM4OTE4RDdEMEZFMDAwMEVC
Q0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4NzE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdD
QWN0aXZpdHlDYWxsYmFjay5jcHAgKi87IH07CisJCTJBODM2MzhBMThEN0QwRkUwMDAwRUJDQyAv
KiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZp
dHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTJBODgwNjc4MTkxMDdENTUwMENCMEJCQiAvKiBERkdGdW5jdGlvbldoaXRlbGlzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTg4MDY3
NjE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwICovOyB9OworCQky
QTg4MDY3OTE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODgwNjc3MTkxMDdENTUw
MENCMEJCQiAvKiBERkdGdW5jdGlvbldoaXRlbGlzdC5oICovOyB9OworCQkyQUFBQTMxMjE4QkQ0
OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0
dXJlSURCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQkNERTYxOEVGMjk0MjAwMDAy
MDk2IC8qIEdDTG9nZ2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTJBQUNFNjNDMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFB
Q0U2M0ExOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi87IH07CisJ
CTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUNFNjNCMThDQTVBMDMw
MEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyQUFEOTY0QTE4NTY5NDE3MDAxRjkzQkUgLyogUmVj
dXJzaXZlQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyQUFEOTY0OTE4NTY5NDE3MDAxRjkzQkUgLyogUmVjdXJzaXZlQWxsb2Nh
dGlvblNjb3BlLmggKi87IH07CisJCTJBQzkyMkJCMThBMTYxODIwMDNDRTBGQiAvKiBGVExEV0FS
RkRlYnVnTGluZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkFDOTIyQjkxOEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5m
by5jcHAgKi87IH07CisJCTJBQzkyMkJDMThBMTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVn
TGluZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJBQzkyMkJBMThBMTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8uaCAqLzsg
fTsKKwkJMkFDQ0YzREUxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVsaXNpb25Q
aGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
QUNDRjNEQzE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNw
cCAqLzsgfTsKKwkJMkFDQ0YzREYxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVs
aXNpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFDQ0YzREQxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVsaXNpb25QaGFz
ZS5oICovOyB9OworCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQ4
OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi87IH07CisJCTJB
REZBMjYzMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFERkEyNjIxOEVGMzU0MDAwNEY5RkNDIC8q
IEdDTG9nZ2luZy5jcHAgKi87IH07CisJCTJBRjczODJDMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1
Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAq
LzsgfTsKKwkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRjczODJCMThC
QkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzcxRDg0MkQxN0M5OEI2RTAwRUNGOTk0IC8q
IGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLzsgfTsKKwkJNDEz
NTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYg
LyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKKwkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8q
IEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJh
bWV3b3JrICovOyB9OworCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0
NTAwRUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk1MkRDOUMxMjE5MzkzMEIxMDBGQTc0NjMgLyogVHlwZVNldC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkRDOUMxMTE5Mzkz
MEIxMDBGQTc0NjMgLyogVHlwZVNldC5jcHAgKi87IH07CisJCTUyRkFEREVCMTk0NjdBMjQwMEM4
QkJFNSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkFEREVBMTk0NjdBMjQwMEM4QkJFNSAvKiBIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk1MkZBRERFRDE5NDY3QTdBMDBDOEJCRTUgLyogSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyRkFEREVDMTk0NjdBN0EwMEM4QkJFNSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXIuY3BwICovOyB9OworCQk1NTEwNTAyNjE4RUI4Mjc1MDAwMDFGM0UgLyogSlNDYWxsYmFja0Z1
bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDQwRjg4RjBBNTA4QjEwMDAwNUYwNjEgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmggKi87IH07CisJ
CTU1NDA3NTcyMThEQTU4QUQwMEVGRjdGMiAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyog
QXJnTGlzdC5oICovOyB9OworCQk1NTQwNzU3MzE4REE1OEFEMDBFRkY3RjIgLyogQXJndW1lbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RF
NjBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggKi87IH07CisJCTU1NDA3NTc0MThEQTU4
QUQwMEVGRjdGMiAvKiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzYxNDBDODE4Mjk4MkNCMDA3NTA2
MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oICovOyB9OworCQk1NTQwNzU3NTE4
REE1OEFEMDBFRkY3RjIgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjE0MENBMTgyOTgyQ0IwMDc1
MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oICovOyB9OworCQk1NTQwNzU3NzE4
REE1OEFEMDBFRkY3RjIgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0
eUNoZWNrTW9kZS5oICovOyB9OworCQk1NTQwNzU3QzE4REE1OEFEMDBFRkY3RjIgLyogU3RydWN0
dXJlSURCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi87IH07CisJ
CTU1NDA3NTgzMThEQTU4QUQwMEVGRjdGMiAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0
IC8qIEFycmF5QnVmZmVyLmggKi87IH07CisJCTU1NDA3NTg0MThEQTU4QUQwMEVGRjdGMiAvKiBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCAqLzsgfTsKKwkJNTU0MDc1ODUxOERBNThBRDAwRUZG
N0YyIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdBOEFGMjgxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmll
dy5oICovOyB9OworCQk1NTQwNzU4NjE4REE1OEFEMDBFRkY3RjIgLyogQXJyYXlDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3OTUy
MDcwRTE1RThBODAwQTg5OEFCIC8qIEFycmF5Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNTU0MDc1
ODcxOERBNThBRDAwRUZGN0YyIC8qIEFycmF5Q29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdGMzg5MTVFRDhFMzgwMEYxNjdCMiAv
KiBBcnJheUNvbnZlbnRpb25zLmggKi87IH07CisJCTU1NDA3NTg4MThEQTU4QUQwMEVGRjdGMiAv
KiBBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkRBRUMxMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJh
dG9yQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNTU0MDc1ODkxOERBNThBRDAwRUZGN0YyIC8qIEFy
cmF5SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3QkRBRUMzMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJv
dG90eXBlLmggKi87IH07CisJCTU1NDA3NThCMThEQTU4QUQwMEVGRjdGMiAvKiBBcnJheVByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5
MkE4NEUwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmggKi87IH07CisJCTU1NDA3
NThEMThEQTU4QUQwMEVGRjdGMiAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcg
LyogU3RydWN0dXJlSURUYWJsZS5oICovOyB9OworCQk1NTQwNzU4RTE4REE1OEFEMDBFRkY3RjIg
LyogQXJyYXlTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi87IH07
CisJCTU1NDA3NTkzMThEQTU4QUQwMEVGRjdGMiAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXpl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3Qjgz
QUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggKi87IH07
CisJCTU1NDA3NTk0MThEQTU4QUQwMEVGRjdGMiAvKiBCaWdJbnRlZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjY3MzlEMDEzQkZERTcxMDAyM0Q4
N0MgLyogQmlnSW50ZWdlci5oICovOyB9OworCQk1NTQwNzU5NjE4REE1OEFEMDBFRkY3RjIgLyog
Qm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzA0RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLzsgfTsK
KwkJNTU0MDc1OUExOERBNThBRDAwRUZGN0YyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOEIxNUVEOEUzODAwRjE2N0Iy
IC8qIEJ1dHRlcmZseS5oICovOyB9OworCQk1NTQwNzU5QjE4REE1OEFEMDBFRkY3RjIgLyogQnV0
dGVyZmx5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZCN0YzOEMxNUVEOEUzODAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCAqLzsg
fTsKKwkJNTU0MDc1QTMxOERBNThBRDAwRUZGN0YyIC8qIENhbGxEYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDVDNTA3RjBEOURGNjNCMDA4OEY2
QjkgLyogQ2FsbERhdGEuaCAqLzsgfTsKKwkJNTU0MDc1QUIxOERBNThBRDAwRUZGN0YyIC8qIENs
YXNzSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM2QUFBRTQwRTFGNDI2NTAwQUQ4N0Q4IC8qIENsYXNzSW5mby5oICovOyB9OworCQk1NTQwNzVC
MjE4REE1OEFEMDBFRkY3RjIgLyogQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzdGMTgyMDE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNh
Y2hlLmggKi87IH07CisJCTU1NDA3NUI3MThEQTU4QUQwMEVGRjdGMiAvKiBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICov
OyB9OworCQk1NTQwNzVCOTE4REE1OEFEMDBFRkY3RjIgLyogQ29tbW9uSWRlbnRpZmllcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RUE3MzYzMEJB
RTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVudGlmaWVycy5oICovOyB9OworCQk1NTQwNzVCQTE4
REE1OEFEMDBFRkY3RjIgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29t
bW9uU2xvd1BhdGhzLmggKi87IH07CisJCTU1NDA3NUJCMThEQTU4QUQwMEVGRjdGMiAvKiBDb21t
b25TbG93UGF0aHNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTUzQTMzMDE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhz
RXhjZXB0aW9ucy5oICovOyB9OworCQk1NTQwNzVCRDE4REE1OEFEMDBFRkY3RjIgLyogQ29tcGls
YXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3RTVBM0E2MTc5NzQzMkQwMEU4OTNDMCAvKiBDb21waWxhdGlvblJlc3VsdC5oICovOyB9
OworCQk1NTQwNzVCRTE4REE1OEFEMDBFRkY3RjIgLyogSlNDb25zb2xlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTNDRTA4NDE4QkMxQTU2MDBCRURG
NzYgLyogSlNDb25zb2xlLmggKi87IH07CisJCTU1NDA3NUJGMThEQTU4QUQwMEVGRjdGMiAvKiBD
b21wbGV0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNUJCMkJDNTAzMEY3NzIxMDFGQ0ZFMUQgLyogQ29tcGxldGlvbi5oICovOyB9OworCQk1NTQw
NzVDMDE4REE1OEFEMDBFRkY3RjIgLyogQ29uY3VycmVudEpJVExvY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREIyQ0U5MTc0ODk2QzcwMDdCM0Mx
QiAvKiBDb25jdXJyZW50SklUTG9jay5oICovOyB9OworCQk1NTQwNzVDNDE4REE1OEFEMDBFRkY3
RjIgLyogQ29uc29sZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUZEMDA3MTE4OUIwMzhDMDA2MzMyMzEgLyogQ29uc29sZVR5cGVzLmggKi87
IH07CisJCTU1NDA3NUM1MThEQTU4QUQwMEVGRjdGMiAvKiBDb25zdGFudE1vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5OUQwMTg0RUM4QUQw
MDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLzsgfTsKKwkJNTU0MDc1QzYxOERBNThBRDAwRUZG
N0YyIC8qIENvbnN0cnVjdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDOEYzQ0NGMERBRjE3QkEwMDU3N0E4MCAvKiBDb25zdHJ1Y3REYXRhLmgg
Ki87IH07CisJCTU1NDA3NUQ1MThEQTU4QUQwMEVGRjdGMiAvKiBEYXRhVmlldy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QjExN0I2QjVBQjAw
QTdBRTNGIC8qIERhdGFWaWV3LmggKi87IH07CisJCTU1NDA3NUQ2MThEQTU4QUQwMEVGRjdGMiAv
KiBEYXRlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRDIwMzQ2MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3IuaCAq
LzsgfTsKKwkJNTU0MDc1RDcxOERBNThBRDAwRUZGN0YyIC8qIERhdGVDb252ZXJzaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQz
MTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKKwkJNTU0MDc1RDgxOERBNThB
RDAwRUZGN0YyIC8qIERhdGVJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMxMTY2MDEwRTE5OTdCMTAwODA2NkREIC8qIERhdGVJbnN0YW5j
ZS5oICovOyB9OworCQk1NTQwNzVEOTE4REE1OEFEMDBFRkY3RjIgLyogRGF0ZUluc3RhbmNlQ2Fj
aGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QTE1
NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oICovOyB9OworCQk1NTQw
NzVEQTE4REE1OEFEMDBFRkY3RjIgLyogRGF0ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8q
IERhdGVQcm90b3R5cGUuaCAqLzsgfTsKKwkJNTU0MDc1REMxOERBNThBRDAwRUZGN0YyIC8qIERl
YnVnZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NjkyQTg1OTAyNTU1OTdEMDFGRjYwRjcgLyogRGVidWdnZXIuaCAqLzsgfTsKKwkJNTU0MDc2NkQx
OERBNThBRDAwRUZGN0YyIC8qIER1bXBDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENv
bnRleHQuaCAqLzsgfTsKKwkJNTU0MDc2NzAxOERBNThBRDAwRUZGN0YyIC8qIEVycm9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNDYwNjBFMUY0
OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCAqLzsgfTsKKwkJNTU0MDc2NzExOERBNThBRDAwRUZGN0Yy
IC8qIEVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMDJFOTA1MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0cnVjdG9y
LmggKi87IH07CisJCTU1NDA3NjcyMThEQTU4QUQwMEVGRjdGMiAvKiBFcnJvckhhbmRsaW5nU2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjU4
QzEzMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCAqLzsgfTsKKwkJNTU0
MDc2NzMxOERBNThBRDAwRUZGN0YyIC8qIEVycm9ySW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJFOThCMEUxODNFMzgwMDBGOTI5NyAv
KiBFcnJvckluc3RhbmNlLmggKi87IH07CisJCTU1NDA3Njc0MThEQTU4QUQwMEVGRjdGMiAvKiBF
cnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMkU5MDcwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmggKi87IH07
CisJCTU1NDA3Njc3MThEQTU4QUQwMEVGRjdGMiAvKiBFeGNlcHRpb25IZWxwZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI3MDFCMzBEQURFOTQ5
MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oICovOyB9OworCQk1NTQwNzY3ODE4REE1OEFE
MDBFRkY3RjIgLyogRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZDQUZFRTIxMDM1RERFNjAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuaCAq
LzsgfTsKKwkJNTU0MDc2N0UxOERBNThBRDAwRUZGN0YyIC8qIEZsb2F0MzJBcnJheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMjkxN0FEQjVG
MzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovOyB9OworCQk1NTQwNzY3RjE4REE1OEFEMDBF
RkY3RjIgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0E4QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5Lmgg
Ki87IH07CisJCTU1NDA3NjgzMThEQTU4QUQwMEVGRjdGMiAvKiBDb25zb2xlQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTNDRTA4OTE4QkMy
MUMzMDBCRURGNzYgLyogQ29uc29sZUNsaWVudC5oICovOyB9OworCQk1NTQwNzY5MTE4REE1OEFE
MDBFRkY3RjIgLyogQ29uc29sZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzQ0UwODIxOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQ
cm90b3R5cGUuaCAqLzsgfTsKKwkJNTU0MDc2QjYxOERBNThBRDAwRUZGN0YyIC8qIEZ1bmN0aW9u
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMjY4MEMxMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87
IH07CisJCTU1NDA3NkI3MThEQTU4QUQwMEVGRjdGMiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUy
MjE2QjYyNzhEMDAzRjY5NkIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oICovOyB9OworCQk1
NTQwNzZCODE4REE1OEFEMDBFRkY3RjIgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODVEMDI1NTU5N0QwMUZG
NjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5oICovOyB9OworCQk1NTQwNzZDMjE4REE1OEFEMDBF
RkY3RjIgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCMjE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmggKi87IH07CisJCTU1NDA3NkMzMThEQTU4QUQwMEVGRjdGMiAvKiBH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCMzE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oICovOyB9OworCQk1NTQwNzZENjE4REE1OEFEMDBFRkY3RjIg
LyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTMzQTM0OUEwMzhBRTdDNjAwODYzNUNFIC8qIElkZW50aWZpZXIuaCAqLzsgfTsKKwkJ
NTU0MDc2REExOERBNThBRDAwRUZGN0YyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3RjM4RDE1RUQ4RTM4MDBGMTY3
QjIgLyogSW5kZXhpbmdIZWFkZXIuaCAqLzsgfTsKKwkJNTU0MDc2REIxOERBNThBRDAwRUZGN0Yy
IC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOEUxNUVEOEUzODAwRjE2N0IyIC8qIEluZGV4aW5nSGVh
ZGVySW5saW5lcy5oICovOyB9OworCQk1NTQwNzZEQzE4REE1OEFEMDBFRkY3RjIgLyogSW5kZXhp
bmdUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkI3RjM4RjE1RUQ4RTM4MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggKi87IH07CisJCTU1NDA3
NkRGMThEQTU4QUQwMEVGRjdGMiAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTc4NjMzRjBEOUJFQzAwMDBENzRF
NzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5oICovOyB9OworCQk1NTQwNzZGODE4REE1OEFEMDBF
RkY3RjIgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdBOEFGMkMxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXkuaCAqLzsg
fTsKKwkJNTU0MDc2RjkxOERBNThBRDAwRUZGN0YyIC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjJEMTdBREI1RjMwMDVB
QjE3NCAvKiBJbnQzMkFycmF5LmggKi87IH07CisJCTU1NDA3NkZBMThEQTU4QUQwMEVGRjdGMiAv
KiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAqLzsgfTsKKwkJNTU0
MDc2RkIxOERBNThBRDAwRUZGN0YyIC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y4MTc5NzI2Mjkw
MDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi87IH07CisJCTU1NDA3NkZDMThE
QTU4QUQwMEVGRjdGMiAvKiBJbnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzExNjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50
ZXJuYWxGdW5jdGlvbi5oICovOyB9OworCQk1NTQwNzZGRTE4REE1OEFEMDBFRkY3RjIgLyogSW50
cmluc2ljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi87IH07CisJCTU1NDA3NzE4
MThEQTU4QUQwMEVGRjdGMiAvKiBKU0FjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0Fj
dGl2YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQk1NTQw
NzcxOTE4REE1OEFEMDBFRkY3RjIgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ2MEZBRkJBMkQwMDAwMTg2
NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oICovOyB9OworCQk1NTQwNzcxQjE4REE1OEFEMDBFRkY3
RjIgLyogSlNBcmd1bWVudHNJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc2MTQwQ0MxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRz
SXRlcmF0b3IuaCAqLzsgfTsKKwkJNTU0MDc3MUMxOERBNThBRDAwRUZGN0YyIC8qIEpTQXJyYXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzODc3MkU1
MDM4QkZFMTkwMDg2MzVDRSAvKiBKU0FycmF5LmggKi87IH07CisJCTU1NDA3NzFEMThEQTU4QUQw
MEVGRjdGMiAvKiBKU0FycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZl
ci5oICovOyB9OworCQk1NTQwNzcxRTE4REE1OEFEMDBFRkY3RjIgLyogSlNBcnJheUJ1ZmZlckNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJCNjZCNzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgg
Ki87IH07CisJCTU1NDA3NzFGMThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5QnVmZmVyUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJC
NjZCOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oICovOyB9Owor
CQk1NTQwNzcyMDE4REE1OEFEMDBFRkY3RjIgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkJCMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oICovOyB9OworCQk1NTQwNzcyMTE4REE1OEFE
MDBFRkY3RjIgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCQzE3QjZCNUFCMDBBN0FFM0YgLyog
SlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggKi87IH07CisJCTU1NDA3NzIyMThEQTU4QUQwMEVG
RjdGMiAvKiBKU0FycmF5SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3QkRBRUM1MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0
b3IuaCAqLzsgfTsKKwkJNTU0MDc3MjUxOERBNThBRDAwRUZGN0YyIC8qIChudWxsKSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgfTsKKwkJNTU0MDc3MkIxOERBNThBRDAwRUZG
N0YyIC8qIEpTQ2VsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMxMTY3RDgwRTE5QkNDOTAwODA2NkREIC8qIEpTQ2VsbC5oICovOyB9OworCQk1NTQw
NzcyQzE4REE1OEFEMDBFRkY3RjIgLyogSlNDZWxsSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NzQ5NkYxNjg3QURFMjAwQTRGRjZBIC8q
IEpTQ2VsbElubGluZXMuaCAqLzsgfTsKKwkJNTU0MDc3MkQxOERBNThBRDAwRUZGN0YyIC8qIEpT
Q0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMUREODQ5MThBOTQ1QkUwMDI2RjNGQSAvKiBKU0NJbmxpbmVzLmggKi87IH07CisJCTU1NDA3
NzJFMThEQTU4QUQwMEVGRjdGMiAvKiBKU0NKU1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYgLyogSlND
SlNWYWx1ZS5oICovOyB9OworCQk1NTQwNzcyRjE4REE1OEFEMDBFRkY3RjIgLyogSlNDSlNWYWx1
ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovOyB9Owor
CQk1NTQwNzczNjE4REE1OEFEMDBFRkY3RjIgLyogSlNEYXRhVmlldy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QkUxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTRGF0YVZpZXcuaCAqLzsgfTsKKwkJNTU0MDc3MzcxOERBNThBRDAwRUZGN0YyIC8qIEpT
RGF0YVZpZXdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkI2NkMwMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBl
LmggKi87IH07CisJCTU1NDA3NzM4MThEQTU4QUQwMEVGRjdGMiAvKiBKU0RhdGVNYXRoLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMzE0NzFB
RDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICovOyB9OworCQk1NTQwNzczOTE4REE1OEFEMDBF
RkY3RjIgLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oICovOyB9OworCQk1NTQwNzczQjE4REE1OEFEMDBFRkY3RjIgLyogSlNF
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3QjRBQ0FFMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovOyB9Owor
CQk1NTQwNzczQzE4REE1OEFEMDBFRkY3RjIgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkMxMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICovOyB9OworCQk1NTQwNzczRDE4REE1OEFEMDBFRkY3
RjIgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMkI2NkMyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5o
ICovOyB9OworCQk1NTQwNzczRTE4REE1OEFEMDBFRkY3RjIgLyogSlNGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NUYwMjU1NTk3
RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uaCAqLzsgfTsKKwkJNTU0MDc3M0YxOERBNThBRDAwRUZG
N0YyIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklu
bGluZXMuaCAqLzsgfTsKKwkJNTU0MDc3NDAxOERBNThBRDAwRUZGN0YyIC8qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCNjZDMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcu
aCAqLzsgfTsKKwkJNTU0MDc3NDExOERBNThBRDAwRUZGN0YyIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9yLmggKi87IH07CisJCTU1NDA3NzQyMThEQTU4QUQwMEVGRjdGMiAvKiBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggKi87IH07CisJ
CTU1NDA3NzQzMThEQTU4QUQwMEVGRjdGMiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2
NkM2MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCAq
LzsgfTsKKwkJNTU0MDc3NDQxOERBNThBRDAwRUZGN0YyIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCNjZDNzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaCAqLzsgfTsKKwkJNTU0MDc3NDUxOERBNThBRDAwRUZGN0YyIC8qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QzgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oICovOyB9OworCQk1NTQwNzc0NjE4
REE1OEFEMDBFRkY3RjIgLyogSlNHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RTg5NDMzMENEMDYwM0YwMDM2NzE3OSAvKiBKU0ds
b2JhbE9iamVjdC5oICovOyB9OworCQk1NTQwNzc0ODE4REE1OEFEMDBFRkY3RjIgLyogSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmggKi87IH07CisJCTU1NDA3NzRBMThEQTU4QUQwMEVGRjdGMiAvKiBKU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM3NTZGQzcwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmggKi87IH07CisJCTU1NDA3NzUwMThEQTU4QUQwMEVGRjdGMiAvKiBKU0ludDE2QXJyYXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkNBMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2QXJyYXkuaCAqLzsgfTsKKwkJNTU0MDc3NTExOERBNThB
RDAwRUZGN0YyIC8qIEpTSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2Q0IxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MzJBcnJh
eS5oICovOyB9OworCQk1NTQwNzc1MjE4REE1OEFEMDBFRkY3RjIgLyogSlNJbnQ4QXJyYXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkM5MTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0ludDhBcnJheS5oICovOyB9OworCQk1NTQwNzc1NTE4REE1OEFE
MDBFRkY3RjIgLyogSlNMb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUVBNEM5QTA5MkFGOUUyMDA5M0Q4MDAgLyogSlNMb2NrLmggKi87IH07CisJ
CTU1NDA3NzU4MThEQTU4QUQwMEVGRjdGMiAvKiBKU01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpT
TWFwLmggKi87IH07CisJCTU1NDA3NzU5MThEQTU4QUQwMEVGRjdGMiAvKiBKU01hcEl0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRERUY5
MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovOyB9OworCQk1NTQwNzc1QjE4
REE1OEFEMDBFRkY3RjIgLyogSlNOYW1lU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODc0QUUwMTVFQkRFNEEwMDJFMzU4NyAvKiBKU05hbWVT
Y29wZS5oICovOyB9OworCQk1NTQwNzc1QzE4REE1OEFEMDBFRkY3RjIgLyogSlNPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjJBMzk5MEUx
NkUxNDgwMEFGMjFDOCAvKiBKU09iamVjdC5oICovOyB9OworCQk1NTQwNzc1RjE4REE1OEFEMDBF
RkY3RjIgLyogSlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdGOTkzNUQwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuaCAqLzsg
fTsKKwkJNTU0MDc3NjIxOERBNThBRDAwRUZGN0YyIC8qIEpTUHJvbWlzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODRFMTkxN0JFREJEMzAwN0NC
NjNBIC8qIEpTUHJvbWlzZS5oICovOyB9OworCQk1NTQwNzc2MzE4REE1OEFEMDBFRkY3RjIgLyog
SlNQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMTg0RTIxMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1
Y3Rvci5oICovOyB9OworCQk1NTQwNzc2NDE4REE1OEFEMDBFRkY3RjIgLyogSlNQcm9taXNlRGVm
ZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
MDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5oICovOyB9OworCQk1
NTQwNzc2NTE4REE1OEFEMDBFRkY3RjIgLyogSlNQcm9taXNlRnVuY3Rpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEMTE4NkY4QTkzMDA5
NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmggKi87IH07CisJCTU1NDA3NzY2MThEQTU4QUQw
MEVGRjdGMiAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTFEMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21p
c2VQcm90b3R5cGUuaCAqLzsgfTsKKwkJNTU0MDc3NjcxOERBNThBRDAwRUZGN0YyIC8qIEpTUHJv
bWlzZVJlYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzAwOENERDE4NzEyNThEMDA5NTVDMjQgLyogSlNQcm9taXNlUmVhY3Rpb24uaCAqLzsg
fTsKKwkJNTU0MDc3NjgxOERBNThBRDAwRUZGN0YyIC8qIEpTUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjU1M0NGMTYxMzZBQTUwMDlGMTdE
MCAvKiBKU1Byb3h5LmggKi87IH07CisJCTU1NDA3NzZCMThEQTU4QUQwMEVGRjdGMiAvKiBKU1Nj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDg3
NEFFMjE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5oICovOyB9OworCQk1NTQwNzc2RDE4REE1
OEFEMDBFRkY3RjIgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEYxNTdGMzMyNzAwNEE0RTdE
IC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCAqLzsgfTsKKwkJNTU0MDc3NkUxOERBNThB
RDAwRUZGN0YyIC8qIEpTU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzI5OUQ5QzE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuaCAqLzsgfTsKKwkJ
NTU0MDc3NkYxOERBNThBRDAwRUZGN0YyIC8qIEpTU2V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OTBERDZBMTgyRjQ5OTcwMDU4ODgw
NyAvKiBKU1NldEl0ZXJhdG9yLmggKi87IH07CisJCTU1NDA3NzcxMThEQTU4QUQwMEVGRjdGMiAv
KiBKU1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdDMUVBRUIxNzk4N0FCNjAwMjk5REIyIC8qIEpTU3RhY2tJbmxpbmVzLmggKi87
IH07CisJCTU1NDA3NzcyMThEQTU4QUQwMEVGRjdGMiAvKiBKU1N0cmluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NjIwMjU1NTk3RDAxRkY2
MEY3IC8qIEpTU3RyaW5nLmggKi87IH07CisJCTU1NDA3NzczMThEQTU4QUQwMEVGRjdGMiAvKiBK
U1N0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2RTg1NTM4MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAqLzsg
fTsKKwkJNTU0MDc3NzQxOERBNThBRDAwRUZGN0YyIC8qIEpTU3RyaW5nSm9pbmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjAwQjVBNTE1MkJBQUE3
MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLzsgfTsKKwkJNTU0MDc3NzgxOERBNThBRDAw
RUZGN0YyIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJv
bFRhYmxlT2JqZWN0LmggKi87IH07CisJCTU1NDA3Nzc5MThEQTU4QUQwMEVGRjdGMiAvKiBKU1R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QUJC
NDU0MDk5QzJBMEYwMEUyQTI0RiAvKiBKU1R5cGUuaCAqLzsgfTsKKwkJNTU0MDc3N0ExOERBNThB
RDAwRUZGN0YyIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2Q0QxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oICovOyB9OworCQk1NTQwNzc3QjE4REE1OEFEMDBF
RkY3RjIgLyogSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2Q0YxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlw
ZWRBcnJheVByb3RvdHlwZXMuaCAqLzsgfTsKKwkJNTU0MDc3N0MxOERBNThBRDAwRUZGN0YyIC8q
IEpTVHlwZWRBcnJheXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkI2NkQxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmggKi87IH07
CisJCTU1NDA3NzdEMThEQTU4QUQwMEVGRjdGMiAvKiBKU1R5cGVJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTA3RDI5NzBFODcxRTRBMDBEN0Q4
OTYgLyogSlNUeXBlSW5mby5oICovOyB9OworCQk1NTQwNzc3RTE4REE1OEFEMDBFRkY3RjIgLyog
SlNVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyQjY2RDQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDE2QXJyYXkuaCAqLzsgfTsK
KwkJNTU0MDc3N0YxOERBNThBRDAwRUZGN0YyIC8qIEpTVWludDMyQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkQ1MTdCNkI1QUIwMEE3
QUUzRiAvKiBKU1VpbnQzMkFycmF5LmggKi87IH07CisJCTU1NDA3NzgwMThEQTU4QUQwMEVGRjdG
MiAvKiBKU1VpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkI2NkQyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQ4QXJyYXkuaCAqLzsg
fTsKKwkJNTU0MDc3ODExOERBNThBRDAwRUZGN0YyIC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkQzMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmggKi87IH07CisJCTU1NDA3Nzg1
MThEQTU4QUQwMEVGRjdGMiAvKiBKU1ZhcmlhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEYyNTI1NjBEMDhERDhEMDA0RUNGRkYgLyog
SlNWYXJpYWJsZU9iamVjdC5oICovOyB9OworCQk1NTQwNzc4ODE4REE1OEFEMDBFRkY3RjIgLyog
SlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi87IH07CisJCTU1NDA3
NzhCMThEQTU4QUQwMEVGRjdGMiAvKiBKU1dpdGhTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MjU2NjAxNUVERTk4RDAwNjZBNDlCIC8qIEpT
V2l0aFNjb3BlLmggKi87IH07CisJCTU1NDA3NzhEMThEQTU4QUQwMEVGRjdGMiAvKiBKU1dyYXBw
ZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1QzdBMTcyMEE4RUFBQ0IwMEZBMzdFQSAvKiBKU1dyYXBwZXJPYmplY3QuaCAqLzsgfTsKKwkJ
NTU0MDc3OTgxOERBNThBRDAwRUZGN0YyIC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYw
NiAvKiBMaXRlcmFsUGFyc2VyLmggKi87IH07CisJCTU1NDA3N0E5MThEQTU4QUQwMEVGRjdGMiAv
KiBMb29rdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY2OTJBODY5MDI1NTU5N0QwMUZGNjBGNyAvKiBMb29rdXAuaCAqLzsgfTsKKwkJNTU0MDc3Qjcx
OERBNThBRDAwRUZGN0YyIC8qIE1hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczODE3Q0JFODUzMDBDM0U2NDMgLyogTWFw
Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNTU0MDc3QjgxOERBNThBRDAwRUZGN0YyIC8qIE1hcERh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODUw
N0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi87IH07CisJCTU1NDA3N0I5MThEQTU4
QUQwMEVGRjdGMiAvKiBNYXBJdGVyYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRERUY4QzE4MkQ5OTE0MDA1MjJDMjIgLyog
TWFwSXRlcmF0b3JDb25zdHJ1Y3Rvci5oICovOyB9OworCQk1NTQwNzdCQTE4REE1OEFEMDBFRkY3
RjIgLyogTWFwSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3NERFRjhFMTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRv
clByb3RvdHlwZS5oICovOyB9OworCQk1NTQwNzdCQjE4REE1OEFEMDBFRkY3RjIgLyogTWFwUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggKi87IH07CisJCTU1NDA3
N0MxMThEQTU4QUQwMEVGRjdGMiAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1h
dGNoUmVzdWx0LmggKi87IH07CisJCTU1NDA3N0MyMThEQTU4QUQwMEVGRjdGMiAvKiBNYXRoT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjky
QTg2QjAyNTU1OTdEMDFGRjYwRjcgLyogTWF0aE9iamVjdC5oICovOyB9OworCQk1NTQwNzdDMzE4
REE1OEFEMDBFRkY3RjIgLyogTWVtb3J5U3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTAyMTNFM0MxMjNBNDBDMjAwRDQyMkYzIC8qIE1l
bW9yeVN0YXRpc3RpY3MuaCAqLzsgfTsKKwkJNTU0MDc3QzUxOERBNThBRDAwRUZGN0YyIC8qIE1p
Y3JvdGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MwMDhDRTUxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oICovOyB9OworCQk1NTQwNzdD
NzE4REE1OEFEMDBFRkY3RjIgLyogTmFtZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVCRjJGQTE1NjBGMDM2MDA4RTkyMjIgLyog
TmFtZUNvbnN0cnVjdG9yLmggKi87IH07CisJCTU1NDA3N0M4MThEQTU4QUQwMEVGRjdGMiAvKiBO
YW1lSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2RUJGMkZDMTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1lSW5zdGFuY2UuaCAqLzsgfTsKKwkJ
NTU0MDc3QzkxOERBNThBRDAwRUZGN0YyIC8qIE5hbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUJGMkZFMTU2MEYwMzYwMDhFOTIy
MiAvKiBOYW1lUHJvdG90eXBlLmggKi87IH07CisJCTU1NDA3N0NBMThEQTU4QUQwMEVGRjdGMiAv
KiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwOTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oICovOyB9OworCQk1NTQwNzdDQjE4REE1OEFEMDBFRkY3RjIgLyogTmF0aXZl
RXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMDJFOTBCMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5o
ICovOyB9OworCQk1NTQwNzdEMTE4REE1OEFEMDBFRkY3RjIgLyogTnVtYmVyQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY4MEMz
MEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oICovOyB9OworCQk1NTQwNzdE
MzE4REE1OEFEMDBFRkY3RjIgLyogTnVtYmVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg3MTAyNTU1OTdEMDFGRjYwRjcgLyogTnVt
YmVyT2JqZWN0LmggKi87IH07CisJCTU1NDA3N0Q0MThEQTU4QUQwMEVGRjdGMiAvKiBOdW1iZXJQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjY4MEM1MEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJQcm90b3R5cGUuaCAqLzsgfTsKKwkJ
NTU0MDc3RDYxOERBNThBRDAwRUZGN0YyIC8qIE51bWVyaWNTdHJpbmdzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDJEMzkzODEwM0U0NTYwMDA3RENC
NTIgLyogTnVtZXJpY1N0cmluZ3MuaCAqLzsgfTsKKwkJNTU0MDc3REExOERBNThBRDAwRUZGN0Yy
IC8qIE9iamVjdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzI2ODBDNzBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0Q29uc3RydWN0
b3IuaCAqLzsgfTsKKwkJNTU0MDc3REIxOERBNThBRDAwRUZGN0YyIC8qIE9iamVjdFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgw
QzkwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdFByb3RvdHlwZS5oICovOyB9OworCQk1NTQwNzdF
MDE4REE1OEFEMDBFRkY3RjIgLyogT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NzgwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJh
dGlvbnMuaCAqLzsgfTsKKwkJNTU0MDc3RTExOERBNThBRDAwRUZGN0YyIC8qIE9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQz
NkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi87IH07CisJCTU1NDA3N0VBMThEQTU4QUQwMEVG
RjdGMiAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87
IH07CisJCTU1NDA3N0ZEMThEQTU4QUQwMEVGRjdGMiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RkI2MDRCMTAz
RjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsgfTsKKwkJNTU0MDc3RkUx
OERBNThBRDAwRUZGN0YyIC8qIFByb3BlcnR5TWFwSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMg
LyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLzsgfTsKKwkJNTU0MDc3RkYxOERBNThBRDAwRUZG
N0YyIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODYxNThBQjIxNTVDOEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oICov
OyB9OworCQk1NTQwNzgwMDE4REE1OEFEMDBFRkY3RjIgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDAwQzEwMEE2
OUJBRjIwMDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oICovOyB9OworCQk1NTQwNzgwMTE4
REE1OEFEMDBFRkY3RjIgLyogUHJvcGVydHlPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9w
ZXJ0eU9mZnNldC5oICovOyB9OworCQk1NTQwNzgwMzE4REE1OEFEMDBFRkY3RjIgLyogUHJvcGVy
dHlTbG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi87IH07CisJCTU1NDA3
ODA0MThEQTU4QUQwMEVGRjdGMiAvKiBQcm9wZXJ0eVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdGMzkwMTVFRDhFMzgwMEYxNjdCMiAv
KiBQcm9wZXJ0eVN0b3JhZ2UuaCAqLzsgfTsKKwkJNTU0MDc4MDUxOERBNThBRDAwRUZGN0YyIC8q
IFByb3RlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1QzAyRkJCMDYzNzQ2MkEwMDNFN0VFNiAvKiBQcm90ZWN0LmggKi87IH07CisJCTU1NDA3ODA2
MThEQTU4QUQwMEVGRjdGMiAvKiBQcm90b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDg0NEEzMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90
b3R5cGVNYXAuaCAqLzsgfTsKKwkJNTU0MDc4MDgxOERBNThBRDAwRUZGN0YyIC8qIFB1dERpcmVj
dEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oICovOyB9
OworCQk1NTQwNzgwQTE4REE1OEFEMDBFRkY3RjIgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDdCODQ2MjBFNkRFNkIx
MDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggKi87IH07CisJCTU1NDA3ODBFMThEQTU4QUQw
MEVGRjdGMiAvKiBSZWdFeHAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY2OTJBODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLzsgfTsKKwkJ
NTU0MDc4MEYxOERBNThBRDAwRUZGN0YyIC8qIFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUg
LyogUmVnRXhwQ2FjaGUuaCAqLzsgfTsKKwkJNTU0MDc4MTAxOERBNThBRDAwRUZGN0YyIC8qIFJl
Z0V4cENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0QyMDJCRTBFMTcwNkE3MDAyQzdFODIgLyogUmVnRXhwQ29uc3RydWN0b3IuaCAq
LzsgfTsKKwkJNTU0MDc4MTIxOERBNThBRDAwRUZGN0YyIC8qIFJlZ0V4cEtleS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAw
N0E1MzE1IC8qIFJlZ0V4cEtleS5oICovOyB9OworCQk1NTQwNzgxMzE4REE1OEFEMDBFRkY3RjIg
LyogUmVnRXhwT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNjkyQTg3QzAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwT2JqZWN0LmggKi87IH07
CisJCTU1NDA3ODE1MThEQTU4QUQwMEVGRjdGMiAvKiBSZWdFeHBQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDIwMkMwMEUxNzA2QTcw
MDJDN0U4MiAvKiBSZWdFeHBQcm90b3R5cGUuaCAqLzsgfTsKKwkJNTU0MDc4MTkxOERBNThBRDAw
RUZGN0YyIC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQjgxODYxMjQ0QzAwODQ1RDk3IC8qIFJl
Z2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oICovOyB9OworCQk1NTQwNzgxRDE4REE1OEFEMDBFRkY3
RjIgLyogUmVqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkI3RjM5MTE1RUQ4RTM4MDBGMTY3QjIgLyogUmVqZWN0LmggKi87IH07CisJCTU1NDA3
ODI2MThEQTU4QUQwMEVGRjdGMiAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAv
KiBTYW1wbGluZ0NvdW50ZXIuaCAqLzsgfTsKKwkJNTU0MDc4MzMxOERBNThBRDAwRUZGN0YyIC8q
IFNldENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzI5OURBNDE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCAqLzsg
fTsKKwkJNTU0MDc4MzQxOERBNThBRDAwRUZGN0YyIC8qIFNldEl0ZXJhdG9yQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OTBERDY2
MTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvckNvbnN0cnVjdG9yLmggKi87IH07CisJCTU1
NDA3ODM1MThEQTU4QUQwMEVGRjdGMiAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MERENjgxODJGNDk5NzAw
NTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggKi87IH07CisJCTU1NDA3ODM2MThEQTU4
QUQwMEVGRjdGMiAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mjk5REEwMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5
cGUuaCAqLzsgfTsKKwkJNTU0MDc4MzgxOERBNThBRDAwRUZGN0YyIC8qIFNpbXBsZVR5cGVkQXJy
YXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCNjZENzE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xs
ZXIuaCAqLzsgfTsKKwkJNTU0MDc4M0MxOERBNThBRDAwRUZGN0YyIC8qIFNtYWxsU3RyaW5ncy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDNGRUEw
RTZBNzJDMDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5oICovOyB9OworCQk1NTQwNzg0MTE4REE1
OEFEMDBFRkY3RjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOTIxNUVEOEUzODAwRjE2N0IyIC8qIFNw
YXJzZUFycmF5VmFsdWVNYXAuaCAqLzsgfTsKKwkJNTU0MDc4NDUxOERBNThBRDAwRUZGN0YyIC8q
IFN0YWNrQWxpZ25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjNBQzc1MTE4M0VBMTA0MDAzMjAyOUYgLyogU3RhY2tBbGlnbm1lbnQuaCAqLzsg
fTsKKwkJNTU0MDc4NDkxOERBNThBRDAwRUZGN0YyIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzMwQjYxMDEy
NTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCAqLzsgfTsKKwkJNTU0MDc4
NEExOERBNThBRDAwRUZGN0YyIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDMTBFMTZFRTMzMDBCMzQ0NjAg
LyogU3RyaW5nQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNTU0MDc4NEIxOERBNThBRDAwRUZGN0Yy
IC8qIFN0cmluZ09iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMxOEMzQzMwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ09iamVjdC5oICovOyB9
OworCQk1NTQwNzg0QzE4REE1OEFEMDBFRkY3RjIgLyogU3RyaW5nUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDNjBFMTZFRTMz
MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggKi87IH07CisJCTU1NDA3ODRGMThEQTU4QUQw
MEVGRjdGMiAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDREUzQUIxMEU2QzgyQ0YwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCAqLzsg
fTsKKwkJNTU0MDc4NTAxOERBNThBRDAwRUZGN0YyIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3OTYz
MDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLzsgfTsKKwkJNTU0MDc4NTExOERBNThBRDAw
RUZGN0YyIC8qIFN0cnVjdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDJDOTIzMTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJ
bmxpbmVzLmggKi87IH07CisJCTU1NDA3ODUyMThEQTU4QUQwMEVGRjdGMiAvKiBTdHJ1Y3R1cmVS
YXJlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzJGRTE4QTMxNkJBRUM0MDAwQUYzMDYxIC8qIFN0cnVjdHVyZVJhcmVEYXRhLmggKi87IH07CisJ
CTU1NDA3ODUzMThEQTU4QUQwMEVGRjdGMiAvKiBTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMEJBOTJDMTZC
QjFDMTUwMEIzQUVBMiAvKiBTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCAqLzsgfTsKKwkJNTU0
MDc4NTcxOERBNThBRDAwRUZGN0YyIC8qIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDQxNDcwRUI5MjUw
OTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oICovOyB9OworCQk1NTQwNzg1
OTE4REE1OEFEMDBFRkY3RjIgLyogU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAvKiBTeW1i
b2xUYWJsZS5oICovOyB9OworCQk1NTQwNzg1QzE4REE1OEFEMDBFRkY3RjIgLyogVGVzdFJ1bm5l
clV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkEyQzE3QTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggKi87IH07CisJCTU1
NDA3ODYwMThEQTU4QUQwMEVGRjdGMiAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTk4OTcxN0M4NkM1NjAwQTFF
NTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggKi87IH07CisJCTU1NDA3ODYxMThEQTU4QUQwMEVG
RjdGMiAvKiBUcmFjaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1RDUzNzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oICovOyB9OworCQk1
NTQwNzg2MjE4REE1OEFEMDBFRkY3RjIgLyogVHlwZWRBcnJheUFkYXB0b3JzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZEODE3QjZCNUFCMDBB
N0FFM0YgLyogVHlwZWRBcnJheUFkYXB0b3JzLmggKi87IH07CisJCTU1NDA3ODYzMThEQTU4QUQw
MEVGRjdGMiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2REExN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVk
QXJyYXlDb250cm9sbGVyLmggKi87IH07CisJCTU1NDA3ODY0MThEQTU4QUQwMEVGRjdGMiAvKiBU
eXBlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0Qjk0REIxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVkQXJyYXlJbmxpbmVzLmgg
Ki87IH07CisJCTU1NDA3ODY1MThEQTU4QUQwMEVGRjdGMiAvKiBUeXBlZEFycmF5cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2REIxN0I2QjVB
QjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlzLmggKi87IH07CisJCTU1NDA3ODY2MThEQTU4QUQwMEVG
RjdGMiAvKiBUeXBlZEFycmF5VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQjY2REQxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBl
LmggKi87IH07CisJCTU1NDA3ODZFMThEQTU4QUQwMEVGRjdGMiAvKiBVaW50MTZBcnJheS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMzIxN0FE
QjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggKi87IH07CisJCTU1NDA3ODZGMThEQTU4QUQw
MEVGRjdGMiAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZX
aXRoRnJhY3Rpb24uaCAqLzsgfTsKKwkJNTU0MDc4NzAxOERBNThBRDAwRUZGN0YyIC8qIFVpbnQz
MkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0E4QUYzMzE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCAqLzsgfTsKKwkJNTU0MDc4
NzExOERBNThBRDAwRUZGN0YyIC8qIFVpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50
OEFycmF5LmggKi87IH07CisJCTU1NDA3ODcyMThEQTU4QUQwMEVGRjdGMiAvKiBVaW50OENsYW1w
ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdBOEFGMzExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggKi87IH07CisJ
CTU1NDA3ODdBMThEQTU4QUQwMEVGRjdGMiAvKiBWTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTYwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmgg
Ki87IH07CisJCTU1NDA3ODdCMThEQTU4QUQwMEVGRjdGMiAvKiBWTUVudHJ5U2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVB
MjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsgfTsKKwkJNTU0MDc4N0QxOERBNThBRDAw
RUZGN0YyIC8qIFdhdGNoZG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLzsgfTsK
KwkJNTU0MDc4ODExOERBNThBRDAwRUZGN0YyIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NF
IC8qIFdlYWtHQ01hcC5oICovOyB9OworCQk1NTQwNzg4NTE4REE1OEFEMDBFRkY3RjIgLyogV2Vh
a01hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0NBM0FERTE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmgg
Ki87IH07CisJCTU1NDA3ODg2MThEQTU4QUQwMEVGRjdGMiAvKiBXZWFrTWFwRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRUExN0RBNTE2
ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCTU1NDA3ODg3MThEQTU4QUQwMEVG
RjdGMiAvKiBXZWFrTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMDE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3Rv
dHlwZS5oICovOyB9OworCQk1NTQwNzg4ODE4REE1OEFEMDBFRkY3RjIgLyogV2Vha1JhbmRvbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyMEJFN0Ex
MEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLzsgfTsKKwkJNTU0MDc4OEQxOERBNThB
RDAwRUZGN0YyIC8qIFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmll
ci5oICovOyB9OworCQk1NTQwNzg4RjE4REE1OEFEMDBFRkY3RjIgLyogV3JpdGVCYXJyaWVySW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJC
NkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmllcklubGluZXMuaCAqLzsgfTsKKwkJ
NTU0MDc4QUIxOERBNThBRDAwRUZGN0YyIC8qIEFycmF5Q29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3OTUyMDYwRTE1RThBODAw
QTg5OEFCIC8qIEFycmF5Q29uc3RydWN0b3IuY3BwICovOyB9OworCQk1NTQwNzhBRjE4REE1OEFE
MDBFRkY3RjIgLyogQXJyYXlQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJv
dG90eXBlLmNwcCAqLzsgfTsKKwkJNTU0MDdBMzgxOERBNThBRDAwRUZGN0YyIC8qIE51bWJlckNv
bnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMjY4MEMyMEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5jcHAgKi87
IH07CisJCTU1NDA3QTNBMThEQTU4QUQwMEVGRjdGMiAvKiBOdW1iZXJQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwQzQwRTE2
RDRFOTAwQTA2RTkyIC8qIE51bWJlclByb3RvdHlwZS5jcHAgKi87IH07CisJCTVENTM3MjZGMEUx
QzU0ODgwMDIxRTU0OSAvKiBUcmFjaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1RDUzNzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oICov
OyB9OworCQk1RDVEOEFEMTBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBF
QkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliICovOyB9OworCQk1REJCMTUxQjEzMUQwQjMxMDA1
NkFEMzYgLyogdGVzdGFwaS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBp
LmpzICovOyB9OworCQk1REJCMTUyNTEzMUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBD
b3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MTIxMTBEMEE0ODc4ODcwMDQ4MDI1NSAvKiBtaW5pZG9tLmpzICovOyB9OworCQk1REU2RTVCMzBF
MTcyOEVDMDAxODA0MDcgLyogY3JlYXRlX2hhc2hfdGFibGUgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3Jl
YXRlX2hhc2hfdGFibGUgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJ
NjUwN0QyOUUwRTg3MUU1RTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAv
KiBKU1R5cGVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNjUxMTIyRkQxNDA0NkE0QzAwMkIxMDFEIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
MkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07
CisJCTY1MTEyMkZFMTQwNDZBNEMwMDJCMTAxRCAvKiBsaWJlZGl0LmR5bGliIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1RDhBRDAwRTBEMEVCRTAw
RjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgKi87IH07CisJCTY1MTEyMzA3MTQwNDZCMEEwMDJCMTAx
RCAvKiB0ZXN0UmVnRXhwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAqLzsg
fTsKKwkJNjUxNEYyMTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxNEYyMTcxOEIzRTE2NzAwOThG
RjhCIC8qIEJ5dGVjb2Rlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTY1MzAzRDY0MTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MzAzRDYzMTQ0
N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2NTUzQTMzMTE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29t
bW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMyRjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1Bh
dGhzRXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTY1NTNBMzMyMTdBMUYxRUUwMDhDRjZGMyAvKiBD
b21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMzMDE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1Bh
dGhzRXhjZXB0aW9ucy5oICovOyB9OworCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9k
ZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1NUVCMjlBMTBDRTI1ODEwMDFBOTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3BwICovOyB9Owor
CQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NEYxNzE3OTVF
MjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKKwkJNjVDMDI4NUMxNzE3
OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QTE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdE
T3Bjb2RlLmNwcCAqLzsgfTsKKwkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVD
MDI4NUIxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oICovOyB9OworCQk2NUZCNTEx
NzE4NEVFRTcwMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGQjUxMTYxODRFRTlCQzAwQzEyQjcwIC8q
IFByb3RvQ2FsbEZyYW1lLmNwcCAqLzsgfTsKKwkJN0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8q
IEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzAwOENEMDE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rp
b25zLmNwcCAqLzsgfTsKKwkJN0MwMDhDRDMxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1
bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MwMDhDRDExODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDMDA4Q0RBMTg3MTI0
QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQ
cm9taXNlRGVmZXJyZWQuY3BwICovOyB9OworCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyog
SlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDMDA4
Q0RFMTg3MTI1OEQwMDk1NUMyNCAvKiBKU1Byb21pc2VSZWFjdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEQzE4NzEyNThEMDA5NTVD
MjQgLyogSlNQcm9taXNlUmVhY3Rpb24uY3BwICovOyB9OworCQk3QzAwOENERjE4NzEyNThEMDA5
NTVDMjQgLyogSlNQcm9taXNlUmVhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0REMTg3MTI1OEQwMDk1NUMyNCAvKiBKU1Byb21pc2VS
ZWFjdGlvbi5oICovOyB9OworCQk3QzAwOENFNzE4NzYzMUI2MDA5NTVDMjQgLyogTWljcm90YXNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENF
NTE4NzYzMUI2MDA5NTVDMjQgLyogTWljcm90YXNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0MxODRFMUExN0JFREJEMzAwN0NCNjNBIC8qIEpT
UHJvbWlzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzE4NEUxODE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCAqLzsgfTsKKwkJN0Mx
ODRFMUIxN0JFREJEMzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODRFMTkxN0JFREJEMzAwN0NCNjNBIC8qIEpT
UHJvbWlzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdDMTg0RTFFMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODRFMUMxN0JF
RTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5jcHAgKi87IH07CisJCTdDMTg0RTFG
MTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTFEMTdCRUUyMkUwMDdDQjYzQSAv
KiBKU1Byb21pc2VQcm90b3R5cGUuaCAqLzsgfTsKKwkJN0MxODRFMjIxN0JFRTI0MDAwN0NCNjNB
IC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTIwMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VD
b25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1By
b21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MxODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9y
LmggKi87IH07CisJCTdFNEVFNzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MDgw
RUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0U0RUU3MEYwRUJCN0E1QjAwNTkzNEFBIC8q
IFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAg
Ki87IH07CisJCTdFRkYwMDY0MEVDMDVBOUEwMEFBN0M5MyAvKiBOb2RlSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VGRjAwNjMwRUMwNUE5QTAw
QUE3QzkzIC8qIE5vZGVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFw
cGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA4
OTRENjBGQUZCQTJEMDAwMDE4NjUgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjAxNjFFMzBGM0E4M0MxMDBG
ODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJY
ODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2
MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDE2MUU1MEYzQTgzQzEwMEY4
NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAx
NjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjA2RERFQTE4REE0
NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDZEREU5MThEQTQ0QUIwMEEzODNEMCAvKiBJZGVu
dGlmaWVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJbnRyaW5zaWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkY2NDJBMTQ4REIyQjUw
MDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0Y2hSZXN1bHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTJFNENC
MTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MTU4QUIzMTU1QzhCNDAwMEI0NUM5QyAvKiBQ
cm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjI1NTNEMTE2MTM2REE5
MDA5RjE3RDAgLyogSlNQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjI1NTNDRTE2MTM2QUE1MDA5RjE3RDAgLyogSlNQcm94eS5jcHAgKi87
IH07CisJCTg2MjU1M0QyMTYxMzZFMUEwMDlGMTdEMCAvKiBKU1Byb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjI1NTNDRjE2MTM2QUE1MDA5RjE3
RDAgLyogSlNQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTg2M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2M0Iy
M0RGMEZDNjBFNjIwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjNDNkQ5QzE1MjExMTFB
MDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlh
cnJDYW5vbmljYWxpemVVQ1MyLmNwcCAqLzsgfTsKKwkJODY0MkM1MTAxNTFDMDZBOTAwNDZENEVG
IC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkY3NUVGQjE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVk
UmVzdWx0LmNwcCAqLzsgfTsKKwkJODY0MkM1MTIxNTFDMDgzRDAwNDZENEVGIC8qIFJlZ0V4cE1h
dGNoZXNBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkY3NUVGRDE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCAq
LzsgfTsKKwkJODY1QTMwRjExMzUwMDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjVBMzBGMDEz
NTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0Mg
LyogQmlnSW50ZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY2NzM5RDAxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCAqLzsgfTsKKwkJ
ODY2NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY2NzM5RDExM0JGREU3MTAw
MjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovOyB9OworCQk4NjcwNEI0MjEyREI4QTgx
MDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCNDAxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJT
eW50YXhDaGVja2VyLmNwcCAqLzsgfTsKKwkJODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlh
cnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjcwNEI0MTEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCAq
LzsgfTsKKwkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI3RDEy
REJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCAqLzsgfTsKKwkJODY3MDRCODUx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCN0UxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjdGMTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySklULmNwcCAqLzsgfTsKKwkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY3MDRCODgxMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJODY3MDRCODkxMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2NzA0QjgyMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAg
Ki87IH07CisJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODMxMkRCQTMz
NzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY4ODBGMUYxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwICovOyB9OworCQk4Njg4MEY0RDE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi87
IH07CisJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAw
Q0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJODY5RUJDQjcwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OUVCQ0I2
MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZBOTBFRDAwRUU3RDUxRjAwQUIzNTBEIC8qIEpJ
VEFyaXRobWV0aWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZBOTBFQ0YwRUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFyaXRobWV0aWMuY3BwICovOyB9
OworCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgw
MDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fz
c2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QUU2NEE5
MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxlclNINC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTYxMzVFNUUxQzAwOTYzMDEyIC8q
IE1hY3JvQXNzZW1ibGVyU0g0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODZBRTY0QUExMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZBRTY0QTcx
MzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QjU4MjY3MTREMjc5NkMwMEE5QzMwNiAvKiBD
b2RlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkI1ODIyRTE0RDIzNzNCMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwICovOyB9Owor
CQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAzQ0VGMjE0Qzc1NDY0MDBB
RTU5RTMgLyogQ29kZVByb2ZpbGluZy5jcHAgKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIz
REY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZD
NTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3
RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi87IH07CisJCTg2QzU2OEUxMTFBMjEzRUUw
MDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlck1JUFMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNF
RTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk4NkNBMDMyRTEwMzhFODQ0MDAyOEE2MDkgLyogRXhlY3V0
YWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkNBMDMyRDEwMzhFODQ0MDAyOEE2MDkgLyogRXhlY3V0YWJsZS5jcHAgKi87IH07CisJCTg2Q0FG
RUUzMTAzNURERTYwMDI4QTYwOSAvKiBFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkNBRkVFMjEwMzVEREU2MDAyOEE2MDkgLyogRXhl
Y3V0YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVBMDBFRTc5QTQ3MDAyODg2
ODIgLyogSklUSW5saW5lcy5oICovOyB9OworCQk4NkNDODVBMzBFRTc5Qjc0MDAyODg2ODIgLyog
SklUQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkNDODVBMjBFRTc5Qjc0MDAyODg2ODIgLyogSklUQ2FsbC5jcHAgKi87IH07CisJCTg2Q0M4
NUM0MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVDMzBFRTdBODk0MDAyODg2
ODIgLyogSklUUHJvcGVydHlBY2Nlc3MuY3BwICovOyB9OworCQk4NkNDRUZERTBGNDEzRjg5MDBG
RDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDQ0VGREQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkQyMjIxQTE2N0VGOTQ0
MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tICovOyB9
OworCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkJGMTAxNTZCREUw
MDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwICovOyB9OworCQk4NkQzQjJDNDEwMTU2QkRFMDAy
ODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0Iy
QzUxMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMxMTAx
NTZCREUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZEM0IyQzYxMDE1
NkJERTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1RTcgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3
RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk4NkQzQjNDNDEwMTU5RDdGMDAyODY1RTcgLyogUmVwYXRjaEJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZE
M0IzQzIxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5
MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2REI2NDYzMEY5NUM2RkMwMEQ3RDkyMSAv
KiBFeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwICovOyB9OworCQk4NkUxMTZCMTBG
RTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxv
Y2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODZFM0M2MTIxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTNDNjA2MTY3QkFCODcwMDZENzYwQSAv
KiBKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9
OworCQk4NkUzQzYxMzE2N0JBQkQ3MDA2RDc2MEEgLyogSlNDb250ZXh0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUzQzYwNzE2N0JBQjg3MDA2RDc2
MEEgLyogSlNDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCAp
OyB9OyB9OworCQk4NkUzQzYxNDE2N0JBQkQ3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTNDNjBBMTY3QkFCODcw
MDZENzYwQSAvKiBKU0V4cG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKKwkJODZFM0M2MTUxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hp
bmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTND
NjBGMTY3QkFCODcwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk4NkUzQzYxNjE2N0JBQkVFMDA2RDc2
MEEgLyogSlNDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZFM0M2MDgxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTQ29udGV4dC5tbSAqLzsgfTsK
KwkJODZFM0M2MTcxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTQ29udGV4dEludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUzQzYwOTE2N0JBQjg3
MDA2RDc2MEEgLyogSlNDb250ZXh0SW50ZXJuYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkUzQzYxODE2N0JBQkVFMDA2RDc2MEEgLyogSlNX
cmFwcGVyTWFwLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZFM0M2MEIxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTV3JhcHBlck1hcC5tbSAqLzsgfTsKKwkJ
ODZFM0M2MTkxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTV3JhcHBlck1hcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MEMxNjdCQUI4NzAwNkQ3NjBB
IC8qIEpTV3JhcHBlck1hcC5oICovOyB9OworCQk4NkUzQzYxQTE2N0JBQkVFMDA2RDc2MEEgLyog
SlNWYWx1ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2RTNDNjBEMTY3QkFCODcwMDZENzYwQSAvKiBKU1ZhbHVlLm1tICovOyB9OworCQk4NkUzQzYx
QjE2N0JBQkVFMDA2RDc2MEEgLyogSlNWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUzQzYwRTE2N0JBQjg3MDA2RDc2MEEgLyog
SlNWYWx1ZUludGVybmFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODZFM0M2MUMxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmUu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUzQzYx
MDE2N0JBQjg3MDA2RDc2MEEgLyogSlNWaXJ0dWFsTWFjaGluZS5tbSAqLzsgfTsKKwkJODZFM0M2
MUQxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MTExNjdCQUI4NzAw
NkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2RTg1NTM5MTExQjk5NjgwMDFBRjUxRSAv
KiBKU1N0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2RTg1NTM4MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAq
LzsgfTsKKwkJODZFQkYyRkYxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVCRjJGOTE1
NjBGMDM2MDA4RTkyMjIgLyogTmFtZUNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJODZFQkYzMDAx
NTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQkYyRkExNTYwRjAzNjAwOEU5MjIyIC8qIE5h
bWVDb25zdHJ1Y3Rvci5oICovOyB9OworCQk4NkVCRjMwMTE1NjBGMDZBMDA4RTkyMjIgLyogTmFt
ZUluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2RUJGMkZCMTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1lSW5zdGFuY2UuY3BwICovOyB9Owor
CQk4NkVCRjMwMjE1NjBGMDZBMDA4RTkyMjIgLyogTmFtZUluc3RhbmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVCRjJGQzE1NjBGMDM2MDA4RTky
MjIgLyogTmFtZUluc3RhbmNlLmggKi87IH07CisJCTg2RUJGMzAzMTU2MEYwNkEwMDhFOTIyMiAv
KiBOYW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2RUJGMkZEMTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1lUHJvdG90eXBlLmNwcCAq
LzsgfTsKKwkJODZFQkYzMDQxNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUJGMkZFMTU2MEYw
MzYwMDhFOTIyMiAvKiBOYW1lUHJvdG90eXBlLmggKi87IH07CisJCTg2RUM5REM0MTMyOERGODIw
MDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVDOURCNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0
ZUNvZGVQYXJzZXIuY3BwICovOyB9OworCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZH
Qnl0ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2RUM5REI1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2RUM5REM2
MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQzlEQjYxMzI4REY4MjAwMkIyQUQ3IC8q
IERGR0dlbmVyYXRpb25JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODZFQzlEQzcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUM5REI3MTMy
OERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgKi87IH07CisJCTg2RUM5REM4MTMyOERGODIw
MDJCMkFENyAvKiBERkdHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZFQzlEQjgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZFQzlEQ0IxMzI4
REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUM5REJCMTMyOERGODIwMDJCMkFENyAvKiBERkdK
SVRDb21waWxlci5jcHAgKi87IH07CisJCTg2RUM5RENDMTMyOERGODIwMDJCMkFENyAvKiBERkdK
SVRDb21waWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZFQzlEQkMxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZFQzlEQ0YxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQzlEQkYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJh
dGlvbnMuY3BwICovOyB9OworCQk4NkVDOUREMDEzMjhERjgyMDAyQjJBRDcgLyogREZHT3BlcmF0
aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZF
QzlEQzAxMzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkVDOUREMTEzMjhERjgyMDAyQjJB
RDcgLyogREZHUmVnaXN0ZXJCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkVDOURDMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJCYW5r
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZF
QzlERDIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUM5REMyMTMyOERGODIwMDJC
MkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgKi87IH07CisJCTg2RUM5REQzMTMyOERGODIw
MDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQzlEQzMxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1
bGF0aXZlSklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUNBM0U5MTMyREVGMUMwMDJCMkFE
NyAvKiBERkdOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJODZFQ0EzRkExMzJERjI1QTAwMkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUNBM0Y5MTMyREYy
NUEwMDJCMkFENyAvKiBERkdTY29yZUJvYXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZGM0VFQkQxNjhDREU5MzAwNzdCOTJBIC8qIE9iakND
YWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkYzRUVCOTE2OENDRjc1MDA3N0I5MkEgLyogT2JqQ0NhbGxiYWNrRnVuY3Rpb24u
aCAqLzsgfTsKKwkJODZGM0VFQkUxNjhDREU5MzAwNzdCOTJBIC8qIE9iakNDYWxsYmFja0Z1bmN0
aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZG
M0VFQkExNjhDQ0Y3NTAwNzdCOTJBIC8qIE9iakNDYWxsYmFja0Z1bmN0aW9uLm1tICovOyB9Owor
CQk4NkYzRUVCRjE2OENERTkzMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjNFRUI2MTY4NTVBNUIw
MDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OworCQk4NkZBOUU5MTE0MkJCQjJF
MDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5k
RnVuY3Rpb24uY3BwICovOyB9OworCQk4NkZBOUU5MjE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3Vu
ZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi87IH07CisJ
CTkwMjEzRTNEMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMjEzRTNCMTIzQTQwQzIw
MEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCAqLzsgfTsKKwkJOTAyMTNFM0UxMjNBNDBD
MjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlT
dGF0aXN0aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTMwNTJDMzQwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDUyQzMyMEZCNzkyMTkw
MDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAgKi87IH07CisJCTkzMDUyQzM1MEZCNzkyMTkwMDQ4
RkRDMyAvKiBQYXJzZXJBcmVuYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTMyRjVCRDMw
ODIyQTFDNzAwNzM2OTc1IC8qIENvcmVGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjBBNENGMDRCM0IzRTcwMDhB
RTk1MiAvKiBDb3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CisJCTkzMkY1QkQ2MDgyMkEx
QzcwMDczNjk3NSAvKiBsaWJvYmpjLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVDMDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9iamMu
ZHlsaWIgKi87IH07CisJCTkzMkY1QkQ3MDgyMkExQzcwMDczNjk3NSAvKiBsaWJpY3Vjb3JlLmR5
bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMy
MkEwMDMwNkMzNDFEMzAwOTA2N0JCIC8qIGxpYmljdWNvcmUuZHlsaWIgKi87IH07CisJCTkzMkY1
QkREMDgyMkExQzcwMDczNjk3NSAvKiBqc2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAg
Ki87IH07CisJCTkzMkY1QkVBMDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9
OworCQk5MzMwNDAwNDBFNkE3NDk0MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwM0ZFQTBFNkE3MkMwMDA3
ODZFNkEgLyogU21hbGxTdHJpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5n
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMw
M0ZFODBFNkE3MkI1MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCAqLzsgfTsKKwkJOTMzNUYy
NEQxMkU2NzY1QjAwMkI1NTUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzNDVBODcxMkQ4MzhDNDAw
MzAyQkUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwICovOyB9OworCQk5NTM0QUFGQjBF
NUI3QTk2MDBCOEE0NUIgLyogSlNQcm9maWxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MkM2M0FDMEU0Nzc3RDYwMEMxMzkzNiAvKiBK
U1Byb2ZpbGVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTk1NzQyRjY1MEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1NzQyRjYzMEREMTFG
NUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCAqLzsgfTsKKwkJOTVBQjgzNDIwREE0MzIyNTAwQkM4
M0YzIC8qIExlZ2FjeVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk1QUI4MzJFMERBNDJDQUQwMEJDODNGMyAvKiBMZWdhY3lQcm9maWxl
ci5jcHAgKi87IH07CisJCTk1QUI4MzU2MERBNDNDMzAwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFCODM1
NDBEQTQzQjQ0MDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwICovOyB9OworCQk5NUNENDU3NjBF
MUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NDBFMUM0RkREMDA4NTM1OEUgLyog
UHJvZmlsZUdlbmVyYXRvci5jcHAgKi87IH07CisJCTk1Q0Q0NTc3MEUxQzRGREQwMDg1MzU4RSAv
KiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NUNENDU3NTBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTk1RTNCQzA1MEUxQUU2
ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTVFM0JDMDQwRTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJOTVGNkU2OTUwRTVCNUY5NzAwOTFFODYwIC8qIEpTUHJvZmlsZXJQcml2YXRlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1OTg4QkE5MEU0NzdC
RUMwMEQyOEQ0RCAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgKi87IH07CisJCTk2MDA5N0E2MEVC
QUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NjAwOTdBNTBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29w
ZS5oICovOyB9OworCQk5Njg4Q0IxNTBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0Ix
MzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlG
IC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk2OUEwNzIzMEVE
MUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjEwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5
dGVjb2RlR2VuZXJhdG9yLmggKi87IH07CisJCTk2OUEwNzJBMEVEMUNFNjkwMEYxRjY4MSAvKiBM
YWJlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5
QTA3MjcwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmggKi87IH07CisJCTk2OUEwNzJCMEVEMUNF
NjkwMEYxRjY4MSAvKiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDcyODBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5o
ICovOyB9OworCQk5NjlBMDc5NjBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzkwMEVEMUQz
QUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFH
UyA9ICItZm5vLXN0cmljdC1hbGlhc2luZyI7IH07IH07CisJCTk2OUEwNzk3MEVEMUQzQUUwMEYx
RjY4MSAvKiBDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk2OUEwNzkxMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NjlBMDc5ODBFRDFE
M0FFMDBGMUY2ODEgLyogRXZhbENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3OTIwRUQxRDNBRTAwRjFGNjgxIC8qIEV2YWxDb2Rl
Q2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzkzMEVEMUQzQUUwMEYxRjY4
MSAvKiBJbnN0cnVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTk2OUEwNzlBMEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3OTQwRUQxRDNB
RTAwRjFGNjgxIC8qIE9wY29kZS5jcHAgKi87IH07CisJCTk2OUEwNzlCMEVEMUQzQUUwMEYxRjY4
MSAvKiBPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk2OUEwNzk1MEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5Nzg4MDE0MDE0NzFBRDkyMDA0MUIw
MTYgLyogSlNEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5Nzg4RkMyMjE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5jcHAgKi87
IH07CisJCTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMzE0NzFBRDBDMDA2
OENFMkQgLyogSlNEYXRlTWF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTk5MjhGRjNCMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4
RkYzOTE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuY3BwICovOyB9OworCQk5OTI4
RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MjhGRjNBMThBQzRBRUMwMEI4Q0YxMiAv
KiBKU1JlcGxheUlucHV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTk5NjIzMUU5MThEMTgwNDIwMEMwM0ZEQSAvKiBJbnNwZWN0b3JKU0JhY2tl
bmRDb21tYW5kcy5qcyBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MzI0Mzk2MTg1NkE0NzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmRDb21tYW5k
cy5qcyAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0c1RlbXBs
YXRlcy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
RTQ1QTFFMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVtcGxh
dGVzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTk5Q0MwQjYzMThCRTk5NTAwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMUQx
OEExQjFFNzAwMjZEODhGIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlFNDVBMjQxOEExQjI1
OTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTFGMThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlu
cHV0Q3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTlFNDVBMjUxOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEyMDE4QTFCMjU5
MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmNwcCAqLzsgfTsKKwkJOTlFNDVBMjYxOEExQjI1OTAw
MjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTlFNDVBMjExOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5RTQ1
QTI3MThBMUIyNTkwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMjIxOEExQjI1OTAwMjZEODhGIC8qIElu
cHV0Q3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMjMx
OEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExNzEyQjNCMTFDN0IyMTIwMDdB
NTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTcxMkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3Bw
ICovOyB9OworCQlBMTcxMkIzRjExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNFMTFDN0Iy
MjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUExNzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBL
ZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEy
QjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyog
TWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJN
NjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
MUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNCMTU2RUVEM0IwMDU2NkNC
MiAvKiBBUk02NEFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUE1MDNGQTE5MTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsg
fTsKKwkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE0MTg4
RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CisJCUE1MDNGQTFC
MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTUxODhFMEZCMDAwMTEw
RjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CisJCUE1MDNGQTFEMTg4RTBG
QjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTcxODhFMEZCMDAw
MTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi87IH07CisJCUE1
MDNGQTFFMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE4
MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLzsg
fTsKKwkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFGMTg4RUZG
NjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTUwM0ZBMjIxODhFRkY2ODAwMTEwRjE0IC8qIFNj
cmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MDNGQTIwMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTUw
M0ZBMjUxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTIzMTg4RUZGRkQwMDEx
MEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi87IH07CisJCUE1MDNGQTI2MTg4RUZGRkQw
MDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMjQxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERl
YnVnU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTUwM0ZBMjkxODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUwM0ZBMjcxODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwICovOyB9OworCQlBNTAzRkEyQTE4OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9iYWxP
YmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUwM0ZBMjgxODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0
U2NyaXB0RGVidWdTZXJ2ZXIuaCAqLzsgfTsKKwkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8q
IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTBFNEI1RDE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVu
dGltZUFnZW50LmNwcCAqLzsgfTsKKwkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTUwRTRCNUUxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1
MEU0QjYzMTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTBFNEI1RjE4
ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwICovOyB9Owor
CQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MEU0QjYw
MTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oICovOyB9Owor
CQlBNTEwMDdDMDE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1MTAwN0JFMTg3Q0MzQzYwMEIzODg3OSAvKiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuY3BwICovOyB9OworCQlBNTEwMDdDMTE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTEwMDdCRjE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmggKi87IH07CisJCUE1MTNFNUI3MTg1QjhCRDMwMDdFOTVB
RCAvKiBJbmplY3RlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTEzRTVCNTE4NUI4QkQzMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHQu
Y3BwICovOyB9OworCQlBNTEzRTVCODE4NUI4QkQzMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUI2
MTg1QjhCRDMwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAv
KiBJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1MTNFNUI5MTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhv
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
NTEzRTVCRjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QkExODVCRkFD
QzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCAqLzsgfTsKKwkJQTUxM0U1QzAx
ODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVCQjE4NUJGQUNDMDA3RTk1QUQg
LyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgfTsKKwkJQTUxM0U1QzExODVCRkFDQzAwN0U5
NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUJDMTg1QkZBQ0MwMDdFOTVBRCAv
KiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAgKi87IH07CisJCUE1MTNFNUMyMTg1
QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QkQxODVCRkFDQzAw
N0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi87IH07CisJCUE1MTNF
NUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QzYxODVGOTQzNjAwN0U5
NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi87IH07CisJCUE1MTNFNUNBMTg1Rjk2MjQw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIElu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi87IH07CisJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVB
RCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUM5MTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBNTE0QjJDMjE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTRCMkMw
MTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwICovOyB9OworCQlBNTE0
QjJDMzE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTE0QjJDMTE4NUE2ODQ0MDBGM0M3
Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTUzMjQzODcxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3Rv
ckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1MzI0MzgxMTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0Jh
Y2tlbmREaXNwYXRjaGVycy5jcHAgKi87IH07CisJCUE1MzI0Mzg4MTg1NjgzMzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQzODIxODU2ODMxNzAwMkVENjkyIC8qIEluc3Bl
Y3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTUzMjQzODkxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3Rv
ckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTMyNDM4MzE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNG
cm9udGVuZERpc3BhdGNoZXJzLmNwcCAqLzsgfTsKKwkJQTUzMjQzOEExODU2ODMzNTAwMkVENjky
IC8qIEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQzODQxODU2ODMxNzAwMkVENjkyIC8qIElu
c3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTMyNDM4NTE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuY3BwICovOyB9OworCQlBNTMyNDM4QzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MzI0Mzg2MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQzOEYxODU2
OTZFNjAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTUzMjQzOTMxODU2OTcwOTAwMkVE
NjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQzOTAxODU2OTZFNjAwMkVENjkyIC8q
IENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1MzI0Mzk0MTg1Njk3MDkwMDJFRDY5MiAvKiBn
ZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0MzkxMTg1Njk2RTYwMDJFRDY5MiAvKiBnZW5l
cmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5z
cGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MzI0Mzk1MTg1NkE0NzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1M0NFMDg1MThCQzFB
NTYwMEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1M0NFMDgxMThCQzFBNTYwMEJFREY3NiAvKiBDb25z
b2xlUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTUzQ0UwODYxOEJDMUE1NjAwQkVERjc2IC8qIENv
bnNvbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1M0NFMDgyMThCQzFBNTYwMEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBlLmggKi87
IH07CisJCUE1M0NFMDg3MThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzQ0UwODMxOEJDMUE1NjAw
QkVERjc2IC8qIEpTQ29uc29sZS5jcHAgKi87IH07CisJCUE1M0NFMDg4MThCQzFBNTYwMEJFREY3
NiAvKiBKU0NvbnNvbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1M0NFMDg0MThCQzFBNTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuaCAqLzsgfTsKKwkJ
QTUzQ0UwOEExOEJDMjFDMzAwQkVERjc2IC8qIENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1M0NFMDg5MThCQzIxQzMwMEJFREY3
NiAvKiBDb25zb2xlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQTUzRjFBQzAxOEM5MEY4RjAwNzJFQjZEIC8qIGZyYW1ld29yay5zYiBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzRjFBQkUx
OEM5MEVDNzAwNzJFQjZEIC8qIGZyYW1ld29yay5zYiAqLzsgfTsKKwkJQTU0OTgyMDMxODkxRDBC
MDAwODFFNUI4IC8qIEV2ZW50TG9vcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTQ5ODIwMTE4OTFEMEIwMDA4MUU1QjggLyogRXZlbnRMb29wLmNw
cCAqLzsgfTsKKwkJQTU0OTgyMDQxODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50TG9vcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0OTgyMDIxODkxRDBC
MDAwODFFNUI4IC8qIEV2ZW50TG9vcC5oICovOyB9OworCQlBNTRDRjJGNTE4NEVBQjI0MDAyMzdG
MTkgLyogU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU0Q0YyRjIxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCAq
LzsgfTsKKwkJQTU0Q0YyRjYxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRDRjJGMzE4NEVBQjI0
MDAyMzdGMTkgLyogU2NyaXB0VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBNTRDRjJGOTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
NENGMkY3MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwICovOyB9OworCQlBNTRD
RjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRDRjJGODE4NEVBRURBMDAyMzdGMTkgLyog
U2NyaXB0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTU0RThFQjAxOEJGRkJCQjAwNTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMzQzRjc0MThB
MTc0OEIwMDM5QjA4NSAvKiBHQ1NlZ21lbnRlZEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8q
IEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQTM0M0Y3NzE4QTE3NDlEMDAzOUIwODUgLyogR0NTZWdtZW50ZWRB
cnJheUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBNTVEOTNBNTE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUQ5M0Ez
MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovOyB9OworCQlBNTVE
OTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVEOTNBNDE4NTAxMkE4MDA0MDBE
RUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3Rv
clR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTdEMjNF
NTE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdEMjNFMzE4OTBDRUJGMDAz
MUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgKi87IH07CisJCUE1N0QyM0U2MTg5
MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdEMjNFNDE4OTBDRUJGMDAzMUM3RkEg
LyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE1N0QyM0U5MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU3RDIzRTcxODkxQjA3NzAwMzFDN0ZBIC8qIEpTR2xvYmFsT2JqZWN0
RGVidWdnZXJBZ2VudC5jcHAgKi87IH07CisJCUE1N0QyM0VBMTg5MUIwNzcwMDMxQzdGQSAvKiBK
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0QyM0U4MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2JhbE9i
amVjdERlYnVnZ2VyQWdlbnQuaCAqLzsgfTsKKwkJQTU3RDIzRUQxODkxQjU1NDAwMzFDN0ZBIC8q
IFJlZ3VsYXJFeHByZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1N0QyM0VCMTg5MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVzc2lv
bi5jcHAgKi87IH07CisJCUE1N0QyM0VFMTg5MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVz
c2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3
RDIzRUMxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU3RDIzRjExODkxQjVCNDAw
MzFDN0ZBIC8qIENvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDIzRUYxODkxQjVCNDAwMzFDN0ZBIC8qIENv
bnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwICovOyB9OworCQlBNTdEMjNGMjE4OTFCNUI0MDAzMUM3
RkEgLyogQ29udGVudFNlYXJjaFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDIzRjAxODkxQjVCNDAwMzFDN0ZBIC8qIENvbnRlbnRT
ZWFyY2hVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Q0VFRTEzMTg3
RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJ
bmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTg0MEUxRTE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRN
b2R1bGUuY3BwICovOyB9OworCQlBNTg0MEUyMTE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1ODQwRTFGMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1ODQwRTI3
MTg3Qzk4MUUwMDg0M0IxMCAvKiBjc3NtaW4ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0MEUyNjE4N0M5ODA3MDA4NDNCMTAgLyogY3NzbWluLnB5
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1ODQw
RTI5MTg3Q0E1RTYwMDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQt
c2NyaXB0cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1ODQwRTI4MTg3Q0E1QjgwMDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0
cy1hbmQtc2NyaXB0cy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlBNTg0MEUyQTE4N0NBNzU5MDA4NDNCMTAgLyogeHhkLnBsIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QzUxODVGOTJGMDAwN0U5
NUFEIC8qIHh4ZC5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBNTg0MEUyQjE4N0NBNzVCMDA4NDNCMTAgLyoganNtaW4ucHkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEzRTVDNDE4NUY5MkRDMDA3RTk1
QUQgLyoganNtaW4ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTU4QzAyNDIxOEU0QTQxQTAwMDMyQkM1IC8qIEpTQ29udGV4dFByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEMwMjQxMThF
NEE0MUEwMDAzMkJDNSAvKiBKU0NvbnRleHRQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU4RTM1OTExODYwREVDRjAwMUYyNEZFIC8q
IEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNThFMzU5MDE4NjBERUM3MDAxRjI0RkUgLyogSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcCAqLzsgfTsKKwkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1OTNDRjdBMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAgKi87IH07CisJCUE1OTNDRjdEMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTU5M0NGN0YxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGN0UxODQw
MzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU5M0NGODAxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5j
cHAgKi87IH07CisJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTNDRjgx
MTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTkzQ0Y4NjE4NDAzOENBMDBCRkNFMjcg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4NDE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5jcHAgKi87IH07CisJCUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTkzQ0Y4NTE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1
NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLzsg
fTsKKwkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0
NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLzsg
fTsKKwkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1
OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oICovOyB9Owor
CQlBNTk0NTU5NTE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5NDE4
MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCNkE3NEQxOEM2REJBNjAw
RjExRTkxIC8qIENvbnNvbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVCNkE3NEMxOEM2REJBNjAwRjExRTkxIC8qIENvbnNvbGVDbGll
bnQuY3BwICovOyB9OworCQlBNUJBMTVFODE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJB
MTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RTkxODIzNDBCMzAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3IubW0gKi87IH07CisJCUE1QkExNUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUJB
MTVFQjE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkEx
NUU0MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bi5oICovOyB9OworCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gKi87IH07CisJCUE1QkExNUVEMTgyMzQwQjQwMEE4MkU2
OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNjE4MjM0MEIzMDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE1QkExNUVFMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVCQTE1RTcxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24ubW0gKi87IH07CisJCUE1QkExNUYwMTgyMzQ1QUYwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFRjE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUE1QzNBMUE1MThDMDQ5MDIwMEM5NTkzQSAvKiBKU0NvbnNvbGVDbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVDM0ExQTMx
OEMwNDkwMjAwQzk1OTNBIC8qIEpTQ29uc29sZUNsaWVudC5jcHAgKi87IH07CisJCUE1QzNBMUE2
MThDMDQ5MDIwMEM5NTkzQSAvKiBKU0NvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzNBMUE0MThDMDQ5MDIwMEM5NTkzQSAvKiBK
U0NvbnNvbGVDbGllbnQuaCAqLzsgfTsKKwkJQTVDRUVFMTQxODdGM0JBRDAwRTU1Qzk5IC8qIElu
c3BlY3RvckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1Q0VFRTEyMTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi87
IH07CisJCUE1RDBBMUJCMTg2MjMwMUIwMEM3QjQ5NiAvKiBJbnNwZWN0b3JFbnZpcm9ubWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVEMEExQkEx
ODYyMzAxQjAwQzdCNDk2IC8qIEluc3BlY3RvckVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVGRDAwNjcxODlBRkU5QzAwNjMz
MjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUZEMDA2NTE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1l
bnRzLmNwcCAqLzsgfTsKKwkJQTVGRDAwNjgxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3Vt
ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVG
RDAwNjYxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RkQwMDZEMTg5QjAwQUEwMDYz
MzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVGRDAwNjkxODlCMDBBOTAwNjMzMjMxIC8qIFNjcmlwdENhbGxG
cmFtZS5jcHAgKi87IH07CisJCUE1RkQwMDZFMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxs
RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
RkQwMDZBMTg5QjAwQTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUZEMDA2RjE4OUIwMEFBMDA2
MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1RkQwMDZCMTg5QjAwQTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxs
U3RhY2suY3BwICovOyB9OworCQlBNUZEMDA3MDE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2Fs
bFN0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUZEMDA2QzE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVGRDAwNzQxODlCMDM4QzAw
NjMzMjMxIC8qIENvbnNvbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVGRDAwNzExODlCMDM4QzAwNjMzMjMxIC8qIENvbnNvbGVUeXBlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RkQw
MDc1MTg5QjAzOEMwMDYzMzIzMSAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGRDAwNzIxODlCMDM4QzAwNjMz
MjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5jcHAgKi87IH07CisJCUE1RkQwMDc2MTg5QjAzOEMw
MDYzMzIzMSAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RkQwMDczMTg5QjAzOEMwMDYzMzIzMSAvKiBJZGVudGlm
aWVyc0ZhY3RvcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBNUZEMDA3OTE4OUIwNTEwMDA2MzMyMzEgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGRDAwNzcxODlC
MDUxMDAwNjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLzsgfTsKKwkJQTVGRDAwN0ExODlC
MDUxMDAwNjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUZEMDA3ODE4OUIwNTEwMDA2MzMyMzEgLyogQ29uc29s
ZU1lc3NhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBNUZEMDA3RDE4OUIwQjRDMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUZEMDA3
QjE4OUIwQjRDMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgKi87IH07CisJ
CUE1RkQwMDdFMTg5QjBCNEMwMDYzMzIzMSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUZEMDA3QzE4OUIw
QjRDMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RkQwMDgxMTg5QjE5MUEwMDYzMzIz
MSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGRDAwN0YxODlCMTkxQTAwNjMzMjMxIC8qIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAgKi87IH07CisJCUE1RkQwMDgyMTg5QjE5MUEwMDYzMzIzMSAvKiBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1RkQwMDgwMTg5QjE5MUEwMDYzMzIzMSAvKiBJbnNwZWN0b3JDb25zb2xl
QWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBNUZEMDA4NTE4OUIxQjdFMDA2MzMyMzEgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGRDAw
ODMxODlCMUI3RTAwNjMzMjMxIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmNwcCAqLzsg
fTsKKwkJQTVGRDAwODYxODlCMUI3RTAwNjMzMjMxIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFn
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUZE
MDA4NDE4OUIxQjdFMDA2MzMyMzEgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaCAqLzsg
fTsKKwkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzM3MTdDQkU4
NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUE3MDA4NzNBMTdDQkU4
NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0
cnVjdG9yLmggKi87IH07CisJCUE3MDA4NzNEMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcw
MDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi87IH07CisJCUE3MDA4
NzNFMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzNDMTdDQkU4RDMwMEMzRTY0MyAvKiBN
YXBQcm90b3R5cGUuaCAqLzsgfTsKKwkJQTcwMDg3NDExN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFw
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4
NzNGMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5jcHAgKi87IH07CisJCUE3MDA4NzQyMTdDQkU4
RUIwMEMzRTY0MyAvKiBKU01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcwNDQ3RUExN0EwQkQ0
NjAwRjU4OThFIC8qIE9wZXJhbmRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNDQ3RTkxN0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJhbmRz
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE3MDQ0N0VEMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0NDdFQjE3QTBCRDcwMDBG
NTg5OEUgLyogRHVtcENvbnRleHQuY3BwICovOyB9OworCQlBNzA0NDdFRTE3QTBCRDcwMDBGNTg5
OEUgLyogRHVtcENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MDQ0N0VDMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3MDREOTAzMTdB
MEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0RDhGRTE3QTBCQUE4MDA2QkE1NTQg
LyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE3MDREOTA0MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcwNEQ4RkYxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQTcwNEQ5MDUxN0EwQkFBODAwNkJBNTU0IC8qIERGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3MDREOTAwMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAg
Ki87IH07CisJCUE3MDREOTA2MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcw
NEQ5MDExN0EwQkFBODAwNkJBNTU0IC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcwNEQ5MDcxN0Ew
QkFBODAwNkJBNTU0IC8qIERGR01lcmdlTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNEQ5MDIxN0EwQkFBODAwNkJBNTU0IC8qIERGR01lcmdl
TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUE3MDlGMkYwMTdBMEFDMDQwMDUxMkU5OCAvKiBTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDlGMkVGMTdBMEFDMDQwMDUxMkU5
OCAvKiBTbG93UGF0aENhbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBNzA5RjJGMjE3QTBBQzJBMDA1MTJFOTggLyogQ29tbW9uU2xvd1BhdGhz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDlG
MkYxMTdBMEFDMkEwMDUxMkU5OCAvKiBDb21tb25TbG93UGF0aHMuY3BwICovOyB9OworCQlBNzBC
MDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdBMEI3OUIwMERBRjE0
QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovOyB9OworCQlBNzBCMDgzMzE3QTBCNzlCMDBEQUYx
NEIgLyogREZHQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNo
LmggKi87IH07CisJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxMjM2
RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07CisJCUE3MjAy
OEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjQxNzk3NjAxRTAwOTgw
MjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CisJCUE3MjAyOEI4MTc5NzYwMUUw
MDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0
UnVubmVyVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI5MTc5
NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3MjcwMDkwMERBQzZCQkMwMEU1NDhENyAv
KiBKU05vdEFuT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MjcwMDc4MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCAq
LzsgfTsKKwkJQTcyNzAxQjkwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjcwMUIzMERB
REU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggKi87IH07CisJCUE3MjdGRjZCMERB
MzA5MjIwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjdGRjY2MERBMzA1M0IwMEU1NDhE
NyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKKwkJQTcyODBBMjgxMTU1N0Uz
MDAwRDU2OTU3IC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5RURCMDgxMTUzMUNENjAwMTlFOTEyIC8qIEpTT2Jq
ZWN0UmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mjkw
MDlCMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCAqLzsgfTsKKwkJ
QTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mjk5RDlCMTdEMTI4MzcwMDVGNUZGOSAvKiBK
U1NldC5jcHAgKi87IH07CisJCUE3Mjk5RDlFMTdEMTI4MzcwMDVGNUZGOSAvKiBKU1NldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyOTlEOUMxN0Qx
MjgzNzAwNUY1RkY5IC8qIEpTU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQTcyOTlEQTExN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI5
OUQ5RjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTcyOTlE
QTIxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyOTlEQTAxN0QxMjg0ODAwNUY1RkY5IC8qIFNl
dFByb3RvdHlwZS5oICovOyB9OworCQlBNzI5OURBNTE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29u
c3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcyOTlEQTMxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCAqLzsgfTsK
KwkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI5OURBNDE3RDEyODU4MDA1
RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTcyRkZENjQxMzk5ODVBODAwRTUz
NjVBIC8qIEtleXdvcmRMb29rdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3QzIyNUNEMTM5OTg0OUMwMEZGMTY2MiAvKiBLZXl3b3JkTG9va3VwLmgg
Ki87IH07CisJCUE3MzBCNjEyMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczMEI2
MTAxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggKi87IH07CisJCUE3
MzBCNjEzMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzMwQjYxMTEyNTAwNjhG
MDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwICovOyB9OworCQlBNzMxQjI1QTEz
MDA5Mzg4MDA0MEE3RkEgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIg
LyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CisJCUE3Mzc4MTBDMTc5OUVBMkUwMDgxNzUz
MyAvKiBERkdBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTczNzgxMDkxNzk5RUEyRTAwODE3NTMzIC8qIERGR0FuYWx5c2lzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTczNzgxMEQxNzk5
RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM3ODEwQTE3OTlFQTJFMDA4MTc1MzMgLyogREZH
TmF0dXJhbExvb3BzLmNwcCAqLzsgfTsKKwkJQTczNzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERG
R05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTczNzgxMEIxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3Mzg2NTU0MTE4
Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFsaXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM4NjU1MTExODY5N0I0MDA1NDAyNzkgLyog
U3BlY2lhbGl6ZWRUaHVua0pJVC5oICovOyB9OworCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkg
LyogVGh1bmtHZW5lcmF0b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3Mzg2NTUyMTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMu
Y3BwICovOyB9OworCQlBNzM4NjU1NjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3Jz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM4NjU1
MzExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTczQTUzNUExNzk5Q0Q1RDAwMTcwQzE5
IC8qIERGR0xhenlKU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3M0E1MzU4MTc5OUNENUQwMDE3MEMxOSAvKiBERkdMYXp5SlNWYWx1ZS5j
cHAgKi87IH07CisJCUE3M0E1MzVCMTc5OUNENUQwMDE3MEMxOSAvKiBERkdMYXp5SlNWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczQTUzNTkx
Nzk5Q0Q1RDAwMTcwQzE5IC8qIERGR0xhenlKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTczRTEzMzAxNzk2MjRDRDAwRTRERUE4IC8q
IERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRTEzMkMxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2ly
ZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwICovOyB9OworCQlBNzNFMTMzMTE3OTYyNENEMDBFNERFQTgg
LyogREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRTEzMkQxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2ly
ZWRTdHJ1Y3R1cmVDaGFpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBNzQxMDE3RjE3OURBRjgwMDAyRUI4QkEgLyogREZHU2FuZVN0cmluZ0dl
dEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3NDEwMTdFMTc5REFGODAwMDJFQjhCQSAvKiBERkdTYW5lU3RyaW5n
R2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtP
YmplY3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzQ4MkI3OTExNjZDREVBMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVm
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE3NDgyQjk0MTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NDgy
QjdBMTE2NkNERUEwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCAqLzsg
fTsKKwkJQTc0ODJFOTMxMTZBN0NBRDAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZkludGVy
bmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzQ4
MkUzNzExNkE2OTdCMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzRERTFEMDEy
MEI4NzU2MDBENDBENUIgLyogQVJNdjdBc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0REUxQ0IxMjBCODZENjAwRDQwRDVCIC8qIEFS
TXY3QXNzZW1ibGVyLmNwcCAqLzsgfTsKKwkJQTc0REVGOTExODJEOTkxNDAwNTIyQzIyIC8qIE1h
cEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc0REVGOEIxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yQ29u
c3RydWN0b3IuY3BwICovOyB9OworCQlBNzRERUY5MjE4MkQ5OTE0MDA1MjJDMjIgLyogTWFwSXRl
cmF0b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc0REVGOEMxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yQ29uc3RydWN0
b3IuaCAqLzsgfTsKKwkJQTc0REVGOTMxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3NERFRjhEMTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclByb3RvdHlwZS5jcHAgKi87
IH07CisJCUE3NERFRjk0MTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0REVGOEUx
ODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmggKi87IH07CisJCUE3NERF
Rjk1MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAv
KiBKU01hcEl0ZXJhdG9yLmNwcCAqLzsgfTsKKwkJQTc0REVGOTYxODJEOTkxNDAwNTIyQzIyIC8q
IEpTTWFwSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi87IH07
CisJCUE3NTcwNkRFMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1NzA2REQxMThB
MkJDRjAwNTdGODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi87IH07CisJCUE3NUVFOUIy
MThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUVFOUIwMThBQUI3RTIwMEFBRDA0MyAvKiBCdWls
dGluTmFtZXMuaCAqLzsgfTsKKwkJQTc2MTQwQ0QxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50
c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc2MTQwQzcxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBNzYxNDBDRTE4Mjk4MkNCMDA3NTA2MjQgLyog
QXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2MTQwQzgxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50
c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTc2MTQwQ0YxODI5ODJDQjAwNzUwNjI0
IC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjE0MEM5MTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1
bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07CisJCUE3NjE0MEQwMTgyOTgyQ0IwMDc1
MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2MTQwQ0ExODI5ODJDQjAwNzUwNjI0IC8qIEFy
Z3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmggKi87IH07CisJCUE3NjE0MEQxMTgyOTgyQ0IwMDc1
MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjE0MENCMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3Vt
ZW50c0l0ZXJhdG9yLmNwcCAqLzsgfTsKKwkJQTc2MTQwRDIxODI5ODJDQjAwNzUwNjI0IC8qIEpT
QXJndW1lbnRzSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3NjE0MENDMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9y
LmggKi87IH07CisJCUE3NjZCNDRGMEVFOERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxsb2Nh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0
OERCNTBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3NjdCNUI1MTdBMEI5NjUw
MDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzY3QjVCMzE3QTBCOTY1MDA2M0Q5
NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwICovOyB9OworCQlBNzY3QjVC
NjE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjdCNUI0MTdBMEI5
NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3NkM1MTc2MTE4Mjc0OEQw
MDcxNUIwNSAvKiBKU0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNl
SklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OUU3ODFFMTVFRUNCQTgw
MDQ3Qzg1NSAvKiBVbmxpbmtlZENvZGVCbG9jay5jcHAgKi87IH07CisJCUE3NkY1NEEzMTNCMjhB
QUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkY1NEEyMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0
ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBNzdBNDIzRDE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0E0MjM2MTdBMEJC
RkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuY3BwICovOyB9OworCQlBNzdBNDIzRTE3QTBC
QkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzdBNDIzNzE3QTBCQkZEMDBBOERCODEgLyogREZHQWJz
dHJhY3RIZWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTc3QTQyM0YxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Nsb2JiZXJpemUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3QTQyMzgxN0EwQkJG
RDAwQThEQjgxIC8qIERGR0Nsb2JiZXJpemUuY3BwICovOyB9OworCQlBNzdBNDI0MDE3QTBCQkZE
MDBBOERCODEgLyogREZHQ2xvYmJlcml6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc3QTQyMzkxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Nsb2JiZXJp
emUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
NzdBNDI0MTE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlclNldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzdBNDIzQTE3QTBCQkZEMDBBOERC
ODEgLyogREZHQ2xvYmJlclNldC5jcHAgKi87IH07CisJCUE3N0E0MjQyMTdBMEJCRkQwMEE4REI4
MSAvKiBERkdDbG9iYmVyU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzdBNDIzQjE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlclNldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3N0E0MjQz
MTdBMEJCRkQwMEE4REI4MSAvKiBERkdTYWZlVG9FeGVjdXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzdBNDIzQzE3QTBCQkZEMDBBOERCODEgLyog
REZHU2FmZVRvRXhlY3V0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE3N0YxODIxMTY0MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3RjE4MUYxNjQw
ODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgKi87IH07CisJCUE3N0YxODIyMTY0MDg4QjIw
MDY0MEE0NyAvKiBDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3N0YxODIwMTY0MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzdGMTgyNTE2
NDE5MkM3MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0YxODI0MTY0MTkyNTQwMDY0MEE0NyAvKiBQYXJzZXJN
b2Rlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NDExQjk4QjhEMDA2NUExNEYg
LyogQVNUQnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUE3ODRBMjY0MTFEMTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3RUU3NzExQjk4
QjhEMDA2NUExNEYgLyogU3ludGF4Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3ODUwN0Q2MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBE
YXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
ODUwN0Q0MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNwcCAqLzsgfTsKKwkJQTc4NTA3RDcx
N0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc4NUY2
QkMxOEM1NTNGRTAwRjEwNjI2IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGRjY0N0ExOEM1MkU4NTAwQjU1MzA3
IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE3ODg1M0Y5MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0
cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3ODg1M0Y3MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWlu
LmNwcCAqLzsgfTsKKwkJQTc4ODUzRkExNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0
dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc4QTk3NzQx
Nzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzhBOTc2QzE3OTczOEI4MDA5REY3NDQg
LyogREZHRmFpbGVkRmluYWxpemVyLmNwcCAqLzsgfTsKKwkJQTc4QTk3NzUxNzk3MzhCODAwOURG
NzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc4QTk3NkQxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZp
bmFsaXplci5oICovOyB9OworCQlBNzhBOTc3NjE3OTczOEI4MDA5REY3NDQgLyogREZHRmluYWxp
emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
OEE5NzZFMTc5NzM4QjgwMDlERjc0NCAvKiBERkdGaW5hbGl6ZXIuY3BwICovOyB9OworCQlBNzhB
OTc3NzE3OTczOEI4MDA5REY3NDQgLyogREZHRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzhBOTc2RjE3OTczOEI4MDA5REY3NDQgLyog
REZHRmluYWxpemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTc4QTk3NzgxNzk3MzhCODAwOURGNzQ0IC8qIERGR0pJVEZpbmFsaXplci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzhBOTc3MDE3
OTczOEI4MDA5REY3NDQgLyogREZHSklURmluYWxpemVyLmNwcCAqLzsgfTsKKwkJQTc4QTk3Nzkx
Nzk3MzhCODAwOURGNzQ0IC8qIERGR0pJVEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4QTk3NzExNzk3MzhCODAwOURGNzQ0IC8qIERG
R0pJVEZpbmFsaXplci5oICovOyB9OworCQlBNzhBOTc3QTE3OTczOEI4MDA5REY3NDQgLyogREZH
UGxhbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzhBOTc3MjE3OTczOEI4MDA5REY3NDQgLyogREZHUGxhbi5jcHAgKi87IH07CisJCUE3OEE5NzdC
MTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzhBOTc3MzE3OTczOEI4MDA5REY3NDQgLyogREZHUGxhbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3OEE5
NzdGMTc5NzM4RDUwMDlERjc0NCAvKiBGVExHZW5lcmF0ZWRGdW5jdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4QTk3N0MxNzk3MzhENTAwOURG
NzQ0IC8qIEZUTEdlbmVyYXRlZEZ1bmN0aW9uLmggKi87IH07CisJCUE3OEE5NzgwMTc5NzM4RDUw
MDlERjc0NCAvKiBGVExKSVRGaW5hbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4QTk3N0QxNzk3MzhENTAwOURGNzQ0IC8qIEZUTEpJVEZp
bmFsaXplci5jcHAgKi87IH07CisJCUE3OEE5NzgxMTc5NzM4RDUwMDlERjc0NCAvKiBGVExKSVRG
aW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3OEE5NzdFMTc5NzM4RDUwMDlERjc0NCAvKiBGVExKSVRGaW5hbGl6ZXIuaCAqLzsgfTsKKwkJ
QTc5MERENkIxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MERENjUxODJG
NDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBNzkw
REQ2QzE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MERENjYxODJGNDk5NzAw
NTg4ODA3IC8qIFNldEl0ZXJhdG9yQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTc5MERENkQxODJG
NDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OTBERDY3MTgyRjQ5OTcwMDU4ODgwNyAv
KiBTZXRJdGVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07CisJCUE3OTBERDZFMTgyRjQ5OTcwMDU4
ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MERENjgxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJh
dG9yUHJvdG90eXBlLmggKi87IH07CisJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1Nl
dEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3OTBERDY5MTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmNwcCAqLzsgfTsK
KwkJQTc5MERENzAxODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OTBERDZBMTgyRjQ5OTcwMDU4
ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggKi87IH07CisJCUE3OTg2RDU3MTdBMEJCMUUwMEE5NURE
MCAvKiBERkdFZGdlVXNlc1N0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc5ODZENTYxN0EwQkIxRTAwQTk1REQwIC8qIERGR0VkZ2VVc2Vz
U3RydWN0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTdBNEFFMDgxNzk3M0IyNjAwNTYxMkIxIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QTRB
RTA3MTc5NzNCMjYwMDU2MTJCMSAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAgKi87IH07
CisJCUE3QTRBRTEwMTc5NzNCNEQwMDU2MTJCMSAvKiBKSVRTdHVic1g4NkNvbW1vbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBNEFFMEMxNzk3M0I0
RDAwNTYxMkIxIC8qIEpJVFN0dWJzWDg2Q29tbW9uLmggKi87IH07CisJCUE3QThBRjM0MTdBREI1
RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlCdWZm
ZXIuY3BwICovOyB9OworCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI2
MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjM2MTdBREI1RjMwMDVBQjE3NCAvKiBB
cnJheUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdBOEFGMjcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAg
Ki87IH07CisJCUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI4MTdB
REI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyog
RmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGMzkxN0FEQjVG
MzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJh
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
QThBRjNBMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJ
bnQ4QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBN0E4QUYzQjE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkMxN0FEQjVGMzAwNUFC
MTc0IC8qIEludDE2QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBN0E4QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkQxN0FE
QjVGMzAwNUFCMTc0IC8qIEludDMyQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUYzRjE3QURCNUYzMDA1QUIxNzQgLyogVWludDhB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdB
OEFGMzAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUY0MDE3QURCNUYzMDA1QUIxNzQg
LyogVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3QThBRjMxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJh
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
QThBRjQxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMzIxN0FEQjVGMzAwNUFCMTc0IC8q
IFVpbnQxNkFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTdBOEFGNDIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYzMzE3QURCNUYz
MDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBN0I0OEY0OTBFRTg5MzZGMDBEQ0JEQjYgLyogRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0I0OERCNjBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAg
Ki87IH07CisJCUE3QjRBQ0FGMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCNEFDQUUxNDg0
QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdCNjAxODIxNjM5RkQyQTAwMzcyQkEzIC8qIFVu
bGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzlFNzgxRjE1RUVDQkE4MDA0N0M4NTUgLyogVW5saW5rZWRDb2RlQmxvY2suaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0JEQUVD
NjE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkRBRUMwMTdGNEVBMTQw
MEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBN0JEQUVD
NzE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0JEQUVDMTE3RjRFQTE0MDBG
NjE0MEMgLyogQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yLmggKi87IH07CisJCUE3QkRBRUM4MTdG
NEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkRBRUMyMTdGNEVBMTQwMEY2MTQw
QyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTdCREFFQzkxN0Y0RUEx
NDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkRBRUMzMTdGNEVBMTQwMEY2MTQwQyAvKiBB
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmggKi87IH07CisJCUE3QkRBRUNBMTdGNEVBMTQwMEY2MTQw
QyAvKiBKU0FycmF5SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdCREFFQzQxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRv
ci5jcHAgKi87IH07CisJCUE3QkRBRUNCMTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkRB
RUM1MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLzsgfTsKKwkJQTdCRkYz
QzAxNzk4Njg5NDAwMDJGNDYyIC8qIERGR0ZpbHRyYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkZGM0JGMTc5ODY4OTQwMDAyRjQ2
MiAvKiBERkdGaWx0cmF0aW9uUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdDMEM0QUMxNjgxMDMwMjAwMTcwMTFEIC8qIEpTU2NyaXB0
UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdDMEM0QUIxNjdDMDhDRDAwMTcwMTFEIC8qIEpTU2NyaXB0UmVmUHJpdmF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QzBDNEFEMTY4
MTA2N0UwMDE3MDExRCAvKiBKU1NjcmlwdFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0MwQzRBQTE2N0MwOENEMDAxNzAxMUQgLyogSlNTY3Jp
cHRSZWYuY3BwICovOyB9OworCQlBN0MxRThFNDExMkU3MkVGMDBBMzdGOTggLyogSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0MxRThDODExMkU3MDFDMDBBMzdGOTggLyogSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAgKi87IH07CisJCUE3QzFFQUVGMTc5ODdBQjYwMDI5OURCMiAvKiBDYWxsRnJhbWVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Mx
RUFFQTE3OTg3QUI2MDAyOTlEQjIgLyogQ2FsbEZyYW1lSW5saW5lcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QzFFQUYwMTc5ODdBQjYwMDI5
OURCMiAvKiBKU1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdDMUVBRUIxNzk4N0FCNjAwMjk5REIyIC8qIEpTU3RhY2tJbmxpbmVz
LmggKi87IH07CisJCUE3QzFFQUYxMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDMUVBRUMx
Nzk4N0FCNjAwMjk5REIyIC8qIFN0YWNrVmlzaXRvci5jcHAgKi87IH07CisJCUE3QzFFQUYyMTc5
ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QzFFQUVEMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zp
c2l0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBN0NBM0FFMzE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUREMTdEQTQx
QUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBN0NBM0FFNDE3
REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FERTE3REE0MUFFMDA2NTM4QUYgLyog
V2Vha01hcENvbnN0cnVjdG9yLmggKi87IH07CisJCUE3Q0EzQUU1MTdEQTQxQUUwMDY1MzhBRiAv
KiBXZWFrTWFwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3Q0EzQURGMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBl
LmNwcCAqLzsgfTsKKwkJQTdDQTNBRTYxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0Ez
QUUwMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggKi87IH07CisJCUE3Q0Ez
QUU3MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTExN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5jcHAgKi87IH07CisJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtN
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0Ez
QUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKKwkJQTdDQTNBRUIxN0RB
NTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFw
RGF0YS5jcHAgKi87IH07CisJCUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNB
RUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0MTg4
MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5
QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0
YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlC
IC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsgfTsK
KwkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTMxN0EwQjhDQzAw
NzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovOyB9OworCQlBN0Q4OUNGMzE3QTBCOENDMDA3
NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcCAqLzsgfTsKKwkJQTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRp
b25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBN0Q4OUNGNTE3QTBCOENDMDA3NzNBRDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFz
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4
OUNFNjE3QTBCOENDMDA3NzNBRDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAg
Ki87IH07CisJCUE3RDg5Q0Y2MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVh
a2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0Q4OUNFNzE3QTBCOENDMDA3NzNBRDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
RDg5Q0Y3MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFODE3QTBCOENDMDA3NzNB
RDggLyogREZHRmx1c2hGb3JtYXQuY3BwICovOyB9OworCQlBN0Q4OUNGODE3QTBCOENDMDA3NzNB
RDggLyogREZHRmx1c2hGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3RDg5Q0U5MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDg5
Q0ZCMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRUMxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgKi87IH07CisJCUE3RDg5
Q0ZDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0VEMTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Q4OUNGRDE3QTBCOENDMDA3NzNBRDgg
LyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFRTE3QTBCOENDMDA3NzNBRDggLyog
REZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAgKi87IH07CisJCUE3RDg5Q0ZFMTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFRjE3QTBCOEND
MDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDg5Q0ZGMTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRjAxN0EwQjhDQzAwNzczQUQ4IC8qIERG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgKi87IH07CisJCUE3RDg5RDAwMTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0YxMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252
ZXJzaW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBN0Q4OUQwMjE3QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlEMDEx
N0EwQjkwNDAwNzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Q5QTI5NDE3QTBCQzc0MDBFRTI2
MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q5QTI4RjE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRU
YWlsQWJzdHJhY3RTdGF0ZS5jcHAgKi87IH07CisJCUE3RDlBMjk1MTdBMEJDNzQwMEVFMjYxOCAv
KiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0Q5QTI5MDE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWlsQWJz
dHJhY3RTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUE3RDlBMjk2MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdFZGdlRG9taW5hdGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q5QTI5MTE3QTBC
Qzc0MDBFRTI2MTggLyogREZHRWRnZURvbWluYXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDlBMjk3MTdBMEJDNzQwMEVFMjYxOCAvKiBE
RkdMSUNNUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdEOUEyOTIxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0xJQ01QaGFzZS5jcHAgKi87IH07
CisJCUE3RDlBMjk4MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDlBMjkzMTdBMEJDNzQwMEVF
MjYxOCAvKiBERkdMSUNNUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlBN0RDQjk3MzEyRTUxOTNGMDA5MTE5NDAgLyogV3JpdGVCYXJyaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0RDQjc3
OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdFMkVBNkIwRkI0NjBDRjAwNjAxRjA2IC8q
IExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi87IH07
CisJCUE3RTJFQTZDMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTJFQTZBMEZCNDYwQ0Yw
MDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCAqLzsgfTsKKwkJQTdFNUEzQTcxNzk3NDMyRDAw
RTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTVBM0E1MTc5NzQzMkQwMEU4OTNDMCAvKiBDb21waWxh
dGlvblJlc3VsdC5jcHAgKi87IH07CisJCUE3RTVBM0E4MTc5NzQzMkQwMEU4OTNDMCAvKiBDb21w
aWxhdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdFNUEzQTYxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdFNUFCMzcx
Nzk5RTRCMjAwRDI4MzNEIC8qIExMVk1EaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdFNUFCMzMxNzk5RTRCMjAwRDI4MzNEIC8q
IExMVk1EaXNhc3NlbWJsZXIuY3BwICovOyB9OworCQlBN0U1QUIzODE3OTlFNEIyMDBEMjgzM0Qg
LyogTExWTURpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdFNUFCMzQxNzk5RTRCMjAwRDI4MzNEIC8qIExMVk1EaXNhc3NlbWJsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0U1
QUIzOTE3OTlFNEIyMDBEMjgzM0QgLyogVURpczg2RGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0U1QUIzNTE3OTlFNEIyMDBEMjgz
M0QgLyogVURpczg2RGlzYXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdFNUFCM0ExNzk5RTRCMjAwRDI4MzNEIC8qIFg4NkRpc2Fz
c2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0U1QUIzNjE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsK
KwkJQTdGMjk5NkIxN0EwQkI2NzAwMTA0MTdBIC8qIEZUTEZhaWwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGMjk5NjkxN0EwQkI2NzAwMTA0MTdB
IC8qIEZUTEZhaWwuY3BwICovOyB9OworCQlBN0YyOTk2QzE3QTBCQjY3MDAxMDQxN0EgLyogRlRM
RmFpbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdG
Mjk5NkExN0EwQkI2NzAwMTA0MTdBIC8qIEZUTEZhaWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Y5OTM1RjBGRDczMjUxMDBBMEIyRDAgLyog
SlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdGOTkzNUQwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Y5OTM2MDBGRDczMjUxMDBB
MEIyRDAgLyogSlNPTk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Y5OTM1RTBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5jcHAg
Ki87IH07CisJCUE3RkI2MEE0MTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGQjYw
QTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi87IH07CisJCUE3
RkI2MTAwMTA0MEMzOEIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RkI2MDRCMTAzRjVFQUIwMDE3
QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlBN0ZDQzI2RDE3QTBCNkFBMDA3ODZEMUEgLyogRlRMU3dp
dGNoQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdGQ0MyNkMxN0EwQjZBQTAwNzg2RDFBIC8qIEZUTFN3aXRjaENhc2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBOEE0NzQ4RTE1MUE4MzA2MDA0
MTIzRkYgLyogbGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEE0NzQ4RDE1MUE4MzA2MDA0MTIzRkYgLyogbGliV1RGLmEgKi87IH07CisJ
CUFEREIxRjYzMThENzdEQkUwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRERCMUY2MjE4RDc3REI3MDA5QjU4
QTggLyogT3BhcXVlUm9vdFNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMUNG
MDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQcm9wZXJ0eVRhYmxlLmNwcCAqLzsgfTsKKwkJQjU5Rjg5
MzkxODkxRjI5RjAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU5Rjg5MzgxODkxQURC
NTAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwICovOyB9OworCQlCQzAy
RTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5MDUwRTE4MzlEQjAwMEY5Mjk3
IC8qIEVycm9yQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQkMwMkU5MEYwRTE4MzlEQjAwMEY5Mjk3
IC8qIEVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzAyRTkwNzBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzAyRTkx
MTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5MDkwRTE4MzlEQjAwMEY5
Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQkMwMkU5MTMwRTE4MzlE
QjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwQjBFMTgzOURCMDAwRjkyOTcgLyogTmF0
aXZlRXJyb3JQcm90b3R5cGUuaCAqLzsgfTsKKwkJQkMwMkU5OEQwRTE4M0UzODAwMEY5Mjk3IC8q
IEVycm9ySW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMDJFOThCMEUxODNFMzgwMDBGOTI5NyAvKiBFcnJvckluc3RhbmNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxMTY2MDIwRTE5
OTdCNDAwODA2NkREIC8qIERhdGVJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMTY2MDEwRTE5OTdCMTAwODA2NkREIC8qIERhdGVJbnN0
YW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUJDMTE2NjdCMEUxOTlDMDUwMDgwNjZERCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzExNjY3QTBFMTk5QzA1MDA4
MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUJDMTE2N0RBMEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTE2N0Q4
MEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzNFNTBFMTZGNUNEMDBCMzQ0NjAgLyogQVBJQ2Fz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MkI3
OEEwQTQzMDVBQjAwNTE3Q0ZDIC8qIEFQSUNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJy
YXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM3OTUyMDcwRTE1RThBODAwQTg5OEFCIC8qIEFycmF5Q29uc3RydWN0b3IuaCAqLzsg
fTsKKwkJQkMxOEMzRTcwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg0RTAyNTU1OTdE
MDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzNFQzBFMTZGNUNEMDBCMzQ0NjAgLyogQm9vbGVh
bk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzA0RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzNFRDBFMTZGNUNEMDBC
MzQ0NjAgLyogQ2FsbERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxsRGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDM0YzMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBDb21tb25JZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFQTczNjMwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1v
bklkZW50aWZpZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQkMxOEMzRjQwRTE2RjVDRDAwQjM0NDYwIC8qIENvbXBsZXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1QkIyQkM1MDMwRjc3MjEw
MUZDRkUxRCAvKiBDb21wbGV0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEMzRjUwRTE2RjVDRDAwQjM0NDYwIC8qIGNvbmZpZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY4RUJCOEMwMjU1
RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUJDMThDM0Y2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb25zdHJ1Y3RE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhG
M0NDRjBEQUYxN0JBMDA1NzdBODAgLyogQ29uc3RydWN0RGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDM0ZBMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBEZWJ1Z2dlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjY5MkE4NTkwMjU1NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEMzRkIwRTE2RjVDRDAw
QjM0NDYwIC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgwREI5QjBEREMyMjdGMDAzQ0ZERjIgLyogRGVidWdnZXJD
YWxsRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlCQzE4QzQwMDBFMTZGNUNEMDBCMzQ0NjAgLyogRXhjZXB0aW9uSGVscGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyNzAxQjMwREFERTk0
OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQwNDBFMTZGNUNEMDBCMzQ0NjAgLyogRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMyNjgwQzEwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4
QzQwNTBFMTZGNUNEMDBCMzQ0NjAgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODVEMDI1NTU5N0QwMUZGNjBG
NyAvKiBGdW5jdGlvblByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNBMzQ5
QTAzOEFFN0M2MDA4NjM1Q0UgLyogSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDEwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJ
bml0aWFsaXplVGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTc4NjMzRjBEOUJFQzAwMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJD
MThDNDEzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FBOEI0QTBEMzJDMzlBMDA0MUJDRkYgLyog
SmF2YVNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKKwkJQkMxOEM0MTQwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FBOEI0QjBEMzJDMzlB
MDA0MUJDRkYgLyogSmF2YVNjcmlwdENvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQdWJsaWMsICk7IH07IH07CisJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2Ny
aXB0Q29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4Lmgg
Ki87IH07CisJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FjdGl2YXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0REE4MThFMEQ5OUZE
MjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
ICgpOyB9OyB9OworCQlCQzE4QzQxNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBcnJheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM4NzcyRTUwMzhCRkUx
OTAwODYzNUNFIC8qIEpTQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlCQzE4QzQxODBFMTZGNUNEMDBCMzQ0NjAgLyogSlNCYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI3MTEzODBBNDYw
QkJCMDA4MEVFRUEgLyogSlNCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVi
bGljLCApOyB9OyB9OworCQlCQzE4QzQxOTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxsYmFja0Nv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDQwRjhBQzBBNTA4RDIwMDAwNUYwNjEgLyogSlNDYWxsYmFja0NvbnN0cnVjdG9yLmggKi87
IH07CisJCUJDMThDNDFBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDBGODhGMEE1
MDhCMTAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCAqLzsgfTsKKwkJQkMxOEM0MUIw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QUJERjVEMEE0MzdGRUYwMEVDQ0EwMSAvKiBK
U0NhbGxiYWNrT2JqZWN0LmggKi87IH07CisJCUJDMThDNDFDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBK
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEU4OTQzMTBDRDA2MDI0MDAzNjcxNzkgLyogSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oICovOyB9OworCQlCQzE4QzQxRDBFMTZGNUNEMDBCMzQ0NjAgLyogSlND
bGFzc1JlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQ0MEZDRTEwQTUxRTQ2QjAwMDVGMDYxIC8qIEpTQ2xhc3NSZWYuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQxRTBFMTZGNUNEMDBCMzQ0
NjAgLyogSlNDb250ZXh0UmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNEJENUEyQTBBM0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlCQzE4QzQxRjBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NUYwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlC
QzE4QzQyMDBFMTZGNUNEMDBCMzQ0NjAgLyogVk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDIx
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0dsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThFODk0MzMwQ0QwNjAzRjAwMzY3MTc5IC8qIEpT
R2xvYmFsT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFQTRDOUEwOTJBRjlFMjAwOTNE
ODAwIC8qIEpTTG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUJDMThDNDI0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU09iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMkEzOTkwRTE2RTE0ODAw
QUYyMUM4IC8qIEpTT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQkMxOEM0MjUwRTE2RjVDRDAwQjM0NDYwIC8qIEpTT2JqZWN0UmVmLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgyQjdFMTBB
NDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQdWJsaWMsICk7IH07IH07CisJCUJDMThDNDI2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1Jl
dGFpblB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTVDMThEM0UwQzkwRTdFRjAwRTcyRjczIC8qIEpTUmV0YWluUHRyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0MjcwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNjkyQTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQyODBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNTdHJpbmdSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0ODJCNzRCMEE0MzAzMjgwMDUxN0NGQyAvKiBKU1N0cmluZ1JlZi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJQkMxOEM0
MjkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NkFBQjJBMEI2NkE4NDkwMEU1NUYxNiAvKiBK
U1N0cmluZ1JlZkNGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OworCQlCQzE4QzQyQTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEFCQjQ1NDA5OUMyQTBGMDBFMkEy
NEYgLyogSlNUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQkMxOEM0MkIwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ0pTVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QUJCMzZFMDk5QzA3NjQw
MEUyQTI0RiAvKiBKU0NKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0MkMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFsdWVSZWYu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODJCNkVB
MEE0MzAwQjMwMDUxN0NGQyAvKiBKU1ZhbHVlUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OworCQlCQzE4QzQyRDBFMTZGNUNEMDBCMzQ0NjAgLyogSlNW
YXJpYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTRGMjUyNTYwRDA4REQ4RDAwNEVDRkZGIC8qIEpTVmFyaWFibGVPYmplY3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQyRTBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNXcmFwcGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUM3QTE3MjBBOEVBQUNCMDBGQTM3RUEgLyogSlNX
cmFwcGVyT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQkMxOEM0MzEwRTE2RjVDRDAwQjM0NDYwIC8qIExleGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg2NjAyNTU1OTdEMDFGRjYw
RjcgLyogTGV4ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlCQzE4QzQzNzBFMTZGNUNEMDBCMzQ0NjAgLyogTG9va3VwLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg2OTAyNTU1OTdEMDFGRjYw
RjcgLyogTG9va3VwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQkMxOEM0M0MwRTE2RjVDRDAwQjM0NDYwIC8qIE1hdGhPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODZCMDI1NTU5N0Qw
MUZGNjBGNyAvKiBNYXRoT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0M0YwRTE2RjVDRDAwQjM0NDYwIC8qIE5vZGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg2RTAyNTU1
OTdEMDFGRjYwRjcgLyogTm9kZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlCQzE4QzQ0MTBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MjY4MEMzMEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oICovOyB9OworCQlC
QzE4QzQ0MjBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0b3IubHV0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBFNjBFMTZENTIz
MDBBMDZFOTIgLyogTnVtYmVyQ29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUJDMThDNDQzMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODcxMDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlCQzE4QzQ0NDBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDNTBFMTZENEU5MDBB
MDZFOTIgLyogTnVtYmVyUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0NDUwRTE2RjVDRDAwQjM0NDYwIC8qIE9iamVjdENv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzI2ODBDNzBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0Q29uc3RydWN0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQ0NjBFMTZG
NUNEMDBCMzQ0NjAgLyogT2JqZWN0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2ODBDOTBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0
UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQkMxOEM0NDgwRTE2RjVDRDAwQjM0NDYwIC8qIE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODc4MDI1NTU5N0QwMUZG
NjBGNyAvKiBPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQkMxOEM0NEIwRTE2RjVDRDAwQjM0NDYwIC8qIFBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGMEIzQUEwOUJCNERD
MDAwNjhGQ0UzIC8qIFBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUJDMThDNDUwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTc0MkY2NDBERDEx
RjVBMDAwOTE3RkIgLyogUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUJDMThDNDUxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlTm9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBQjgz
NTUwREE0M0I0NDAwQkM4M0YzIC8qIFByb2ZpbGVOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0NTIwRTE2RjVDRDAwQjM0NDYwIC8q
IExlZ2FjeVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NUFCODMyRjBEQTQyQ0FEMDBCQzgzRjMgLyogTGVnYWN5UHJvZmlsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQ1NDBF
MTZGNUNEMDBCMzQ0NjAgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDAwQzEwMEE2OUJBRjIwMDUwOTg4NyAvKiBQ
cm9wZXJ0eU5hbWVBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUJDMThDNDU1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9wZXJ0eVNsb3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjIxRTZDMDg5
RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAgLyogUHJv
dGVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVD
MDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQ1QTBFMTZGNUNEMDBCMzQ0NjAgLyog
UmVnRXhwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NjkyQTg3RTAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0NUIwRTE2RjVDRDAwQjM0NDYwIC8q
IFJlZ0V4cE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjY5MkE4N0MwMjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cE9iamVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDVEMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ5QjI0RkYwRDhBRjZEMTAwOUNCOEM3IC8qIFJlZ2lzdGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0NUUw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDc5MjY0MERBQTAzRkIwMDFBOUYwNSAvKiBKU1N0YWNrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0
NjMwRTE2RjVDRDAwQjM0NDYwIC8qIFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUU4NjZFRDBERDU5QUZBMDBBMkIyQTEgLyog
U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlCQzE4QzQ2NDBFMTZGNUNEMDBCMzQ0NjAgLyogU291cmNlQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFODY2RUUwREQ1OUFG
QTAwQTJCMkExIC8qIFNvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQ2NjBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMThDM0MxMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5oICovOyB9Owor
CQlCQzE4QzQ2ODBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDMzBFMTZFRTMzMDBCMzQ0
NjAgLyogU3RyaW5nT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQkMxOEM0NkEwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEMz
QzYwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDZCMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBTeW1ib2xUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRBMzk2QTYwQ0QyOTMzMTAwQjVCNEZGIC8qIFN5bWJvbFRhYmxlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0N0EwRTE2
RjVDRDAwQjM0NDYwIC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURFM0QwRjQwREQ4RERGQjAwNDY4NzE0IC8qIFdl
YktpdEF2YWlsYWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKKwkJQkMxOEM1MjQwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEM1
MjMwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovOyB9OworCQlCQzE4
QzUyQzBFMTZGQ0QyMDBCMzQ0NjAgLyogUmVnRXhwT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEM1MkIwRTE2RkNEMjAwQjM0NDYw
IC8qIFJlZ0V4cE9iamVjdC5sdXQuaCAqLzsgfTsKKwkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0NDYw
IC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovOyB9OworCQlC
QzI1N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNjBFMUY1MUM1MDAxNkI2QzkgLyog
QXJndW1lbnRzLmggKi87IH07CisJCUJDMzA0NjA3MEUxRjQ5N0YwMDMyMzJDRiAvKiBFcnJvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMDQ2MDYw
RTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMzMTM1NjQwRjMwMkZBMzAwM0RGRDNBIC8qIERlYnVnZ2Vy
QWN0aXZhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMzMTM1NjIwRjMwMkZBMzAwM0RGRDNBIC8qIERlYnVnZ2VyQWN0aXZhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMzEzNTY1MEYz
MDJGQTMwMDNERkQzQSAvKiBEZWJ1Z2dlckFjdGl2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMTM1NjMwRjMwMkZBMzAwM0RGRDNBIC8q
IERlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgKi87IH07CisJCUJDNkFBQUU1MEUxRjQyNjUwMEFEODdE
OCAvKiBDbGFzc0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNkFBQUU0MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzc1NkZDOTBFMjAzMUIy
MDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzU2RkM3MEUyMDMxQjIwMERFN0QxMiAvKiBK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oICovOyB9OworCQlCQzg3Q0RCOTEwNzEyQUQ0MDAwNjE0
Q0YgLyogSlNPTk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDODdDREI4MTA3MTJBQ0EwMDA2MTRDRiAvKiBKU09OT2JqZWN0Lmx1dC5o
ICovOyB9OworCQlCQzkwNDE0ODBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzkwNDE0NzBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkM5NTQzN0Qw
RUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5TWFwSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMg
LyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlCQ0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JF
MkNBRDE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNDRjBEMDgwRUYwQUFCOTAwNDEzQzhG
IC8qIFN0cnVjdHVyZVN0dWJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0NGMEQwNzBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1Yklu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlC
Q0NGMEQwQzBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDRjBEMEIwRUYwQjhBNTAw
NDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCAqLzsgfTsKKwkJQkNEMjAyQzIwRTE3MDZB
NzAwMkM3RTgyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QyMDJCRTBFMTcwNkE3MDAyQzdFODIgLyogUmVnRXhw
Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQkNEMjAyQzQwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4
cFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNEMjAyQzAwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cFByb3RvdHlwZS5oICovOyB9Owor
CQlCQ0QyMDJENjBFMTcwNzA4MDAyQzdFODIgLyogUmVnRXhwQ29uc3RydWN0b3IubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QyMDJENTBFMTcw
NzA4MDAyQzdFODIgLyogUmVnRXhwQ29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUJDRDIwMzRB
MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDIwMzQ2MEUxNzEzNUUwMDJDN0U4MiAvKiBE
YXRlQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQkNEMjAzNEMwRTE3MTM1RTAwMkM3RTgyIC8qIERh
dGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi87IH07CisJ
CUJDRDIwM0U4MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMjAzRTcwRTE3MThGNDAw
MkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi87IH07CisJCUJDREQ1MUVCMEZCOERGNzQw
MDRBOEJEQyAvKiBKSVRPcGNvZGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDREQ1MUU5MEZCOERGNzQwMDRBOEJEQyAvKiBKSVRPcGNvZGVzLmNw
cCAqLzsgfTsKKwkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNERTNBQjEwRTZDODJD
RjAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUJDREUzQjQzMEU2QzgzMkQwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNERTNB
QjAwRTZDODJDRjAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgKi87IH07CisJCUJDRjYwNTE0MEUy
MDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDRkQ4Qzky
MEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBU
YWJsZS5jcHAgKi87IH07CisJCUJDRkQ4QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4Qzkx
MEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjBCMjU5OTE3MDY1MzYyMDBDMjFGNEUgLyogUmVn
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjBC
MjU5ODE3MDY1MzYyMDBDMjFGNEUgLyogUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzIwQkE5MkQxNkJCMUMxNTAwQjNBRUEyIC8qIFN0
cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzIwQkE5MkMxNkJCMUMxNTAwQjNBRUEyIC8qIFN0cnVjdHVyZVJhcmVE
YXRhSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUMyMTEyMkUxMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIxMTIyREUx
NUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAgKi87IH07CisJCUMyMTEy
MkUyMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTEyMkRGMTVERDlBQjMwMDc5MEUz
QSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlDMjE2MEZFNzE1RjdFOTVFMDA5NDJERkMgLyogU2xvdFZpc2l0
b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkNCNDA4NTE1QzBBM0MzMDA0ODkzMkIgLyogU2xvdFZpc2l0b3JJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzIxODFGQzIxOEE5
NDhGQjAwMjVBMjM1IC8qIEpTRXhwb3J0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjE4MUZDMTE4QTk0OEZCMDAyNUEyMzUgLyogSlNFeHBv
cnRUZXN0cy5tbSAqLzsgfTsKKwkJQzIxOEQxNDAxNjU1Q0ZENTAwNjJCQjgxIC8qIENvcHlXb3Jr
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIx
OEQxM0YxNjU1Q0ZENTAwNjJCQjgxIC8qIENvcHlXb3JrTGlzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyMjM5RDE3MTYyNjJCREQwMDVBQzVG
RCAvKiBDb3B5VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMjIzOUQxMjE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3IuY3BwICov
OyB9OworCQlDMjIzOUQxODE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMjM5RDEzMTYyNjJCREQw
MDVBQzVGRCAvKiBDb3B5VmlzaXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUMyMjM5RDE5MTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5VmlzaXRv
cklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMyMjM5RDE0MTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5VmlzaXRvcklubGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjIzOUQxQTE2MjYy
QkREMDA1QUM1RkQgLyogR0NUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzIyMzlEMTUxNjI2MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmNw
cCAqLzsgfTsKKwkJQzIyMzlEMUIxNjI2MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjIzOUQxNjE2MjYyQkRE
MDA1QUM1RkQgLyogR0NUaHJlYWQuaCAqLzsgfTsKKwkJQzIyNTQ5NDMxNUY3REJBQTAwNjVFODk4
IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi87
IH07CisJCUMyMkIzMUI5MTQwNTc3RDcwMERCNDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZE
RDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyogQ29w
aWVkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLzsgfTsKKwkJ
QzI0RDMxRTIxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUwMTYxQ0Q2OTUwMDJB
QTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi87IH07CisJCUMyNEQzMUUzMTYxQ0Q2OTUwMDJB
QTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzI0RDMxRTExNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzI1
RDcwOUIxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RDcwOTkxNkRFOTlGNDAwRkNBNkJD
IC8qIEpTTWFuYWdlZFZhbHVlLm1tICovOyB9OworCQlDMjVENzA5QzE2REU5OUY0MDBGQ0E2QkMg
LyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJQzI1RjhCQ0Qx
NTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEg
LyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLzsgfTsKKwkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1
QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFs
U3dlZXBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUMyODMxOTAwMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MzE4RkYxNkZFNEI3RDAwMTU3
QkZEIC8qIEhhbmRsZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQzI4MzE5MDIxNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4
MzE5MDExNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovOyB9OworCQlD
Mjg4QjJERTE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4OEIyREQxOEE1NEQzRTAwN0JFNDBCIC8q
IERhdGVUZXN0cy5tbSAqLzsgfTsKKwkJQzI5ODFGRDgxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rl
c2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjk4MUZENjE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtS
ZWZlcmVuY2VzLmNwcCAqLzsgfTsKKwkJQzI5ODFGRDkxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rl
c2lyZWRXZWFrUmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzI5ODFGRDcxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVm
ZXJlbmNlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUMyOTgxRkRDMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZE
QTE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwICovOyB9Owor
CQlDMjk4MUZERDE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkRCMTdC
QUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyOUVDQjAzMTgwNEQwRUQwMEQy
Q0JCNCAvKiBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOUVDQjAxMTgwNEQwRUQwMEQyQ0JC
NCAvKiBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbSAqLzsgfTsKKwkJQzJBN0Y2
ODgxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkE3RjY4NzE2MDQzMkQ0MDBGNzZC
OTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlDMkI2RDc1MzE4QTMzNzkzMDA0QTkzMDEgLyogV3JpdGVC
YXJyaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmllcklubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMkI5MTZD
MjE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyog
TWFya2VkQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZD
NDE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLzsgfTsKKwkJQzJDMEY3
Q0QxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkMwRjdDQjE3QkJGQzVCMDA0
NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCAqLzsgfTsKKwkJQzJDMEY3Q0UxN0JC
RkM1QjAwNDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDMEY3Q0MxN0JCRkM1QjAwNDY0RkU0IC8q
IERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3BpZWRTcGFj
ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMkM4RDAzMDE0QTND
RUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9j
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMy
QzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBI
ZWFwQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDMkNGMzlDMTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDRjM5QkYxNkUx
NUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSAqLzsgfTsKKwkJQzJDRjM5QzIx
NkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8q
IEpTQVBJV3JhcHBlck9iamVjdC5oICovOyB9OworCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYg
LyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyREE3NzgyMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyREY0NDJGMTcwN0FD
MDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMkRGNDQyRDE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdp
b24uY3BwICovOyB9OworCQlDMkRGNDQzMDE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyREY0NDJF
MTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyRTUyNkJEMTU5MEVGMDAwMDU0RTQ4RCAvKiBI
ZWFwVGltZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzJFNTI2QkIxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgKi87IH07CisJCUMy
RTUyNkJFMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRTUyNkJDMTU5MEVGMDAwMDU0RTQ4RCAvKiBI
ZWFwVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDMkVBQTNGQTE0OUE4MzVFMDBGQ0UxMTIgLyogQ29waWVkU3BhY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRUFBM0Y4MTQ5QTgzMDgwMEZD
RTExMiAvKiBDb3BpZWRTcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRUFE
MkZCMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMkYwRjJEMTE2QkFFRUU5MDAxODdD
MTkgLyogU3RydWN0dXJlUmFyZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzJGMEYyRDAxNkJBRUVFOTAwMTg3QzE5IC8qIFN0cnVjdHVyZVJh
cmVEYXRhLmNwcCAqLzsgfTsKKwkJQzJGQzlCRDMxNjY0NERGQjAwODEwRDMzIC8qIENvcGllZEJs
b2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzJGQzlCRDIxNjY0NERGQjAwODEwRDMzIC8qIENvcGllZEJsb2NrSW5saW5lcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyRkNBRTEwMTdB
OUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUJhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJGQ0FFMEMxN0E5QzI0RTAwMzRDNzM1IC8q
IEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAgKi87IH07CisJCUMyRkNBRTExMTdBOUMyNEUwMDM0Qzcz
NSAvKiBCeXRlY29kZUJhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyRkNBRTBEMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUJhc2lj
QmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlDMkZDQUUxMjE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRkNBRTBF
MTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwICovOyB9Owor
CQlDMkZDQUUxMzE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkZDQUUwRjE3
QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzJGRTE4QTQxNkJBRUM0MDAw
QUYzMDYxIC8qIFN0cnVjdHVyZVJhcmVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMkZFMThBMzE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0dXJl
UmFyZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1MEU1NTU3NzUw
MDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUUxMjRBOEY4MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVK
U1N0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovOyB9Owor
CQlFMTc4NjM2RDBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTc4NjM2QzBEOUJF
RUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi87IH07CisJCUUxOEUzQTU5
MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovOyB9
OworCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1NTEy
RUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi87IH07CisJCUU0OURD
MTZDMTJFRjI5NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1MTEyRUYyNzIyMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJ
dGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUIxNUYwNEE5NTAwREYzNDMw
IC8qIExMSW50Q0xvb3AuY3BwICovOyB9OworCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyog
TExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTRBMzMxRjE1QkQyRTA3MDA2
RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU0QTMzMUQxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNw
cCAqLzsgfTsKKwkJRkU0QTMzMjAxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRBMzMxRTE1QkQy
RTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlGRTUyNDhGOTE5MTQ0MkQ5MDBCN0ZERTQgLyogVmFyaWFi
bGVXYXRjaHBvaW50U2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU1MjQ4RjgxOTE0NDJEOTAwQjdGREU0IC8qIFZhcmlhYmxlV2F0Y2hw
b2ludFNldElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlGRTU5MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE1MTgz
QzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwICovOyB9OworCQlGRTU5MzJBODE4M0M1
QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAv
KiBCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRkVBMDg2MjExODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2MUYx
ODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFQjU4QzE0MTg3QjhCMTYwMDk4RUYw
QiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVCNThDMTIxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxp
bmdTY29wZS5jcHAgKi87IH07CisJCUZFQjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhh
bmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFQjU4QzEzMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUQyODdCMjE1
RUM5QTU3MDBEQTgxNjEgLyogTExJbnRPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDI4N0IxMTVFQzlBNTcwMERBODE2MSAvKiBMTEludE9w
Y29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQg
LyogV2F0Y2hkb2cuY3BwICovOyB9OworCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0
Y2hkb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFRDk0RjMwMTcxRTNFMjMwMEJFNzdBNCAv
KiBXYXRjaGRvZ01hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICovOyB9
OworCQlGRUY2ODM1RTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjY4MzVBMTc0MzQzQ0MwMEEz
MkUyNSAvKiBKSVRTdHVic0FSTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUZFRjY4MzVGMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUY2ODM1
QjE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFRjY4MzYwMTc0MzQzQ0MwMEEzMkUyNSAv
KiBKSVRTdHVic1g4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVGNjgzNUMxNzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzWDg2XzY0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVGNjgzNjEx
NzQzNDNDQzAwQTMyRTI1IC8qIEpJVFN0dWJzWDg2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUY2ODM1RDE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1
YnNYODYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
LyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGQ0VGQUJDMTgwNUQ2NjMwMDQ3MkNFNCAvKiBQQlhDb250
YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJ
CQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBv
YmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAw
RkNFRkFCNTE4MDVENjE2MDA0NzJDRTQ7CisJCQlyZW1vdGVJbmZvID0gbGx2bUZvckpTQzsKKwkJ
fTsKKwkJMEZGOTIyRDIxNEY0NkIyRjAwNDFBMjRFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MEE5MTRCQTdGRDkw
MEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0cyI7CisJCX07CisJCTU1NDA3
NTY0MThEQTU4QUQwMEVGRjdGMiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAx
OworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRkNFRkFCNTE4MDVENjE2MDA0NzJDRTQ7CisJ
CQlyZW1vdGVJbmZvID0gbGx2bUZvckpTQzsKKwkJfTsKKwkJNTU0MDc1NjYxOERBNThBRDAwRUZG
N0YyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9i
YWxJRFN0cmluZyA9IDY1Nzg4QTlEMThCNDA5RUIwMEMxODlGRjsKKwkJCXJlbW90ZUluZm8gPSAi
T2ZmbGluZSBBc3NlbWJsZXIiOworCQl9OworCQk1NTQwNzU2ODE4REE1OEFEMDBFRkY3RjIgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFBy
b2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCOworCQkJcmVtb3RlSW5mbyA9ICJHZW5lcmF0
ZSBEZXJpdmVkIFNvdXJjZXMiOworCQl9OworCQk1NUY4RkMyQjE4RUI5MzdCMDA3ODNFNkUgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFBy
b2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gNTU0MDc1NjIxOERBNThBRDAwRUZGN0YyOworCQkJcmVtb3RlSW5mbyA9IENvbXBpbGVS
dW50aW1lVG9MTFZNSVI7CisJCX07CisJCTVENjlFOTExMTUyQkU1NDcwMDI4RDcyMCAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7
CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVj
dCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcg
PSA5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzU7CisJCQlyZW1vdGVJbmZvID0ganNjOworCQl9Owor
CQk1RDZCMkE0RTE1MkI5RTIzMDA1MjMxREUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0g
eworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0g
MDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlU
eXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgw
MjU1OworCQkJcmVtb3RlSW5mbyA9IG1pbmlkb207CisJCX07CisJCTVENkIyQTUwMTUyQjlFMjMw
MDUyMzFERSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250
YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAy
QUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3Rl
R2xvYmFsSURTdHJpbmcgPSAxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUM7CisJCQlyZW1vdGVJbmZv
ID0gdGVzdGFwaTsKKwkJfTsKKwkJNUQ2QjJBNTQxNTJCOUUyMzAwNTIzMURFIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJ
CWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDY1
MTEyMkY3MTQwNDZBNEMwMDJCMTAxRDsKKwkJCXJlbW90ZUluZm8gPSB0ZXN0UmVnRXhwOworCQl9
OworCQk1RDZCMkE1NjE1MkI5RTJFMDA1MjMxREUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICov
ID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFs
ID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJv
eHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNUQ2QjJBNDcxNTJCOUUxNzAw
NTIzMURFOworCQkJcmVtb3RlSW5mbyA9ICJUZXN0IFRvb2xzIjsKKwkJfTsKKwkJNjUyNDRCRDIx
OEVDQjUwMDAwMTBCNzA4IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJ
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQjsKKwkJCXJl
bW90ZUluZm8gPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKKwkJNjU0NDJENEYxOEVCQjc0NDAw
N0FGOTJGIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQjsKKwkJCXJlbW90ZUluZm8g
PSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKKwkJNjU3ODhBOUYxOEI0MDlFQjAwQzE4OUZGIC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Q
cm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQ
cm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0
cmluZyA9IDBGRjkyMkMzMTRGNDZCMTMwMDQxQTI0RTsKKwkJCXJlbW90ZUluZm8gPSBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisJCX07CisJCTY1Nzg4QUFBMThCNDBBM0IwMEMxODlGRiAvKiBQ
QlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJv
eHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJv
amVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJp
bmcgPSA2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUI7CisJCQlyZW1vdGVJbmZvID0gIkRlcml2ZWQg
U291cmNlcyI7CisJCX07CisJCTY1Nzg4QUFDMThCNDBBN0IwMEMxODlGRiAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA2NTc4
OEE5RDE4QjQwOUVCMDBDMTg5RkY7CisJCQlyZW1vdGVJbmZvID0gIk9mZmxpbmUgQXNzZW1ibGVy
IjsKKwkJfTsKKwkJNjVGQjNGN0QwOUQxMUVGMzAwRjQ5REVCIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5l
clBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsK
KwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDY1RkIzRjY2MDlE
MTFFOTEwMEY0OURFQjsKKwkJCXJlbW90ZUluZm8gPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2Vz
IjsKKwkJfTsKKwkJOTMyRjVCRTYwODIyQTFDNzAwNzM2OTc1IC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5l
clBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsK
KwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDkzMkY1QjNFMDgy
MkExQzcwMDczNjk3NTsKKwkJCXJlbW90ZUluZm8gPSAiSmF2YVNjcmlwdENvcmUgKFVwZ3JhZGVk
KSI7CisJCX07CisvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKworLyog
QmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTVEQkIxNTExMTMxRDBC
MTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0geworCQkJaXNhID0gUEJYQ29w
eUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOworCQkJZHN0UGF0aCA9
ICIiOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OworCQkJZmlsZXMgPSAoCisJCQkJNURCQjE1
MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAq
LywKKwkJCSk7CisJCQluYW1lID0gIkNvcHkgU3VwcG9ydCBTY3JpcHQiOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCTVEQkIxNTI0MTMxRDBCQTEw
MDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0geworCQkJaXNhID0gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQ
YXRoID0gIiI7CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJCQk1
REJCMTUyNTEzMUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBvcnQgU2Ny
aXB0ICovLAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBTdXBwb3J0IFNjcmlwdCI7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCisJCTBGMDMzMkJGMThBREZBRTEwMDVGOTc5QSAvKiBFeGl0aW5nSklUVHlwZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGl0aW5nSklUVHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMDMzMkMxMThCMDE3NjMwMDVGOTc5
QSAvKiBHZXRCeUlkVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZXRCeUlkVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MDMzMkMyMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHZXRCeUlkVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjAzMzJDNTE4QjUzRkE5MDA1Rjk3OUEgLyogRlRMV2VpZ2h0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFdlaWdodC5oOyBwYXRoID0gZnRsL0ZUTFdl
aWdodC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjAzMzJDNzE4QjU0NkVDMDA1
Rjk3OUEgLyogRlRMV2VpZ2h0ZWRUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRlRMV2VpZ2h0ZWRUYXJnZXQuaDsgcGF0aCA9IGZ0bC9GVExXZWlnaHRlZFRhcmdldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjA1QzNCMjE2ODNDRjhGMDBCQUY0NUIg
LyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmg7IHBhdGggPSBkZmcvREZH
QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjA3NzZCRDE0RkYwMDI4MDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQ29tcGlsYXRpb25FZmZvcnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50
VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBs
bGludC9MTEludFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODNB
NTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgz
QTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxM
aW5rSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsTGlu
a0luZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODNBRjE0QkNGNzE0
MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODNC
ODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNv
ZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQ0Q0QzAxNUYxQTYw
NDAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQdXREaXJlY3RJbmRleE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYwQ0Q0QzMxNUY2QjZCNTAwMzJGMUMwIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4
MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjEzNkQ0QjE3NEFENjlCMDA3NUIzNTQgLyogRGVmZXJHQy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZWZlckdDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MTM5MTI0MTY3NzFDMzAwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJCeXRlY29kZVNlcXVl
bmNlLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMTM5MTI1MTY3NzFDMzAwMDlDQ0IwNyAvKiBQ
cm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckJ5
dGVjb2RlU2VxdWVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxMzkxMjYx
Njc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5j
cHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxMzkxMjcxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2Zp
bGVyUHJvZmlsZWRCeXRlY29kZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
UHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJQcm9m
aWxlZEJ5dGVjb2Rlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjEzRTA0QzE2
MTY0QTFCMDBEQzhERTcgLyogSW5kZXhpbmdUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluZGV4aW5nVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMTYwMTVBMTU2MTk4QkYwMEMyNTg3QyAvKiBERkdBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZn
L0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjE2MDE1QjE1NjE5OEJGMDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxp
ZmljYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHQXJndW1lbnRzU2ltcGxp
ZmljYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjE5MENBQTE4
OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckpldHRpc29uUmVhc29uLmNwcDsgcGF0
aCA9IHByb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjE5MENBQjE4OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNv
blJlYXNvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlckpldHRp
c29uUmVhc29uLmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMUREODQ5MThBOTQ1QkUwMDI2RjNGQSAvKiBK
U0NJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0lubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxRTNBNDMxNTM0Q0JBRDAwMEY5NDU2
IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHQXJndW1lbnRQb3NpdGlvbi5oOyBwYXRoID0gZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxRTNBNDQxNTM0Q0JBRDAwMEY5NDU2
IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0RvdWJsZUZvcm1hdFN0YXRlLmg7IHBhdGggPSBkZmcvREZHRG91YmxlRm9ybWF0U3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxRTNBNTAxNTM3QzJDQjAwMEY5
NDU2IC8qIERGR1Nsb3dQYXRoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR1Nsb3dQYXRoR2VuZXJhdG9yLmg7IHBhdGggPSBkZmcvREZHU2xvd1BhdGhHZW5l
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxRTNBNjUxNTNBMjFERjAw
MEY5NDU2IC8qIERGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oOyBwYXRoID0gZGZnL0RG
R1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYxRkU1MUIxOTIyQTNCQzAwNjk4N0M1IC8qIEFib3J0UmVhc29uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFib3J0UmVhc29uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTcGVjaWFsaXphdGlvbktp
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4MDAwQURD
NjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjIzNUJCRDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTEV4aXRBcmd1bWVudC5jcHA7IHBhdGgg
PSBmdGwvRlRMRXhpdEFyZ3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYyMzVCQkUxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExFeGl0QXJndW1lbnQuaDsgcGF0aCA9IGZ0bC9GVExF
eGl0QXJndW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMzVCQkYxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5jcHA7
IHBhdGggPSBmdGwvRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMjM1QkMwMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1l
bnRGb3JPcGVyYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEV4aXRB
cmd1bWVudEZvck9wZXJhbmQuaDsgcGF0aCA9IGZ0bC9GVExFeGl0QXJndW1lbnRGb3JPcGVyYW5k
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjM1QkMxMTcxNzhFMUMwMDY5MEM3
RiAvKiBGVExFeGl0QXJndW1lbnRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEZUTEV4aXRBcmd1bWVudExpc3QuaDsgcGF0aCA9IGZ0bC9GVExFeGl0QXJndW1lbnRMaXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjM1QkMyMTcxNzhFMUMwMDY5MEM3
RiAvKiBGVExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRlRMRXhpdFRodW5rR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZ0bC9GVExFeGl0
VGh1bmtHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIzNUJD
MzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEV4aXRUaHVua0dlbmVyYXRvci5oOyBwYXRoID0gZnRs
L0ZUTEV4aXRUaHVua0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjIzNUJDNDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTEV4aXRWYWx1ZS5jcHA7IHBhdGggPSBmdGwvRlRM
RXhpdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMzVCQzUxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBGVExFeGl0VmFsdWUuaDsgcGF0aCA9IGZ0bC9GVExFeGl0VmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMzVCQzYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9T
UkV4aXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMT1NSRXhp
dC5jcHA7IHBhdGggPSBmdGwvRlRMT1NSRXhpdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMjM1QkM3MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTE9TUkV4aXQuaDsgcGF0aCA9IGZ0bC9GVExPU1JF
eGl0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjM1QkM4MTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEZUTE9TUkV4aXRDb21waWxhdGlvbkluZm8uaDsgcGF0aCA9IGZ0bC9GVExP
U1JFeGl0Q29tcGlsYXRpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MjM1QkM5MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMT1NSRXhpdENvbXBpbGVyLmNwcDsgcGF0
aCA9IGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjIzNUJDQTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTE9TUkV4aXRDb21waWxlci5oOyBwYXRo
ID0gZnRsL0ZUTE9TUkV4aXRDb21waWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjIzNUJDQjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFRodW5rcy5jcHA7IHBhdGggPSBmdGwvRlRMVGh1
bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMzVCQ0MxNzE3OEUxQzAw
NjkwQzdGIC8qIEZUTFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBG
VExUaHVua3MuaDsgcGF0aCA9IGZ0bC9GVExUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyMzVCQ0QxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFZhbHVlRm9ybWF0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFZhbHVlRm9ybWF0LmNwcDsg
cGF0aCA9IGZ0bC9GVExWYWx1ZUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMjM1QkNFMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExWYWx1ZUZvcm1hdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExWYWx1ZUZvcm1hdC5oOyBwYXRoID0gZnRsL0ZU
TFZhbHVlRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjM1QkU3MTcx
NzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0QmFzZS5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhp
dEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIzNUJFODE3MTc4RTcz
MDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHT1NSRXhpdEJhc2UuaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0QmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIzNUJFOTE3MTc4RTczMDA2OTBDN0YgLyogREZH
T1NSRXhpdFByZXBhcmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdFByZXBh
cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMzVCRUExNzE3OEU3
MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0UHJlcGFyYXRpb24uaDsgcGF0aCA9IGRmZy9ERkdPU1JF
eGl0UHJlcGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyNDJEQTUx
M0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlI
ZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzc2VtYmx5
SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjRFNTNDMTdFQTlG
NTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXNzZW1ibHlIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMjRFNTNEMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ0NhbGxIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMjRFNTNFMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZQUkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyNEU1M0YxN0VBOUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BSSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjI0RTU0NTE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRPcGVyYXRpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyNEU1NDYxN0VFMjc0OTAwQUJCMjE3IC8qIEpJ
VE9wZXJhdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUT3BlcmF0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTU0ODE3RUUyNzQ5MDBB
QkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRlbXBSZWdpc3RlclNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0
RTU0OTE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZXBhdGNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyNEU1NEExN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVwYXRjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjI0RTU0QjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTU1MzE3RjBCNzFDMDBBQkIy
MTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IElubGluZUNhbGxGcmFtZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMjRFNTU0MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lQ2FsbEZyYW1lU2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjRFNTU3MTdGNzRFREIwMEFCQjIxNyAvKiBW
YWx1ZVJlY292ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZh
bHVlUmVjb3ZlcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI1NkMzNDE2
MjdCMEFBMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ2FsbEFycmF5QWxsb2NhdG9y
U2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93
UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI1RjFBNzE4
MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTElubGluZUNhY2hlRGVzY3JpcHRvci5oOyBwYXRoID0g
ZnRsL0ZUTElubGluZUNhY2hlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjI1RjFBODE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTElubGluZUNhY2hlU2l6ZS5j
cHA7IHBhdGggPSBmdGwvRlRMSW5saW5lQ2FjaGVTaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyNUYxQTkxODE2MzVGMzAwNTIyRjM5IC8qIEZUTElubGluZUNhY2hlU2l6
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExJbmxpbmVDYWNoZVNpemUu
aDsgcGF0aCA9IGZ0bC9GVExJbmxpbmVDYWNoZVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyNUYxQUExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExTbG93UGF0aENhbGwuY3Bw
OyBwYXRoID0gZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMjVGMUFCMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU2xvd1BhdGhDYWxsLmg7IHBhdGggPSBm
dGwvRlRMU2xvd1BhdGhDYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjVG
MUFDMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMU2xvd1BhdGhDYWxsS2V5LmNwcDsgcGF0aCA9
IGZ0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjI1RjFBRDE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNsb3dQYXRoQ2FsbEtleS5oOyBwYXRoID0g
ZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJCNjZBODE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR0NJbmNvbWluZ1JlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYyQjY2QTkxN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2QUExN0I2QjUzRDAwQTdBRTNGIC8qIEdD
SW5jb21pbmdSZWZDb3VudGVkU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDSW5jb21pbmdSZWZDb3Vu
dGVkU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkFCMTdCNkI1M0Qw
MEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZFNldElubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMkI2NkIwMTdCNkI1QUIwMEE3QUUzRiAvKiBEYXRhVmlldy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhVmlldy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkIxMTdCNkI1QUIwMEE3QUUzRiAvKiBEYXRhVmlldy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhVmlldy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZCMjE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNU
eXBlZEFycmF5Vmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZCMzE3
QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkI0MTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0FycmF5QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQXJyYXlCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZC
NTE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0FycmF5QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMkI2NkI2MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJheUJ1ZmZlckNv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2QjcxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2QjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMkI2NkI5MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2QkExN0I2QjVBQjAwQTdBRTNGIC8q
IEpTQXJyYXlCdWZmZXJWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQXJyYXlCdWZmZXJWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYyQjY2QkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlCdWZmZXJWaWV3Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkJDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVm
ZmVyVmlld0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJh
eUJ1ZmZlclZpZXdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2
NkJEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGF0YVZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjJCNjZCRTE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlldy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RhdGFWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMkI2NkJGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGF0YVZpZXdQ
cm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZDMDE3QjZC
NUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0RhdGFWaWV3UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMkI2NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0MzJBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZDMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9h
dDY0QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGbG9hdDY0QXJy
YXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2QzMxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMkI2NkM2MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMkI2NkM3MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJC
NjZDODE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjJCNjZDOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQ4QXJyYXkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnQ4QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQjY2Q0ExN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZBcnJheS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludDE2QXJyYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2Q0IxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MzJBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludDMyQXJyYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2Q0MxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
VHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjJCNjZDRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3Ry
dWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheUNv
bnN0cnVjdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZDRTE3QjZC
NUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJvdG90eXBlcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2Q0YxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlw
ZWRBcnJheVByb3RvdHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNU
eXBlZEFycmF5UHJvdG90eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJC
NjZEMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1R5cGVkQXJyYXlzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyQjY2RDExN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZEMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNV
aW50OEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVWludDhBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZEMzE3QjZCNUFCMDBBN0FF
M0YgLyogSlNVaW50OENsYW1wZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1VpbnQ4Q2xhbXBlZEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMkI2NkQ0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVWludDE2QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyQjY2RDUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDMyQXJyYXkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNVaW50MzJBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZENjE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxl
VHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjJCNjZENzE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxlVHlwZWRB
cnJheUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2RDgx
N0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlBZGFwdG9ycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5QWRhcHRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyQjY2RDkxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVkQXJyYXlD
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2REExN0I2
QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFR5cGVkQXJyYXlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMkI2NkRCMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZEQzE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJh
eVR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZWRBcnJh
eVR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZERDE3QjZCNUFC
MDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHlwZWRBcnJheVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
QkRDMTIxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRml4dXBQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZH
Rml4dXBQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkJEQzEzMTUx
QzVENEEwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0ZpeHVwUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdGaXh1cFBoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkJEQzFGMTUxRTgwMzgwMENEODkxMCAvKiBE
RkdJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSW5z
ZXJ0aW9uU2V0Lmg7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMkJEQzJCMTUxRkRFOEIwMENEODkxMCAvKiBPcGVyYW5kcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcGVyYW5kcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjJCREMzRDE1MjI4MDE3MDBDRDg5MTAgLyogREZHTWluaWZpZWRH
cmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNaW5pZmllZEdyYXBo
Lmg7IHBhdGggPSBkZmcvREZHTWluaWZpZWRHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjJCREMzRTE1MjI4MDE3MDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR01pbmlmaWVkTm9kZS5oOyBwYXRoID0g
ZGZnL0RGR01pbmlmaWVkTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJC
REMzRjE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFsdWVSZWNvdmVyeU92ZXJyaWRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhbHVlUmVjb3ZlcnlPdmVycmlkZS5oOyBw
YXRoID0gZGZnL0RGR1ZhbHVlUmVjb3ZlcnlPdmVycmlkZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjJCREM0MDE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFsdWVTb3VyY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFsdWVTb3VyY2UuaDsgcGF0aCA9
IGRmZy9ERkdWYWx1ZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJC
REM0MTE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYXJpYWJsZUV2ZW50Lmg7IHBhdGggPSBkZmcvREZHVmFy
aWFibGVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCREM0MjE1MjI4
MDE3MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDsgcGF0aCA9
IGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYyQkRDNDMxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFyaWFibGVFdmVudFN0cmVh
bS5oOyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyQkRDNEMxNTIyODE4MzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9k
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdNaW5pZmllZE5v
ZGUuY3BwOyBwYXRoID0gZGZnL0RGR01pbmlmaWVkTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMkJEQzRFMTUyMjhCRTcwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYWx1ZVNvdXJjZS5j
cHA7IHBhdGggPSBkZmcvREZHVmFsdWVTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjJCREM1MDE1MjI4RkZBMDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYXJpYWJsZUV2ZW50LmNw
cDsgcGF0aCA9IGRmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyRkM3NzAxNkUxMkY2RjAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0RDRVBoYXNlLmNwcDsgcGF0aCA9
IGRmZy9ERkdEQ0VQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkZD
NzcxMTZFMTJGNkYwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdEQ0VQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0RDRVBoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkZDQ0YyMThBNjAwNzAwMDFBMjdGOCAvKiBE
RkdHcmFwaFNhZmVwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdHcmFwaFNhZmVwb2ludC5jcHA7IHBhdGggPSBkZmcvREZHR3JhcGhTYWZlcG9pbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJGQ0NGMzE4QTYwMDcwMDAxQTI3Rjgg
LyogREZHR3JhcGhTYWZlcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHR3JhcGhTYWZlcG9pbnQuaDsgcGF0aCA9IGRmZy9ERkdHcmFwaFNhZmVwb2ludC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJGQ0NGNDE4QTYwMDcwMDAxQTI3RjggLyogREZH
U2FmZXBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1Nh
ZmVwb2ludC5jcHA7IHBhdGggPSBkZmcvREZHU2FmZXBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyRkNDRjUxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTYWZlcG9pbnQuaDsgcGF0aCA9
IGRmZy9ERkdTYWZlcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyRkND
RjYxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NjYW5uYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdTY2FubmFibGUuaDsgcGF0aCA9IGRmZy9ERkdTY2FubmFibGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyRkNDRjcxOEE2MDA3MDAwMUEyN0Y4IC8q
IERGR1RocmVhZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHVGhyZWFkRGF0YS5jcHA7IHBhdGggPSBkZmcvREZHVGhyZWFkRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkZDQ0Y4MThBNjAwNzAwMDFBMjdGOCAvKiBERkdUaHJl
YWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1RocmVhZERhdGEu
aDsgcGF0aCA9IGRmZy9ERkdUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMzAwQjc3MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVPcmlnaW4uaDsgcGF0aCA9IGRmZy9ERkdO
b2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMzAwQjc5MThBQjFC
MTQwMEE2RDcyRSAvKiBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFz
ZS5jcHA7IHBhdGggPSBkZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjMwMEI3QTE4QUIxQjE0MDBBNkQ3MkUgLyogREZH
SW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdJbnRl
Z2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjM0QjE0NzE2RDQyMDBFMDAxQ0RBNUEgLyogREZHVXNlS2luZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdVc2VLaW5kLmNwcDsgcGF0aCA9IGRmZy9ERkdVc2VL
aW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzNEIxNDgxNkQ0MjAwRTAw
MUNEQTVBIC8qIERGR1VzZUtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHVXNlS2luZC5oOyBwYXRoID0gZGZnL0RGR1VzZUtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYzNEIxNEIxNkQ0M0UwQzAwMUNEQTVBIC8qIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYzOEIwMEYxN0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBMTEludEVudHJ5cG9pbnQuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBv
aW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzOEIwMTAxN0NGMDc3RjAw
QjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9p
bnQuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjM4QjAxMzE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ29tcGlsYXRpb25L
ZXkuY3BwOyBwYXRoID0gZGZnL0RGR0NvbXBpbGF0aW9uS2V5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYzOEIwMTQxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9u
S2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NvbXBpbGF0aW9uS2V5
Lmg7IHBhdGggPSBkZmcvREZHQ29tcGlsYXRpb25LZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYzOEIwMTUxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDb21waWxhdGlvbk1v
ZGUuY3BwOyBwYXRoID0gZGZnL0RGR0NvbXBpbGF0aW9uTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMzhCMDE2MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlv
bk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ29tcGlsYXRpb25N
b2RlLmg7IHBhdGggPSBkZmcvREZHQ29tcGlsYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGM0FDNzUxMTgzRUExMDQwMDMyMDI5RiAvKiBTdGFja0FsaWdubWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja0FsaWdubWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAyOUYgLyogRXhp
dGluZ0pJVFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhpdGluZ0pJ
VFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjNBMTcxNTNFNjhFRjAw
M0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDsgcGF0aCA9IGRm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGM0IzQTE4MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5oOyBwYXRoID0gZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGM0IzQTI0MTU0NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlm
aWNhdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NGR1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCM0EyNTE1NDRD
OTkxMDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHBhdGggPSBk
ZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjNCM0EyOTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVmFsaWRhdGUuY3BwOyBwYXRoID0gZGZn
L0RGR1ZhbGlkYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjNBMkEx
NTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR1ZhbGlkYXRlLmg7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVl
UmVjb3ZlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVSZWNvdmVy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFG
OEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZpcnR1YWxSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQyNkE0
QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEYXRhRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRF
eGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlEMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmg7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50U2xvd1BhdGhzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IExMSW50U2xvd1BhdGhzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50U2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50
U2xvd1BhdGhzLmg7IHBhdGggPSBsbGludC9MTEludFNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUy
NzIgLyogTExJbnRDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnRDb21tb24uaDsgcGF0aCA9IGxsaW50L0xMSW50Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21D
b25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmg7IHBhdGggPSBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTG93TGV2ZWxJbnRlcnByZXRlci5oOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUy
NzIgLyogTExJbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExMSW50RGF0YS5jcHA7IHBhdGggPSBsbGludC9MTEludERhdGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGF0YS5oOyBwYXRoID0gbGxp
bnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQwMTRC
QkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJl
dHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDg1MzFGMTg3NzUw
NTYwMDgzQjY4NyAvKiBERkdBcml0aE1vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHQXJpdGhNb2RlLmNwcDsgcGF0aCA9IGRmZy9ERkdBcml0aE1vZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ4NTMyMDE4Nzc1MDU2MDA4M0I2ODcg
LyogREZHQXJpdGhNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Fy
aXRoTW9kZS5oOyBwYXRoID0gZGZnL0RGR0FyaXRoTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ4NTMyMzE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3Zl
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMQXZhaWxhYmxl
UmVjb3ZlcnkuY3BwOyBwYXRoID0gZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0ODUzMjQxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2
YWlsYWJsZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEF2
YWlsYWJsZVJlY292ZXJ5Lmg7IHBhdGggPSBmdGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0ODUzMjUxODdERkRFQzAwODNCNjg3IC8qIEZU
TFJlY292ZXJ5T3Bjb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEZUTFJlY292ZXJ5T3Bjb2RlLmNwcDsgcGF0aCA9IGZ0bC9GVExSZWNvdmVyeU9wY29kZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDg1MzI2MTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBG
VExSZWNvdmVyeU9wY29kZS5oOyBwYXRoID0gZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDkzQUY4MTZEMENBRDEwMDg0NTA4QiAvKiBTb3Vy
Y2VQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3Vy
Y2VQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNEI5NERCMTdC
OUYwNzUwMEREMDNBNCAvKiBUeXBlZEFycmF5SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUeXBlZEFycmF5SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjRDRUQ1QzE4Q0VBN0FCMDA4MDJGRTAgLyogUG9seW1vcnBoaWNHZXRCeUlkTGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2x5bW9ycGhpY0dl
dEJ5SWRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Q0VENUQxOENF
QTdBQjAwODAyRkUwIC8qIFBvbHltb3JwaGljR2V0QnlJZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9seW1vcnBoaWNHZXRCeUlkTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjRGMjlERDE4QjZBRDFDMDA1N0JDMTUgLyogREZHU3RhdGljRXhl
Y3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwOyBw
YXRoID0gZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0RjI5REUxOEI2QUQxQzAwNTdCQzE1IC8qIERG
R1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmg7
IHBhdGggPSBkZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNw
ZWNpYWxQb2ludGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNw
ZWNpYWxQb2ludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1NTQxQjAx
NjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNwZWNpYWxQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNTU5ODk3MTdDODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUb05hdGl2ZUZyb21WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjU1QzE5MzE3Mjc2RTQ2MDBDRUFCRkQgLyogREZHQWJzdHJhY3RWYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFZhbHVlLmNwcDsg
cGF0aCA9IGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UEMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1
dGlvbkNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9u
Q291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjU2QTFENDE1MDAxQ0Yy
MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFeGVjdXRpb25Db3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY1NzJENEQxNjg3OUZEQjAwRTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRodW5rR2VuZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTc4MEExMThGRTFFOTgwMDFFNzJEOSAvKiBQdXJlTmFO
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1cmVOYU4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QTUyQ0YxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tl
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5VG9rZW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QTYyODExODhDOThENDAwNzJDOURGIC8qIEZUTFZh
bHVlUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMVmFs
dWVSYW5nZS5jcHA7IHBhdGggPSBmdGwvRlRMVmFsdWVSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNUE2MjgyMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFZhbHVlUmFuZ2UuaDsgcGF0
aCA9IGZ0bC9GVExWYWx1ZVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NUVGOTFCMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSklUVGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25hbEZp
bmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYyMDE2RjE0M0ZDRDJG
MDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdBYnN0cmFjdFZhbHVlLmg7IHBhdGggPSBkZmcvREZHQWJzdHJhY3RWYWx1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYyMDE3MDE0M0ZDRDJGMDA2OEI3N0Mg
LyogREZHQmFzaWNCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdC
YXNpY0Jsb2NrLmg7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjYyMDE3MjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nl
c3NEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhcmlhYmxlQWNj
ZXNzRGF0YS5oOyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjYzOTQzQzE1Qzc1RjE0MDA2QTU5N0MgLyogREZHVHlwZUNo
ZWNrSG9pc3RpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2Mzk0M0Qx
NUM3NUYxNDAwNkE1OTdDIC8qIERGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY2Mzk0NTExNUQwNzA1MTAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheVByb2ZpbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYzOTQ1MjE1RDA3MDUxMDA2QTU5N0MgLyogQXJy
YXlQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5UHJvZmls
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYzOTQ3NjE1RENFMzQ3MDA2QTU5
N0MgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmg7IHBhdGggPSBkZmcvREZHU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYz
OTQ4MTE1RTQ4MTE0MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0FycmF5TW9kZS5jcHA7IHBhdGggPSBkZmcvREZHQXJy
YXlNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2Mzk0ODIxNUU0ODEx
NDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdBcnJheU1vZGUuaDsgcGF0aCA9IGRmZy9ERkdBcnJheU1vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5l
c3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbEJ5dGVjb2RlTGl2ZW5l
c3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2NjZFQzIxODM1NjcyQjAwRDAx
N0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdBdmFpbGFiaWxpdHkuY3BwOyBwYXRoID0gZGZnL0RGR0F2YWlsYWJpbGl0eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjY2RUMzMTgzNTY3MkIwMEQwMTdG
MSAvKiBERkdBdmFpbGFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHQXZhaWxhYmlsaXR5Lmg7IHBhdGggPSBkZmcvREZHQXZhaWxhYmlsaXR5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjY2RUNBMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1
cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHUmVzdXJyZWN0aW9uRm9yVmFsaWRhdGlvblBoYXNlLmNwcDsgcGF0aCA9
IGRmZy9ERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjY2NkVDQjE4MzZCMzdFMDBEMDE3RjEgLyogREZHUmVzdXJyZWN0
aW9uRm9yVmFsaWRhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1Jlc3Vy
cmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBZGphY2VuY3lMaXN0Lmg7IHBhdGggPSBkZmcv
REZHQWRqYWNlbmN5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjY2RTE2
OTE0REYzRjEzMDBCN0IyRTQgLyogREZHRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdFZGdlLmg7IHBhdGggPSBkZmcvREZHRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjZCMUNCMzE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTEpTQ2FsbC5jcHA7IHBhdGgg
PSBmdGwvRlRMSlNDYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2QjFD
QjQxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBGVExKU0NhbGwuaDsgcGF0aCA9IGZ0bC9GVExKU0NhbGwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2QjFDQjcxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hl
Y2tNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyaXR5Q2hlY2tNb2Rl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNkIxQ0I4MTg2MTI0NEMwMDg0NUQ5
NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNkIxQ0JCMTg2MTI0NkEwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlv
bldyYXBwZXJHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY2QjFDQkMxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJl
c2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY2QjFDQkYxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVy
QXRPZmZzZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMUmVn
aXN0ZXJBdE9mZnNldC5jcHA7IHBhdGggPSBmdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBG
VExSZWdpc3RlckF0T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZU
TFJlZ2lzdGVyQXRPZmZzZXQuaDsgcGF0aCA9IGZ0bC9GVExSZWdpc3RlckF0T2Zmc2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNkIxQ0MxMTg2MkM0NzgwMDg0NUQ5NyAvKiBG
VExVbndpbmRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZU
TFVud2luZEluZm8uY3BwOyBwYXRoID0gZnRsL0ZUTFVud2luZEluZm8uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjZCMUNDMjE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5k
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExVbndpbmRJbmZvLmg7
IHBhdGggPSBmdGwvRlRMVW53aW5kSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjZCMUNDNzE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJpdHlDaGVja0ZhaWxS
ZXR1cm5UaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjZCMUNDODE4
NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2RTg0NTkxOTAzMEJFRjAwNTYyNzQxIC8qIERG
R1ZhcmlhYmxlQWNjZXNzRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwOyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxlQWNj
ZXNzRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzAyNUE3MTcxNEIw
RjgwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDsgcGF0
aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjcwMjVBODE3MTRCMEY4MDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkV4aXRDb21w
aWxlckNvbW1vbi5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjcxNENBMTE2RUE5MkVEMDBGM0VCRUIgLyogREZH
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9E
RkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY3MTRDQTIxNkVBOTJFRDAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmFja3dhcmRzUHJv
cGFnYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3M0Q3QUIxNjVBMTQyQTAwQUNBQjcx
IC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJS
b3V0aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb3N1cmVDYWxsU3R1
YlJvdXRpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NTc2RDAxOEUxRkVF
OTAwMkVGNENEIC8qIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NTc2RDExOEUxRkVFOTAwMkVGNENEIC8q
IEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNzY2RDFDMTVBNTAyOEQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRTdHViUm91dGluZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjc2NkQyNjE1QThDQzFCMDA4RjM2M0UgLyogSklUU3R1
YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUU3R1
YlJvdXRpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc2NkQyOTE1QThD
QzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSklUU3R1YlJvdXRpbmVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjc2NkQyQTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVT
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUU3R1YlJvdXRpbmVTZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NjZEMkQxNUE4RENERDAwOEYzNjNF
IC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjc2NkQyRTE1QThEQ0REMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQXdhcmVKSVRTdHViUm91
dGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc2NkQzNjE1QUU0QTFBMDA4
RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NjZEMzcxNUFFNEExQTAwOEYz
NjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2Ft
cGxpbmdDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5n
Q291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc3MDA5MTE0MDJGRjI4
MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjgzMzVCNTE2
MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hE
aXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNoRGly
ZWN0aW9uLmg7IHBhdGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURl
Zi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVVzZURlZi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjhGMkI5MzE3MkUwNDlFMDA3REJEQTUgLyog
RlRMTGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExMaW5rLmNwcDsgcGF0aCA9IGZ0bC9G
VExMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4RjJCOTQxNzJFMDQ5
RTAwN0RCREE1IC8qIEZUTExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMTGluay5oOyBwYXRoID0g
ZnRsL0ZUTExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4RjJCOTcxNzJG
MDRGRDAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRJZGVu
dGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOEYyQjk4MTcyRjA0
RkQwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
RGVzaXJlZElkZW50aWZpZXJzLmg7IHBhdGggPSBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOEYyQjlEMTczMDZDOEIwMDdEQkRBNSAv
KiBTb3VyY2VDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvdXJjZUNvZGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjhGOTQzQTE2Njc2MzExMDBENjE5NzEgLyogQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY4Rjk0M0QxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29kZUJsb2NrSGFzaC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2Rl
QmxvY2tIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVCbG9ja0hh
c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0M0YxNjY3NjMyRDAwRDYx
OTcxIC8qIENvZGVUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvZGVUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0NDMxNjY3
NjM1MjAwRDYxOTcxIC8qIEpJVENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSklUQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOEY5
NDQ1MTY2NzY0RUUwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjkxODFDNjE4NDE1Q0E1MDA1N0I2NjkgLyogVmFyaWFibGVXYXRjaHBvaW50U2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhcmlhYmxlV2F0Y2hwb2ludFNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRF
N0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0Qg
LyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMEYxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkx
OUQyMjE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY5MTlEMjMxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sVGFibGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyog
Q2FsbExpbmtTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FsbExpbmtTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkzMzI5
NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbExpbmtTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0QnlJZFN0YXR1cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTMzMjk2MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRC
eUlkU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdldEJ5SWRTdGF0
dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MzMyOTkxNENBN0RDMTAwODVG
M0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHV0QnlJZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
OTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEJ5SWRTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY5MzMyOUIxNENBN0RDMTAwODVGM0M2IC8qIFN0cnVjdHVyZVNldC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVTZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY5M0I0QTcxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJp
YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5SWRWYXJp
YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5M0I0QTgxOEI5MkM0RDAw
MTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFB1dEJ5SWRWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTYz
QjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGOTZFQkIxMTY2NzZFRjQwMDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlQmxvY2tXaXRoSklUVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjk3NDk2RjE2ODdBREUyMDBBNEZGNkEgLyog
SlNDZWxsSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NlbGxJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTgyMDVEMTZCRkUzN0Yw
MDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdldHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY5ODIwNUUxNkJGRTM3RjAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVjaXNlSnVtcFRhcmdldHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5QzVFNUMxOEUzNUY1RTAwRDQzMUMz
IC8qIEZUTERXQVJGUmVnaXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRlRMRFdBUkZSZWdpc3Rlci5jcHA7IHBhdGggPSBmdGwvRlRMRFdBUkZSZWdpc3Rlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUM1RTVEMThFMzVGNUUwMEQ0MzFD
MyAvKiBGVExEV0FSRlJlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZUTERXQVJGUmVnaXN0ZXIuaDsgcGF0aCA9IGZ0bC9GVExEV0FSRlJlZ2lzdGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUQzMzZFMTY1REJCOEQwMDVBRDM4NyAvKiBEaXNh
c3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlzYXNz
ZW1ibGVyLmNwcDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjlEMzM5NDE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1
c2hlZEF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0ZsdXNo
ZWRBdC5jcHA7IHBhdGggPSBkZmcvREZHRmx1c2hlZEF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdGbHVzaGVkQXQuaDsgcGF0aCA9IGRm
Zy9ERkdGbHVzaGVkQXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RDMzOTgx
ODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBGVExTdGFja01hcHMuY3BwOyBwYXRoID0gZnRsL0ZUTFN0YWNrTWFw
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUQzMzk5MTgwM0FEQjcwMDcz
QzJCQyAvKiBGVExTdGFja01hcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RlRMU3RhY2tNYXBzLmg7IHBhdGggPSBmdGwvRlRMU3RhY2tNYXBzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGOUZCNEYyMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91
dFBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0YWNr
TGF5b3V0UGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlGQjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZH
U3RhY2tMYXlvdXRQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdT
dGFja0xheW91dFBoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlGQzhCRjE0RTFCNUZCMDBENTJBRTAgLyogUG9s
eW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY5RkM4QzAxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9seW1vcnBoaWNQdXRCeUlkTGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlGQzhDMTE0RTFCNUZCMDBENTJB
RTAgLyogUHV0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRLaW5k
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTJDMTc5MTdEN0NGODQwMDlEMDE1
RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZBMkMxN0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlRmxhZ3MuY3Bw
OyBwYXRoID0gZGZnL0RGR05vZGVGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGQTU4MUI4MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUZsYWdzLmg7IHBhdGggPSBkZmcvREZHTm9k
ZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTU4MUI5MTUwRTk1MkEw
MEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdOb2RlVHlwZS5oOyBwYXRoID0gZGZnL0RGR05vZGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGQTdBOEU5MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZBN0E4RUExOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZBN0E4RUQxOENFNEZEODAwNTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkFGN0VGQTE2
NUJBOTE5MDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVERpc2Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQUY3RUZCMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURGlzYXNzZW1ibGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjEwNTgyMTY3NTQ4MEMwMEY4QUI2RSAvKiBF
eGl0S2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGl0S2lu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjEwNTgzMTY3NTQ4MEMwMEY4
QUI2RSAvKiBFeGl0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGl0
S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkIxMDU4NzE2NzU0ODJFMDBG
OEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFByb2ZpbGVyT1NSRXhpdC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlck9T
UkV4aXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkIxMDU4ODE2NzU0ODJF
MDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFByb2ZpbGVyT1NSRXhpdC5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjEwNTg5MTY3NTQ4MkUwMEY4QUI2
RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFByb2ZpbGVyT1NSRXhpdFNpdGUuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmls
ZXJPU1JFeGl0U2l0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjEwNThB
MTY3NTQ4MkUwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyT1NSRXhpdFNpdGUuaDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyT1NSRXhpdFNpdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZC
MTRFMUMxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCMTRFMUQxODEyNEFDRTAwOUI2
QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQjE0RTIwMTgxMjU3MEIwMDlCNkI0RCAvKiBERkdJbmxpbmVDYWNoZVdyYXBw
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSW5saW5lQ2FjaGVXcmFw
cGVyLmg7IHBhdGggPSBkZmcvREZHSW5saW5lQ2FjaGVXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGQjE0RTIyMTgxMzA5NTUwMDlCNkI0RCAvKiBERkdJbmxpbmVDYWNo
ZVdyYXBwZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0lu
bGluZUNhY2hlV3JhcHBlcklubGluZXMuaDsgcGF0aCA9IGRmZy9ERkdJbmxpbmVDYWNoZVdyYXBw
ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjRCNTEwMTZCM0E5
NjQwMDNGNjk2QiAvKiBERkdNaW5pZmllZElELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR01pbmlmaWVkSUQuaDsgcGF0aCA9IGRmZy9ERkdNaW5pZmllZElELmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjRCNTE5MTZCNjI3NzIwMDNGNjk2QiAvKiBERkdB
bGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWxsb2NhdG9y
Lmg7IHBhdGggPSBkZmcvREZHQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGQjRCNTFBMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdDb21tb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ29tbW9uLmNwcDsgcGF0aCA9IGRmZy9ERkdD
b21tb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI0QjUxQjE2QjYyNzcy
MDAzRjY5NkIgLyogREZHRWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdFZGdlLmNwcDsgcGF0aCA9IGRmZy9ERkdFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZCNEI1MUMxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0xvbmdMaXZlZFN0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0xvbmdMaXZl
ZFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdMb25nTGl2ZWRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGQjRCNTFEMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdMb25nTGl2
ZWRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdMb25nTGl2ZWRT
dGF0ZS5oOyBwYXRoID0gZGZnL0RGR0xvbmdMaXZlZFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQjRCNTFFMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGUuY3BwOyBwYXRoID0gZGZn
L0RGR05vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI0QjUxRjE2QjYy
NzcyMDAzRjY5NkIgLyogREZHTm9kZUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdOb2RlQWxsb2NhdG9yLmg7IHBhdGggPSBkZmcvREZHTm9kZUFsbG9jYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI0QjUyMTE2QjYyNzhEMDAzRjY5
NkIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZCNEI1MjIxNkI2Mjc4RDAwM0Y2OTZCIC8qIEZ1bmN0aW9uRXhlY3V0
YWJsZUR1bXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25FeGVj
dXRhYmxlRHVtcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI1NDY3NjE0RjU5
QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5k
VmFsdWVQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExh
enlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI1NDY3QzE0RjVDRkQz
MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCN0YzODkxNUVEOEUzODAwRjE2N0Iy
IC8qIEFycmF5Q29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXJyYXlDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI3RjM4
QTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFycmF5U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkI3RjM4QjE1RUQ4RTM4MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJ1dHRlcmZseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkI3RjM4QzE1RUQ4RTM4MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdXR0ZXJmbHlJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjdGMzhEMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRleGlu
Z0hlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleGluZ0hlYWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI3RjM4RTE1RUQ4RTM4MDBGMTY3
QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluZGV4aW5nSGVhZGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkI3RjM4RjE1RUQ4RTM4MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4aW5nVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkI3RjM5MDE1RUQ4RTM4MDBGMTY3QjIgLyogUHJvcGVydHlTdG9yYWdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3BlcnR5U3RvcmFnZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI3RjM5MTE1RUQ4RTM4MDBGMTY3QjIgLyog
UmVqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlamVjdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI3RjM5MjE1RUQ4RTM4MDBGMTY3QjIgLyogU3Bh
cnNlQXJyYXlWYWx1ZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGFy
c2VBcnJheVZhbHVlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQkMwQUU0
MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBERkdFeGl0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdFeGl0UHJvZmlsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyogQ29k
ZU9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlT3JpZ2luLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQkUwRjZCMTZDMURCMDEwMDgyQzVFOCAv
KiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NQU1Jl
dGhyZWFkaW5nUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkJFMEY2
QzE2QzFEQjAxMDA4MkM1RTggLyogREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmg7IHBhdGggPSBk
ZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkJFMEY2RDE2QzFEQjAxMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZWRpY3Rpb25J
bmplY3Rpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCRTBGNkUxNkMxREIwMTAwODJD
NUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9E
RkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZCRTBGNkYxNkMxREIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVW5pZmljYXRpb25QaGFzZS5j
cHA7IHBhdGggPSBkZmcvREZHVW5pZmljYXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQkUwRjcwMTZDMURCMDEwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBo
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1VuaWZpY2F0aW9uUGhh
c2UuaDsgcGF0aCA9IGRmZy9ERkdVbmlmaWNhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQzA5NzY4MTQ2OEE2RUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkV4aXQuaDsgcGF0aCA9IGRmZy9E
RkdPU1JFeGl0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzA5NzZGMTQ2OTNB
RUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENv
bXBpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzA5NzcwMTQ2OTNBRUYw
MENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA7IHBhdGggPSBkZmcvREZH
T1NSRXhpdENvbXBpbGVyNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMw
OTc3NTE0Njk0M0FEMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyMzJfNjQu
Y3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMDk3N0UxNDY5RUJDNDAwQ0YyNDQyIC8qIERGR0NvbW1vbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDb21tb24uaDsgcGF0aCA9IGRm
Zy9ERkdDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMDk3OEUxNDZB
NkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHT1NSRXhpdC5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzA5NzhGMTQ2QTZGNjMwMENGMjQ0MiAvKiBE
RkdPU1JFeGl0Q29tcGlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHT1NSRXhpdENvbXBpbGVyLmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMwOTc5RjE0NkIyOEM3MDBDRjI0
NDIgLyogREZHVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1RodW5rcy5jcHA7IHBhdGggPSBkZmcvREZHVGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZDMDk3QTAxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdUaHVua3MuaDsgcGF0aCA9IGRmZy9E
RkdUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMjBDQjMxODUyRTJD
NjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA7IHBh
dGggPSBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQzIwQ0I0MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzIwQ0I3MTg1NTZBMzUwMEM5RTk1NCAv
KiBERkdTU0FMb3dlcmluZ1BoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR1NTQUxvd2VyaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1NTQUxvd2VyaW5n
UGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMyMENCODE4NTU2QTM1
MDBDOUU5NTQgLyogREZHU1NBTG93ZXJpbmdQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdTU0FMb3dlcmluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZHU1NBTG93ZXJp
bmdQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMzMTQxMDE4MTQ1NTkx
MDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnaXN0ZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMzE0MTEx
ODE0NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wUmVnaXN0ZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkMzMTQxNDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJTZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkM3MTJEQzE3Q0Q4Nzc4MDA4Q0M5M0MgLyog
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGQzcxMkREMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzcxMkUwMTdDRDg3OEYwMDhDQzkzQyAvKiBKSVRUb0RG
R0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRU
b0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQzcxMkUxMTdDRDg3OEYwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRUb0RGR0RlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkM4MTUwODE0
MDQzQkNBMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFy
cmllclN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJy
aWVyU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkM5N0YyRjE4MjAy
MEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hw
b2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzk3RjMwMTgyMDIwRDcw
MDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzk3RjMxMTgyMDIwRDcwMDJDOUIyNiAvKiBQ
cm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hw
b2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzk3RjMyMTgyMDIwRDcw
MDJDOUIyNiAvKiBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5n
V2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkM5N0YzNzE4MjAy
MTE5MDAyQzlCMjYgLyogREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdJbnZhbGlkYXRpb25Qb2ludElu
amVjdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlv
blBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDOTdGMzgxODIwMjEx
OTAwMkM5QjI2IC8qIERGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25Q
aGFzZS5oOyBwYXRoID0gZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDOTdGMzkxODIwMjExOTAwMkM5QjI2IC8q
IERGR0p1bXBSZXBsYWNlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdKdW1wUmVwbGFjZW1lbnQuY3BwOyBwYXRoID0gZGZnL0RGR0p1bXBSZXBsYWNlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzk3RjNBMTgyMDIxMTkwMDJD
OUIyNiAvKiBERkdKdW1wUmVwbGFjZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHSnVtcFJlcGxhY2VtZW50Lmg7IHBhdGggPSBkZmcvREZHSnVtcFJlcGxhY2VtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzk3RjNCMTgyMDIxMTkwMDJDOUIy
NiAvKiBERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOyBwYXRo
ID0gZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkM5N0YzQzE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENv
bGxlY3Rpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdXYXRj
aHBvaW50Q29sbGVjdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rp
b25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkNCNDA4NTE1QzBBM0Mz
MDA0ODkzMkIgLyogU2xvdFZpc2l0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNsb3RWaXNpdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkNDQUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFyc2VyRXJyb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZDRUZBQTkxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFNhdmVSZXN0b3JlLmNw
cDsgcGF0aCA9IGZ0bC9GVExTYXZlUmVzdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQ0VGQUFBMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTYXZlUmVzdG9yZS5oOyBwYXRoID0gZnRs
L0ZUTFNhdmVSZXN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQ0VGQUFF
MTgwNUNBNkQwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBJbml0aWFsaXplTExWTS5oOyBwYXRoID0gbGx2bS9Jbml0aWFsaXplTExW
TS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkNFRkFBRjE4MDVDQTZEMDA0NzJD
RTQgLyogSW5pdGlhbGl6ZUxMVk1NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBJbml0aWFsaXplTExWTU1hYy5tbTsgcGF0aCA9IGxsdm0vSW5pdGlhbGl6ZUxM
Vk1NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQ0VGQUI2MTgwNUQ2MTYw
MDQ3MkNFNCAvKiBsaWJsbHZtRm9ySlNDLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gbGlibGx2bUZvckpTQy5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJMEZDRUZBQkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JK
U0MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gTExWTUZvckpTQy54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDRUZBQzAxODA1RDk0MTAwNDcyQ0U0IC8qIExMVk1PdmVy
cmlkZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTExWTU92ZXJyaWRlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQ0VGQUMyMTgwNUU3NDAwMDQ3MkNFNCAvKiBMTFZNRXhw
b3J0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMTFZNRXhwb3J0
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQ0VGQUM0MTgwNUU3NTUwMDQ3
MkNFNCAvKiBJbml0aWFsaXplTExWTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBJbml0aWFsaXplTExWTS5jcHA7IHBhdGggPSBsbHZtL0luaXRpYWxpemVMTFZNLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDRUZBQzUxODA1RTc1NTAwNDcyQ0U0
IC8qIEluaXRpYWxpemVMTFZNUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gSW5pdGlhbGl6ZUxMVk1QT1NJWC5jcHA7IHBhdGggPSBsbHZtL0luaXRpYWxpemVM
TFZNUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkNFRkFDNjE4MDVF
NzU1MDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk1QT1NJWC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBJbml0aWFsaXplTExWTVBPU0lYLmg7IHBhdGggPSBsbHZtL0luaXRpYWxp
emVMTFZNUE9TSVguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDRUZBQzcxODA1
RTc1NTAwNDcyQ0U0IC8qIExMVk1BUEkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTExWTUFQSS5jcHA7IHBhdGggPSBsbHZtL0xMVk1BUEkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkNFRkFDODE4MDVFNzU1MDA0NzJDRTQgLyogTExWTUFQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTFZNQVBJLmg7IHBhdGggPSBsbHZt
L0xMVk1BUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDRUZBQzkxODA1RTc1
NTAwNDcyQ0U0IC8qIExMVk1BUElGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTExWTUFQSUZ1bmN0aW9ucy5oOyBwYXRoID0gbGx2bS9MTFZNQVBJRnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQ0VGQUQyMTgwNUVEQ0MwMDQ3MkNF
NCAvKiBMTFZNSGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTFZN
SGVhZGVycy5oOyBwYXRoID0gbGx2bS9MTFZNSGVhZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkNFRkFENjE4MDYxNzQ2MDA0NzJDRTQgLyogTExWTUFuY2hvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMTFZNQW5jaG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDRUZBREIxODA2NEExNDAwNDcyQ0U0IC8qIGNvbmZp
Z19sbHZtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZ19sbHZtLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQ0VGQUREMTgwNzM4QzAwMDQ3MkNFNCAv
KiBGVExMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBG
VExMb2NhdGlvbi5jcHA7IHBhdGggPSBmdGwvRlRMTG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkNFRkFERTE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9jYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMTG9jYXRpb24uaDsgcGF0aCA9
IGZ0bC9GVExMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQyQzky
MzE2RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRDNDODIwMTQxMTVDRjgwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRHJpdmVyLmNwcDsgcGF0aCA9IGRm
Zy9ERkdEcml2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQzQzgyMjE0
MTE1RDBFMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR0RyaXZlci5oOyBwYXRoID0gZGZnL0RGR0RyaXZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkQ1NjUyMjE2QUI3ODBBMDAxOTc2NTMgLyogREZHQmFzaWNCbG9j
a0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmFzaWNCbG9j
a0lubGluZXMuaDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkQ4MUFDRjE1NEZCNEVCMDA5ODNFNzIgLyogREZHRG9taW5h
dG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEb21pbmF0
b3JzLmNwcDsgcGF0aCA9IGRmZy9ERkdEb21pbmF0b3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZEODFBRDAxNTRGQjRFQjAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRG9taW5hdG9ycy5oOyBwYXRoID0g
ZGZnL0RGR0RvbWluYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEODJF
MUUxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDYXBhYmlsaXRpZXMuY3BwOyBwYXRoID0gZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDgyRTFG
MTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQ2FwYWJpbGl0aWVzLmg7IHBhdGggPSBkZmcvREZHQ2FwYWJpbGl0
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDgyRTM3MTQxQUIxNDIwMDE3
OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb21wYWN0SklUQ29kZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkQ4MkU0RjE0MURBRUExMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlY3VsYXRlZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZEODJFNTIxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkVudHJ5LmNwcDsgcGF0
aCA9IGRmZy9ERkdPU1JFbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RDgyRTUzMTQxREFFREUwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdPU1JFbnRyeS5oOyBwYXRoID0gZGZnL0RGR09TUkVudHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAv
KiBTcGVjdWxhdGVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTcGVjdWxhdGVkVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDhB
MzExMTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29kZUJsb2NrU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZEOEEzMTIxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlQmxvY2tTZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEOEEzMTUxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9T
UkVudHJ5SklUQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBG
VExGb3JPU1JFbnRyeUpJVENvZGUuY3BwOyBwYXRoID0gZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29k
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDhBMzE2MTdENTFGMjIwMENB
MkM0MCAvKiBGVExGb3JPU1JFbnRyeUpJVENvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRlRMRm9yT1NSRW50cnlKSVRDb2RlLmg7IHBhdGggPSBmdGwvRlRMRm9yT1NSRW50
cnlKSVRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDhBMzE3MTdENTFG
MjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBGVExPU1JFbnRyeS5jcHA7IHBhdGggPSBmdGwvRlRMT1NSRW50cnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ4QTMxODE3RDUxRjIyMDBDQTJDNDAgLyog
RlRMT1NSRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMT1NSRW50
cnkuaDsgcGF0aCA9IGZ0bC9GVExPU1JFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkQ4QTMxRDE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9u
UGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRW50
cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVh
dGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEOEEzMUUxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmg7
IHBhdGggPSBkZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZEOEEzMUYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHVGllclVw
Q2hlY2tJbmplY3Rpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RDhBMzIwMTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1RpZXJVcENoZWNrSW5qZWN0aW9u
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDhBMzIxMTdENTFGNTcwMENBMkM0MCAvKiBERkdU
b0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHA7
IHBhdGggPSBkZmcvREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ4QTMyMjE3RDUxRjU3MDBDQTJDNDAgLyogREZH
VG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaDsgcGF0aCA9
IGRmZy9ERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkQ4QTMyMzE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExGb3JP
U1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcDsgcGF0aCA9IGRmZy9ERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEOEEz
MjQxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVG9GVExG
b3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oOyBwYXRoID0gZGZnL0RGR1Rv
RlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZEQjJDQzcxNzNEQTUxRTAwN0IzQzFCIC8qIEZUTEFiYnJldmlh
dGVkVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMQWJicmV2aWF0ZWRUeXBlcy5oOyBwYXRoID0g
ZnRsL0ZUTEFiYnJldmlhdGVkVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZEQjJDQzgxNzNEQTUxRTAwN0IzQzFCIC8qIEZUTFZhbHVlRnJvbUJsb2NrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEZUTFZhbHVlRnJvbUJsb2NrLmg7IHBhdGggPSBmdGwvRlRMVmFsdWVGcm9tQmxvY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEQjJDRTUxNzQ4MzBBMjAwN0IzQzFC
IC8qIERGR1dvcmtsaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1dvcmtsaXN0LmNwcDsgcGF0aCA9IGRmZy9ERkdXb3JrbGlzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGREIyQ0U2MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdXb3JrbGlzdC5oOyBwYXRo
ID0gZGZnL0RGR1dvcmtsaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGREIy
Q0U5MTc0ODk2QzcwMDdCM0MxQiAvKiBDb25jdXJyZW50SklUTG9jay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb25jdXJyZW50SklUTG9jay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkREQkZCMjE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdW
YXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcDsgcGF0aCA9IGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0Rh
dGFEdW1wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEREJGQjMxNjY2RUVE
NTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oOyBwYXRoID0gZGZn
L0RGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3B0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZFODUzNDkxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEZXNpcmVkV2F0
Y2hwb2ludHMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTg1MzRBMTcyM0NEQTUwMEI2MThGNSAvKiBERkdE
ZXNpcmVkV2F0Y2hwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
RGVzaXJlZFdhdGNocG9pbnRzLmg7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTk1Rjc3MThCNTY5NDcwMEI1MzFGQiAv
KiBGVExEYXRhU2VjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBGVExEYXRhU2VjdGlvbi5jcHA7IHBhdGggPSBmdGwvRlRMRGF0YVNlY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkU5NUY3ODE4QjU2OTQ3MDBCNTMxRkIgLyogRlRM
RGF0YVNlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMRGF0YVNl
Y3Rpb24uaDsgcGF0aCA9IGZ0bC9GVExEYXRhU2VjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkVBMDlGRDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExBYmJyZXZpYXRpb25zLmg7IHBh
dGggPSBmdGwvRlRMQWJicmV2aWF0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkVBMDlGRTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTENhcGFiaWxpdGllcy5jcHA7IHBhdGgg
PSBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZFQTA5RkYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExDYXBhYmlsaXRpZXMuaDsgcGF0aCA9IGZ0bC9GVExD
YXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMDAxNzA1
MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRlRMQ29tcGlsZS5jcHA7IHBhdGggPSBmdGwvRlRMQ29tcGlsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUEwQTAxMTcwNTEzREIwMEJCNzIyQyAvKiBG
VExDb21waWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTENvbXBpbGUu
aDsgcGF0aCA9IGZ0bC9GVExDb21waWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRUEwQTAyMTcwNTEzREIwMEJCNzIyQyAvKiBGVExKSVRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTEpJVENvZGUuY3BwOyBwYXRoID0gZnRsL0ZUTEpJ
VENvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVBMEEwMzE3MDUxM0RC
MDBCQjcyMkMgLyogRlRMSklUQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBGVExKSVRDb2RlLmg7IHBhdGggPSBmdGwvRlRMSklUQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkVBMEEwNDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdUb0xM
Vk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMTG93ZXJERkdU
b0xMVk0uY3BwOyBwYXRoID0gZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMDUxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZH
VG9MTFZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTExvd2VyREZHVG9M
TFZNLmg7IHBhdGggPSBmdGwvRlRMTG93ZXJERkdUb0xMVk0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZFQTBBMDYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTE91dHB1dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExPdXRwdXQuaDsgcGF0aCA9IGZ0bC9GVExP
dXRwdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMDcxNzA1MTNEQjAw
QkI3MjJDIC8qIEZUTFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZU
TFN0YXRlLmg7IHBhdGggPSBmdGwvRlRMU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZFQTBBMTUxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFN0YXRlLmNwcDsgcGF0aCA9IGZ0bC9GVExT
dGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUEwQTE3MTcwOEIwMDcw
MEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRlRMQWJzdHJhY3RIZWFwLmNwcDsgcGF0aCA9IGZ0bC9GVExBYnN0cmFjdEhl
YXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVBMEExODE3MDhCMDA3MDBC
QjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEZUTEFic3RyYWN0SGVhcC5oOyBwYXRoID0gZnRsL0ZUTEFic3RyYWN0SGVhcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVBMEExOTE3MDhCMDA3MDBCQjcyMkMgLyogRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDsgcGF0aCA9IGZ0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZF
QTBBMUExNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
OyBwYXRoID0gZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMUIxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTFR5cGVkUG9pbnRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExUeXBlZFBvaW50ZXIuaDsg
cGF0aCA9IGZ0bC9GVExUeXBlZFBvaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZFQTBBMjExNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExDb21tb25WYWx1ZXMuaDsgcGF0aCA9IGZ0bC9G
VExDb21tb25WYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMjIx
NzA5NjA2OTAwQkI3MjJDIC8qIEZUTEludHJpbnNpY1JlcG9zaXRvcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOyBwYXRoID0gZnRs
L0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZFQTBBMjUxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExDb21tb25WYWx1ZXMuY3BwOyBwYXRoID0g
ZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RUEwQTI2MTcwOTYyM0IwMEJCNzIyQyAvKiBGVExJbnRyaW5zaWNSZXBvc2l0b3J5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTEludHJpbnNpY1JlcG9zaXRvcnku
Y3BwOyBwYXRoID0gZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkVBMEEyOTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRMT3V0cHV0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTE91dHB1dC5jcHA7IHBh
dGggPSBmdGwvRlRMT3V0cHV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZF
QTBBMkIxNzBCNjYxOTAwQkI3MjJDIC8qIEZUTEZvcm1hdHRlZFZhbHVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEZvcm1hdHRlZFZhbHVlLmg7IHBhdGggPSBmdGwvRlRM
Rm9ybWF0dGVkVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMkQx
NzBENDBCRjAwQkI3MjJDIC8qIERGR0NvbW1vbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHQ29tbW9uRGF0YS5jcHA7IHBhdGggPSBkZmcvREZHQ29tbW9u
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUEwQTJFMTcwRDQwQkYw
MEJCNzIyQyAvKiBERkdDb21tb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0NvbW1vbkRhdGEuaDsgcGF0aCA9IGRmZy9ERkdDb21tb25EYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUEwQTJGMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdKSVRD
b2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0pJVENvZGUu
Y3BwOyBwYXRoID0gZGZnL0RGR0pJVENvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkVBMEEzMDE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdKSVRDb2RlLmg7IHBhdGggPSBkZmcvREZHSklUQ29k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVCM0VDRTE2MjM3RjY3MDBBQjY3
QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWFjcm9Bc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkVGQzlBNzE2ODFBM0IwMDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0SnVtcFBsYWNl
aG9sZGVyLmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFRkM5QTgxNjgxQTNCMDAwNTY3RjUzIC8qIERG
R09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXRKdW1w
UGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNDI3MkYxNThF
QkQ0NDAwNENCOUZGIC8qIERpc2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBEaXNhc3NlbWJsZXIuaDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNDI3MzAxNThFQkQ0NDAwNENCOUZG
IC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBVRGlzODZEaXNhc3NlbWJsZXIuY3BwOyBwYXRoID0gZGlzYXNzZW1ibGVyL1VEaXM4
NkRpc2Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjQyNzM0
MTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuYzsgbmFtZSA9IHVkaXM4Nl9kZWNvZGUuYzsgcGF0aCA9IGRpc2Fzc2VtYmxlci91ZGlzODYv
dWRpczg2X2RlY29kZS5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY0MjczNTE1
OEVCRDk0MDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSB1ZGlzODZfZGVjb2RlLmg7IHBhdGggPSBkaXNhc3NlbWJsZXIvdWRpczg2L3Vk
aXM4Nl9kZWNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNDI3MzYxNThF
QkQ5NDAwNENCOUZGIC8qIHVkaXM4Nl9leHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gdWRpczg2X2V4dGVybi5oOyBwYXRoID0gZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZGlz
ODZfZXh0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjQyNzM3MTU4RUJE
OTQwMDRDQjlGRiAvKiB1ZGlzODZfaW5wdXQuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBu
YW1lID0gdWRpczg2X2lucHV0LmM7IHBhdGggPSBkaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Nl9p
bnB1dC5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY0MjczODE1OEVCRDk0MDA0
Q0I5RkYgLyogdWRpczg2X2lucHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IHVkaXM4Nl9pbnB1dC5oOyBwYXRoID0gZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZGlzODZfaW5wdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNDI3MzkxNThFQkQ5NDAwNENCOUZG
IC8qIHVkaXM4Nl9zeW4tYXR0LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9ICJ1
ZGlzODZfc3luLWF0dC5jIjsgcGF0aCA9ICJkaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Nl9zeW4t
YXR0LmMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY0MjczQTE1OEVCRDk0MDA0
Q0I5RkYgLyogdWRpczg2X3N5bi1pbnRlbC5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5h
bWUgPSAidWRpczg2X3N5bi1pbnRlbC5jIjsgcGF0aCA9ICJkaXNhc3NlbWJsZXIvdWRpczg2L3Vk
aXM4Nl9zeW4taW50ZWwuYyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjQyNzNC
MTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
YzsgbmFtZSA9IHVkaXM4Nl9zeW4uYzsgcGF0aCA9IGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2
X3N5bi5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY0MjczQzE1OEVCRDk0MDA0
Q0I5RkYgLyogdWRpczg2X3N5bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB1
ZGlzODZfc3luLmg7IHBhdGggPSBkaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Nl9zeW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNDI3M0QxNThFQkQ5NDAwNENCOUZGIC8qIHVk
aXM4Nl90eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB1ZGlzODZfdHlw
ZXMuaDsgcGF0aCA9IGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3R5cGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjQyNzNFMTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODYu
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gdWRpczg2LmM7IHBhdGggPSBkaXNh
c3NlbWJsZXIvdWRpczg2L3VkaXM4Ni5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkY0MjczRjE1OEVCRDk0MDA0Q0I5RkYgLyogdWRpczg2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IHVkaXM4Ni5oOyBwYXRoID0gZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZGlzODYu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNDI3NEMxNThFQkZFMTAwNENCOUZG
IC8qIHVkaXM4Nl9pdGFiX2hvbGRlci5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUg
PSB1ZGlzODZfaXRhYl9ob2xkZXIuYzsgcGF0aCA9IGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2
X2l0YWJfaG9sZGVyLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjQyNzU2MTU5
MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IExpbmtCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkY0Mjc2MTE1OTFBMUM5MDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Rpc2Fzc2VtYmxlci5jcHA7IHBhdGgg
PSBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEaXNhc3NlbWJsZXIuaDsgcGF0aCA9IGRmZy9ERkdE
aXNhc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNjBBQkYxNjc0
MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVkdWNlV2hpdGVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRjYwQUMwMTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZHVjZVdoaXRlc3BhY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8q
IFByb3BlcnR5T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Bl
cnR5T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTkyMTY2QUQz
NDcwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyQnl0ZWNvZGUuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJv
ZmlsZXJCeXRlY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTkz
MTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyQnl0ZWNvZGUuaDsgcGF0aCA9IHByb2ZpbGVyL1Byb2Zp
bGVyQnl0ZWNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTQxNjZB
RDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyQnl0ZWNvZGVzLmNwcDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZG
NzI5OTUxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyQnl0ZWNvZGVzLmg7IHBhdGggPSBwcm9maWxl
ci9Qcm9maWxlckJ5dGVjb2Rlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3
Mjk5NjE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckNvbXBpbGF0aW9uLmNwcDsgcGF0
aCA9IHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlckNvbXBpbGF0aW9u
Lmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRjcyOTk4MTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBp
bGF0aW9uS2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9m
aWxlckNvbXBpbGF0aW9uS2luZC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckNvbXBpbGF0
aW9uS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk5MTY2QUQz
NDcwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5oOyBwYXRoID0gcHJvZmls
ZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZGNzI5OUExNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckNvbXBpbGVk
Qnl0ZWNvZGUuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUIxNjZBRDM0NzAwMEY1QkEz
IC8qIFByb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaDsgcGF0aCA9IHByb2ZpbGVyL1Byb2Zp
bGVyQ29tcGlsZWRCeXRlY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3
Mjk5QzE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckRhdGFiYXNlLmNwcDsgcGF0aCA9IHBy
b2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkY3Mjk5RDE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJEYXRhYmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlckRhdGFiYXNlLmg7IHBhdGggPSBwcm9m
aWxlci9Qcm9maWxlckRhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RjcyOTlFMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckV4ZWN1dGlvbkNvdW50ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmg7
IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckV4ZWN1dGlvbkNvdW50ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUYxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyT3Jp
Z2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyT3Jp
Z2luLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5QTAxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyT3Jp
Z2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyT3JpZ2luLmg7
IHBhdGggPSBwcm9maWxlci9Qcm9maWxlck9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkY3MjlBMTE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW5TdGFjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlck9yaWdpblN0
YWNrLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luU3RhY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3MjlBMjE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmls
ZXJPcmlnaW5TdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxl
ck9yaWdpblN0YWNrLmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlck9yaWdpblN0YWNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEZGQzk5RDAxODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0
YW50TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdGFudE1vZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGQzk5RDIxODRFRTMxODAwOUMxMEFC
IC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZDOTlEMzE4NEVFMzE4MDA5QzEwQUIgLyog
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkZGQzk0QjE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ0ZBUGhhc2UuY3Bw
OyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGQVBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ0ZBUGhh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGRkM5NEQxNEVGOTA5NTAwQzcy
NTMyIC8qIERGR0NTRVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0NTRVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDU0VQaGFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkZDOTRFMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQ
aGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDU0VQaGFzZS5oOyBw
YXRoID0gZGZnL0RGR0NTRVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RkZDOTRGMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHUGhhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZGQzk1MDE0RUY5MDk1MDBDNzI1MzIg
LyogREZHUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUGhhc2Uu
aDsgcGF0aCA9IGRmZy9ERkdQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkZGQzk1MTE0RUY5MDk1MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGRkM5NTIxNEVGOTA5NTAw
QzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmg7IHBhdGgg
PSBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZGRkM5NTMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdpc3Rl
ckFsbG9jYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1Zp
cnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRkZDOTU0MTRFRjkwOTUwMEM3MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxv
Y2F0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmlydHVh
bFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHVmlydHVhbFJlZ2lzdGVy
QWxsb2NhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MEQxN0Q2
MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQmFzZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMTQxMjExMDIwQTQ4NzgwOTAwNDgwMjU1IC8qIG1pbmlkb20uYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5jOyBuYW1lID0gbWluaWRvbS5jOyBwYXRoID0gdGVzdHMvbWluaWRvbS5jOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDEyMTEwRDBBNDg3ODg3MDA0ODAyNTUgLyogbWlu
aWRvbS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IG1pbmlkb20u
anM7IHBhdGggPSB0ZXN0cy9taW5pZG9tLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxl
IjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbWluaWRvbTsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJMTQxNDQ4Q0ExM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJs
b2NrU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrU2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MTQ0OENDMTNBMTc4MzcwMEY1QkEx
QSAvKiBUaW55Qmxvb21GaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGlueUJsb29tRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MTUwMTMy
MTU0QkIxM0YwMDVEOEM5OCAvKiBXZWFrU2V0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWFrU2V0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNDIwQkU3QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmFuZG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0MjEzNTlBMEE2NzdGNEYwMEE4MTk1RSAvKiBKU0Jhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTQyNzExMzgwQTQ2MEJCQjAwODBFRUVBIC8qIEpTQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTQyOUQ3N0IwRUQyMEQ3MzAwQjg5NjE5IC8qIEludGVycHJldGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0MjlEN0QzMEVEMjEyODIwMEI4OTYxOSAvKiBJbnRlcnByZXRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlcnByZXRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYx
OSAvKiBKU1N0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
U3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDI5RDg3NzBFRDIxQUNE
MDBCODk2MTkgLyogRXhjZXB0aW9uSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFeGNlcHRpb25IZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMTQyOUQ4ODMwRUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ1Rvb2wuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDI5RDg4NDBFRDIxQzNEMDBCODk2MTkgLyogU2Ft
cGxpbmdUb29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5nVG9v
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDI5RDhEQjBFRDIyMDVCMDBCODk2
MTkgLyogQ2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MjlEOERDMEVE
MjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MjlEOTJE
MEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQyOUQ5MkUw
RUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKSVQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQyRDM5MzgxMDNFNDU2MDAw
N0RDQjUyIC8qIE51bWVyaWNTdHJpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE51bWVyaWNTdHJpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MkQ2
RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrZWRCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0MkQ2RjA3MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRCbG9jay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxNDJENkYwRTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtTdGFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MkQ2RjBGMTM1MzlBNDEwMEIwMkU4NiAvKiBN
YXJrU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya1N0YWNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MkUzMTJCMTM0RkYwQTYwMEFGQURCNSAv
KiBIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MkUzMTJDMTM0RkYwQTYwMEFGQURCNSAvKiBI
YW5kbGVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGFuZGxl
U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQyRTMxMkQxMzRGRjBBNjAw
QUZBREI1IC8qIEhhbmRsZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
YW5kbGVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQyRTMxMkUxMzRGRjBB
NjAwQUZBREI1IC8qIEhhbmRsZVN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhhbmRsZVN0YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTQyRTMxMkYxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVN0YWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZVN0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0MkUzMTMwMTM0RkYwQTYwMEFGQURCNSAvKiBMb2NhbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxNDJFMzEzMTEzNEZGMEE2MDBBRkFEQjUgLyogTG9jYWxTY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0MkUzMTMyMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ryb25nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTE0MkUzMTMzMTM0RkYwQTYwMEFGQURCNSAvKiBXZWFrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYWsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ0
MDA1MUYwQTUzMUQzQjAwMDVGMDYxIC8qIE5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTm9kZS5oOyBwYXRoID0gdGVzdHMvTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDQwMDUyMDBBNTMxRDNCMDAwNUYwNjEgLyogTm9kZS5jICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmM7IG5hbWUgPSBOb2RlLmM7IHBhdGggPSB0ZXN0cy9Ob2RlLmM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NDAwNzQ4MEE1MzZDQzIwMDA1RjA2MSAvKiBOb2Rl
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOb2RlTGlzdC5oOyBwYXRo
ID0gdGVzdHMvTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ0MDA3
NDkwQTUzNkNDMjAwMDVGMDYxIC8qIE5vZGVMaXN0LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
YzsgbmFtZSA9IE5vZGVMaXN0LmM7IHBhdGggPSB0ZXN0cy9Ob2RlTGlzdC5jOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDQwMDc1NTBBNTM3MEQyMDAwNUYwNjEgLyogSlNOb2RlTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU05vZGVMaXN0Lmg7IHBhdGgg
PSB0ZXN0cy9KU05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NDAw
NzU2MEE1MzcwRDIwMDA1RjA2MSAvKiBKU05vZGVMaXN0LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuYzsgbmFtZSA9IEpTTm9kZUxpc3QuYzsgcGF0aCA9IHRlc3RzL0pTTm9kZUxpc3QuYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ0MEY2NDEwQTRGOEI2QTAwMDVGMDYxIC8qIEpT
Tm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU05vZGUuaDsgcGF0aCA9
IHRlc3RzL0pTTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDQwRjY0MjBB
NEY4QjZBMDAwNUYwNjEgLyogSlNOb2RlLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFt
ZSA9IEpTTm9kZS5jOyBwYXRoID0gdGVzdHMvSlNOb2RlLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0NDBGODhGMEE1MDhCMTAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYWxsYmFja0Z1bmN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NDBGODkwMEE1MDhCMTAwMDA1RjA2MSAv
KiBKU0NhbGxiYWNrRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNDYWxsYmFja0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMTQ0MEY4QUMwQTUwOEQyMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NhbGxiYWNrQ29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ0MEY4QUQwQTUwOEQyMDAwMDVGMDYxIC8q
IEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxNDQwRkNFMTBBNTFFNDZCMDAwNUYwNjEgLyogSlNDbGFzc1JlZi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NsYXNzUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTE0NDBGQ0UyMEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVmLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2xhc3NSZWYuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDQyNTY1RjE1RURFOThEMDA2NkE0OUIgLyogSlNX
aXRoU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXaXRo
U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDQyNTY2MDE1RURFOThE
MDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNXaXRoU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ1NzIyODUx
NDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3Ryb25nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxNDVDNTA3RjBEOURGNjNCMDA4OEY2QjkgLyogQ2FsbERhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMTQ2QUFCMkEwQjY2QTg0OTAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nUmVmQ0YuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTQ2QUFCMzcwQjY2QTk0NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0Yu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RyaW5nUmVmQ0Yu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDZCMTREQjEyRUI1QjEyMDAxQkVD
MUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29uc2VydmF0aXZlUm9vdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNDZGQTVBODEzNzhGNkIwMDAzNjI3QTMgLyogSGFuZGxlVHlwZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTQ2RkU1MTExMUE3MTA0MzAwODdBRTY2IC8qIEpJVENhbGwzMl82NC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRDYWxsMzJfNjQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDdCODNBQTBFNkRCOEM5MDA0Nzc1QTQgLyog
QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMTQ3Qjg0NjIwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRQcm9wZXJ0eVNsb3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ4MERCOUIwRERDMjI3RjAwM0NGREYyIC8qIERlYnVn
Z2VyQ2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2Vy
Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0ODE2RTE5MTU0Q0M1
NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBCbG9ja0FsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0ODE2RTFBMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0FsbG9jYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDgyQjZFQTBBNDMwMEIzMDA1MTdDRkMgLyogSlNWYWx1ZVJl
Zi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlUmVmLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0ODJCNzRCMEE0MzAzMjgwMDUxN0NGQyAvKiBKU1N0
cmluZ1JlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ1JlZi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDgyQjc0QzBBNDMwMzI4MDA1MTdDRkMg
LyogSlNTdHJpbmdSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTdHJpbmdSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDgyQjc4QTBB
NDMwNUFCMDA1MTdDRkMgLyogQVBJQ2FzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElDYXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0ODJCN0UxMEE0
MzA3NjAwMDUxN0NGQyAvKiBKU09iamVjdFJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU09iamVjdFJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDgy
QjdFMjBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNPYmplY3RSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDg3NEFERjE1RUJERTRBMDAyRTM1ODcgLyogSlNOYW1lU2NvcGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYW1lU2NvcGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDg3NEFFMDE1RUJERTRBMDAyRTM1ODcgLyogSlNO
YW1lU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOYW1lU2NvcGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ4NzRBRTExNUVCREU0QTAwMkUzNTg3
IC8qIEpTU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
Y29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0ODc0QUUyMTVFQkRFNEEw
MDJFMzU4NyAvKiBKU1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ4Q0QxRDcxMDhDRjkwMjAw
ODE2M0M2IC8qIEpTQ29udGV4dFJlZlByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNDb250ZXh0UmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNDk1NTlFRDBERENEREY3MDA2NDgwODcgLyogRGVidWdnZXJDYWxsRnJhbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVidWdnZXJDYWxsRnJhbWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDlCMjRGRjBEOEFGNkQxMDA5Q0I4Qzcg
LyogUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ5REFBRjIxMkVCNTU5RDAwODNCMTJC
IC8qIENvbnNlcnZhdGl2ZVJvb3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbnNlcnZhdGl2ZVJvb3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QTE1
NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlSW5zdGFuY2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNEEyM0Q2QzBGNEUxOUNFMDAyM0NEQUQgLyogSklUU3R1YnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUU3R1YnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNEEzOTZBNjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9s
VGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sVGFibGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRBNjU4MUEwRjRFMzZGNDAwMDE1MEZEIC8q
IEpJVFN0dWJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QUJCMzZFMDk5QzA3NjQwMEUyQTI0RiAv
KiBKU0NKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NKU1Zh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QUJCNDU0MDk5QzJBMEYwMEUy
QTI0RiAvKiBKU1R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QUJERjVEMEE0MzdGRUYwMEVDQ0Ew
MSAvKiBKU0NhbGxiYWNrT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQ2FsbGJhY2tPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRBQkRG
NUUwQTQzN0ZFRjAwRUNDQTAxIC8qIEpTQ2FsbGJhY2tPYmplY3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYWxsYmFja09iamVjdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0QjcyMzNGMTJEN0QwREEwMDNCRDVFRCAvKiBNYWNoaW5lU3Rh
Y2tNYXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjaGlu
ZVN0YWNrTWFya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCNzIzNDAx
MkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYWNoaW5lU3RhY2tNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTRCQTc4RjAxM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNsb3RWaXNpdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0QkE3QTk1MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNEJBN0E5NjEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1v
LmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSB0ZXN0YXBpOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxNEJENUEyOTBBM0U5MUY2MDBCQUY1OUMg
LyogSlNDb250ZXh0UmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0NvbnRleHRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEJENUEy
QTBBM0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0NvbnRleHRSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMTRCRDVBMkIwQTNFOTFGNjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWVSZWYuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxNEJENUEyRDBBM0U5MUY2MDBCQUY1OUMgLyogdGVzdGFwaS5jICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gdGVzdGFwaS5jOyBwYXRoID0gQVBJL3Rl
c3RzL3Rlc3RhcGkuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCRTdEMzIxNzEz
NUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYWtJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkZD
RTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2Vha0dDTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0
Q0E5NThBMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRDQTk1OEMxNkFCNTBGQTAwOTM4QTA2IC8qIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrZWRTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0RDJGM0Q5MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRTcGFjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNEQ3OTI2NDBEQUEwM0ZCMDAxQTlGMDUgLyogSlNTdGFj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0YWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RDg0NEEyMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5
cGVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdG90eXBl
TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREODQ0QTMxNkFBMkM3MDAw
QTY1QUYwIC8qIFByb3RvdHlwZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcm90b3R5cGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREODU3NzQw
QTQ2OTZDODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IG5hbWUgPSB0ZXN0YXBpLmpzOyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAvKiBK
U0FjdGl2YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBY3RpdmF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0REE4MThGMEQ5OUZEMjAwMEIw
QTRGQiAvKiBKU0FjdGl2YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNBY3RpdmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRE
RTBENjgwRDAyNDMxNDAwQUFDQ0EyIC8qIEpTR2xvYmFsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBKU0dsb2JhbE9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRp
ZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OworCQkxNERGMDREOTE2QjM5OTZEMDAxNkE1MTMgLyog
U3RhdGljUHJvcGVydHlBbmFseXNpcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0RTg0Rjk5MTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTRFODRGOUExNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrQmxvY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTRFODRGOUIxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha1NldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RTg0RjlDMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtTZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRFODRGOUQxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtJbXBs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtJbXBsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RjI1MjU2MEQwOEREOEQwMDRFQ0ZGRiAvKiBKU1Zhcmlh
YmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFyaWFibGVP
YmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRGNzI1NjMxNEVFMjY1RTAw
QjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWFrSGFuZGxlT3duZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNEY3MjU2NDE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtIYW5kbGVPd25lci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNEY5NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RW
aXNpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBSb290VmlzaXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTI4RDRBNzE3N0I3MUM4MDAwN0ZB
M0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTU3RyaW5nUmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QUNGNzM3NjE3MUNBNkZCMDBDOUJCMUUgLyogV2Vhay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWFrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM5MDUxNDIwQkE5RThBNzAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkwNTE0NDBCQTlFOEE3MDA4
MUU5RDAgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM5MDUxNDUwQkE5RThBNzAwODFFOUQwIC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUNBQThCNEEwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQ0FBOEI0QjBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdENvcmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdENvcmUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNBQTlBMUMxOEY0OTk3RjAwMEEzNjlEIC8qIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDQUE5QTFEMThGNDk5N0YwMDBBMzY5RCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclByb2ZpbGVyQWdl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNBQTlBMjAxOEY0QTIyMDAwMEEz
NjlEIC8qIEpTR2xvYmFsT2JqZWN0UHJvZmlsZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0FBOUEyMTE4RjRBMjIwMDAwQTM2OUQgLyogSlNH
bG9iYWxPYmplY3RQcm9maWxlckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTR2xvYmFsT2JqZWN0UHJvZmlsZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyog
SlNTdHJpbmdKb2luZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJp
bmdKb2luZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkExMTEyNDMxOTJGQ0U3
OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyQTExMTI0NDE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3RvbUdldHRlclNldHRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTI4MjVDRjE4MzQxRjJEMDA4N0ZC
QTkgLyogRGVsYXllZFJlbGVhc2VTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEZWxheWVkUmVsZWFzZVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJBMzQzRjc0MThBMTc0OEIwMDM5QjA4NSAvKiBHQ1NlZ21lbnRlZEFycmF5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDU2VnbWVudGVkQXJyYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMkEzNDNGNzcxOEExNzQ5RDAwMzlCMDg1IC8qIEdDU2VnbWVudGVk
QXJyYXlJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDU2VnbWVu
dGVkQXJyYXlJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBNEJCN0Yy
MThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE0RUM5MDkxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFy
cmllckJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0
ZUJhcnJpZXJCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTRFQzkw
QTE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRlQmFycmllckJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyQTY4Mjk1QTE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5V3JpdGVCYXJyaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAv
KiBIZWFwT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBP
cGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE3QTU4RUUxODA4QTRD
NDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGVmZXJHQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBODM2Mzgz
MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyog
RWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJBODM2Mzg3MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4ODE4RDdEMEZFMDAw
MEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTJBODgwNjc2MTkxMDdENTUwMENCMEJCQiAvKiBERkdGdW5jdGlvbldoaXRlbGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGdW5jdGlvbldo
aXRlbGlzdC5jcHA7IHBhdGggPSBkZmcvREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyQTg4MDY3NzE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVu
Y3Rpb25XaGl0ZWxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRnVu
Y3Rpb25XaGl0ZWxpc3QuaDsgcGF0aCA9IGRmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3Ry
dWN0dXJlSURCbG9iLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVy
ZUlEQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQUFCQ0RFNjE4RUYyOTQy
MDAwMDIwOTYgLyogR0NMb2dnaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdDTG9nZ2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQUFDRTYzQTE4Q0E1
QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJBQUNFNjNCMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxi
YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBQUQ5NjQ5MTg1Njk0MTcwMDFG
OTNCRSAvKiBSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTJBQzkyMkI5MThBMTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGlu
ZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMRFdBUkZE
ZWJ1Z0xpbmVJbmZvLmNwcDsgcGF0aCA9IGZ0bC9GVExEV0FSRkRlYnVnTGluZUluZm8uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQUM5MjJCQTE4QTE2MTgyMDAzQ0UwRkIgLyog
RlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZUTERXQVJGRGVidWdMaW5lSW5mby5oOyBwYXRoID0gZnRsL0ZUTERXQVJGRGVidWdMaW5lSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQUNDRjNEQzE4NUZFMjZCMDA4M0Uy
QUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkFDQ0YzREQxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVs
aXNpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdG9yZUJh
cnJpZXJFbGlzaW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkFEODkzMjkxN0UzODY4RjAwNjY4
Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIZWFwSXRlcmF0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkFERkEyNjIxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0xvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyQUY3MzgyQTE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkFGNzM4MkIxOEJCQkY5MjAwOEE1
QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3RydWN0dXJlSURUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzFE
ODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1l
ID0gbGliei5keWxpYjsgcGF0aCA9IHVzci9saWIvbGliei5keWxpYjsgc291cmNlVHJlZSA9IFNE
S1JPT1Q7IH07CisJCTQ0OTA5N0VFMEY4RjgxQjUwMDc2QTMyNyAvKiBGZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDUxNTM5QjgxMkRDOTk0NTAw
RUY3QUM0IC8qIFlhcnIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyci5o
OyBwYXRoID0geWFyci9ZYXJyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1RTEy
RDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0ganNjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA0OyB9OworCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91
bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7
IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYx
QiAvKiBsaWJvYmpjLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGli
OyBwYXRoID0gL3Vzci9saWIvbGlib2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+
IjsgfTsKKwkJNTJBRkY0NDgxOTNGRDM1OTAwMURBQUQ0IC8qIFR5cGVTZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gVHlwZVNldC5oOyBwYXRoID0gcHJvZmlsZXIvVHlwZVNldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MkRDOUMxMTE5MzkzMEIxMDBGQTc0NjMgLyogVHlwZVNldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBUeXBlU2V0LmNwcDsgcGF0aCA9IHByb2ZpbGVyL1R5cGVTZXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZBRERFQTE5NDY3QTI0MDBDOEJC
RTUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZBRERF
QzE5NDY3QTdBMDBDOEJCRTUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU1NDA3NTg0MThGNEEzNzUwMDYwMkE1RCAvKiBDb21waWxlUnVudGlt
ZVRvTExWTUlSLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENvbXBp
bGVSdW50aW1lVG9MTFZNSVIueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU1NDA3QUM4MThEQTU4QUQwMEVGRjdGMiAvKiBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmEg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUu
YXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYkNvbXBpbGVSdW50aW1lVG9MTFZNSVIu
YTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNUQ1MzcyNkQwRTFDNTQ2
QjAwMjFFNTQ5IC8qIFRyYWNpbmcuZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUcmFjaW5nLmQ7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVENTM3MjZFMEUxQzU0ODgwMDIxRTU0OSAv
KiBUcmFjaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWNpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUQ1MzcyN0QwRTFDNTVFQzAwMjFFNTQ5IC8q
IFRyYWNpbmdEdHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhY2lu
Z0R0cmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1RDVEOEFEMDBFMEQwRUJF
MDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliZWRp
dC5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07CisJCTVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gSlNDLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1RERERjQ0NjE0RkVFNzIyMDBCNEZCNEQgLyogTExJbnREZXNpcmVkT2Zmc2V0cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERlc2lyZWRPZmZzZXRzLmg7IHBhdGgg
PSBMTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk1REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZh
aWxhYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF2YWls
YWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTA3RDI5NzBFODcxRTRB
MDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1R5cGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1MTEyMkU1MTQw
NDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IHRlc3RSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRh
YmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdFJlZ0V4cDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNjUxNEYyMTcxOEIzRTE2NzAwOThGRjhCIC8qIEJ5
dGVjb2Rlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8q
IEluaXRCeXRlY29kZXMuYXNtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20uYXNtOyBwYXRoID0gSW5pdEJ5dGVjb2Rlcy5hc207
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1MjlGQjMwMThCMkQ2MzkwMEM2MTEwMiAv
KiBnZW5lcmF0ZS1ieXRlY29kZS1maWxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsg
cGF0aCA9ICJnZW5lcmF0ZS1ieXRlY29kZS1maWxlcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTY1MjlGQjMxMThCMkQ5OTkwMEM2MTEwMiAvKiBCeXRlY29kZUxpc3QuanNvbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBCeXRlY29kZUxpc3QuanNvbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjUyQTNBMjAxNjUxQzY2MTAwQTgwQUZFIC8qIEFSTTY0RGlzYXNzZW1ibGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFSTTY0RGlzYXNzZW1i
bGVyLmNwcDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9BUk02NERpc2Fzc2VtYmxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1MkEzQTIyMTY1MUM2OTcwMEE4MEFGRSAvKiBBNjRE
T3Bjb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEE2NERPcGNv
ZGUuY3BwOyBwYXRoID0gZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2NTJBM0EyMzE2NTFDNjk3MDBBODBBRkUgLyogQTY0RE9w
Y29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBNjRET3Bjb2RlLmg7IHBh
dGggPSBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2NTMwM0Q2MzE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlclRva2Vucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2NTQwMEMwRjBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlO
YW1lQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Bl
cnR5TmFtZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU0MDBDMTAw
QTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU5hbWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2NTUzQTMyRjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhj
ZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25T
bG93UGF0aHNFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU1
M0EzMzAxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTVFQjI5QTEwQ0UyNTgxMDAxQTk5MEUg
LyogTm9kZXNDb2RlZ2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE5vZGVzQ29kZWdlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1NjBBNENG
MDRCM0IzRTcwMDhBRTk1MiAvKiBDb3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsg
bmFtZSA9IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1
dGU+IjsgfTsKKwkJNjU2MjFFNkIwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
cm9wZXJ0eVNsb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07
CisJCTY1NjIxRTZDMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlTbG90Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJNjU4NjAxNzcxODVB
OEY1RTAwMDMwRUVFIC8qIE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1OTg3RjJDMTY3RkU4NEIwMDNDMkY4RCAv
KiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0
Q29tcGlsYXRpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1OTg3RjJG
MTY4MjhBN0UwMDNDMkY4RCAvKiBVbnVzZWRQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVudXNlZFBvaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNjVDMDI4NEYxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFSTXY3RGlzYXNzZW1ibGVyLmNwcDsg
cGF0aCA9IGRpc2Fzc2VtYmxlci9BUk12N0Rpc2Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTY1QzAyODVBMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVJNdjdET3Bjb2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVDMDI4NUIxNzE3OTY2ODAwMzUxRTM1
IC8qIEFSTXY3RE9wY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUk12
N0RPcGNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVDMDJGQkIwNjM3NDYy
QTAwM0U3RUU2IC8qIFByb3RlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHJvdGVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IH07CisJCTY1QzdBMTcxMEE4RUFBQ0IwMEZBMzdFQSAvKiBKU1dyYXBwZXJPYmpl
Y3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV3JhcHBlck9i
amVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1QzdBMTcyMEE4RUFBQ0Iw
MEZBMzdFQSAvKiBKU1dyYXBwZXJPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTV3JhcHBlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2
NUU4NjZFRDBERDU5QUZBMDBBMkIyQTEgLyogU291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjVFODY2RUUwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZUNvZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2NUVBNEM5OTA5MkFGOUUyMDA5M0Q4MDAgLyogSlNMb2NrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJNjVF
QTRDOUEwOTJBRjlFMjAwOTNEODAwIC8qIEpTTG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAgLyogQ29t
bW9uSWRlbnRpZmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbW1vbklkZW50aWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVF
QTczNjMwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2NUZCNTExNTE4NEVFOEY4MDBDMTJCNzAgLyogUHJvdG9DYWxsRnJh
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdG9DYWxsRnJhbWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVGQjUxMTYxODRFRTlCQzAwQzEyQjcwIC8q
IFByb3RvQ2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByb3RvQ2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzA0RkQz
NTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCTdDMDA4Q0QwMTg2RjhBOTMwMDk1
NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhj
b2RlLmxhbmcuY3BwOyB9OworCQk3QzAwOENEMTE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNl
RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZUZ1
bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzAwOENEODE4NzEyNEJC
MDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNQcm9taXNlRGVmZXJyZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QzAwOENEOTE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlRGVmZXJyZWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MwMDhDREMxODcxMjU4RDAwOTU1QzI0IC8q
IEpTUHJvbWlzZVJlYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUHJvbWlzZVJlYWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0MwMDhDREQxODcxMjU4RDAwOTU1QzI0IC8qIEpTUHJvbWlzZVJlYWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZVJlYWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDMDA4Q0U1MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWljcm90YXNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTE4MTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21p
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9taXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMTkxN0JFREJEMzAwN0NCNjNB
IC8qIEpTUHJvbWlzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21p
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMUMxN0JFRTIyRTAwN0NC
NjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gSlNQcm9taXNlUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNv
ZGUubGFuZy5jcHA7IH07CisJCTdDMTg0RTFEMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlUHJv
dG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0RTIwMTdCRUUyNDAw
MDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZp
ZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKKwkJN0MxODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTg0
RTI0MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNQcm9taXNlQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDMTg0RTI1MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUu
bHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NGQkFDMUMxOEI1MzVFNTAwRDAwNzUwIC8qIFByb21pc2Uu
cHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUHJv
bWlzZS5wcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFNEVFNzA4
MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3RTRFRTcwRTBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUZGMDA2MzBFQzA1QTlBMDBBQTdDOTMgLyogTm9k
ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZUluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8qIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJYODYuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1i
bGVyWDg2XzY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1i
bGVyWDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDE2MUUyMEYzQTgz
QzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NjAzQ0VGMjE0Qzc1NDY0MDBBRTU5RTMgLyogQ29kZVByb2ZpbGlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2RlUHJvZmlsaW5n
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwM0NFRjMxNEM3NTQ2NDAwQUU1
OUUzIC8qIENvZGVQcm9maWxpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29kZVByb2ZpbGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjA0RjRGMjE0
M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENoYW5nZUxvZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODYwNkRERTkxOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkZW50aWZpZXJJbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MTJFNENCMTUyMjkxODQwMEM4
MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YXRjaFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjE1OEFCMjE1NUM4
QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFByb3BlcnR5TmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjI1
NTNDRTE2MTM2QUE1MDA5RjE3RDAgLyogSlNQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODYyNTUzQ0YxNjEzNkFBNTAwOUYxN0QwIC8qIEpTUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NjNCMjNERjBGQzYwRTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjNDNkQ5ODE1MjExMTEyMDA1ODVFNEUgLyog
WWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwOyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2Fs
aXplVUNTMi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2M0M2RDk5MTUyMTEx
MTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplVUNTMi5oOyBwYXRoID0geWFyci9ZYXJyQ2Fu
b25pY2FsaXplVUNTMi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjNDNkQ5QTE1
MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplVUNTMi5qczsgcGF0aCA9
IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUk02NEFzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NjQwOTIzQzE1NkVFRDNCMDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
ckFSTTY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NUEzMEYwMTM1MDA3RTEw
MENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0NKU1ZhbHVlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NjY3MzlEMDEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCaWdJbnRlZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDE2V2l0aEZyYWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzA0QjQwMTJEQjhBODEwMEE5RkU3QiAvKiBZ
YXJyU3ludGF4Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBZYXJyU3ludGF4Q2hlY2tlci5jcHA7IHBhdGggPSB5YXJyL1lhcnJTeW50YXhDaGVja2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3MDRCNDExMkRCOEE4MTAwQTlGRTdC
IC8qIFlhcnJTeW50YXhDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFlhcnJTeW50YXhDaGVja2VyLmg7IHBhdGggPSB5YXJyL1lhcnJTeW50YXhDaGVja2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzA0QjdEMTJEQkEzMzcwMEE5RkU3QiAvKiBZ
YXJySW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
WWFyckludGVycHJldGVyLmNwcDsgcGF0aCA9IHlhcnIvWWFyckludGVycHJldGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3MDRCN0UxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJySW50
ZXJwcmV0ZXIuaDsgcGF0aCA9IHlhcnIvWWFyckludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg2NzA0QjdGMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJKSVQuY3BwOyBwYXRoID0g
eWFyci9ZYXJySklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3MDRCODAx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gWWFyckpJVC5oOyBwYXRoID0geWFyci9ZYXJySklULmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIv
WWFyclBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjcwNEI4MjEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gWWFyclBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0
dGVybi5oOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERG
R1NwZWN1bGF0aXZlSklUNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODkxNkE5MTU1RjI4NTQwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cml2YXRlTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjlFQkNCNjBFOEM2
RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZXN1bHRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2QTA1NDQ2
MTU1NjQ1MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyLmFzbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsg
bmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2QTA1NDQ3MTU1NjQ1
MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20uYXNtOyBu
YW1lID0gTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbTsgcGF0aCA9IGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2QTA1
NDQ4MTU1NjQ1MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyNjQuYXNtICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20u
YXNtOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbTsgcGF0aCA9IGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2QTkw
RUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEFyaXRobWV0aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVJNdjdBc3NlbWJsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1h
Y3JvQXNzZW1ibGVyQVJNdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkFFNjRB
NjEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJTSDQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODZBRTY0QTcxMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTSDRBc3NlbWJsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVU
cmVlTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlVHJlZU5v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCNTgyMkUxNEQyMzczQjAwQTlD
MzA2IC8qIENvZGVQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvZGVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZCNTgy
MkYxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvZGVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGllcmVkTU1hcEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50cmluc2ljLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2Vt
Ymxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAg
LyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWFjcm9Bc3NlbWJsZXJBUk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyTUlQUy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fz
c2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNSVBTQXNzZW1ibGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Q0EwMzJEMTAzOEU4NDQwMDI4QTYw
OSAvKiBFeGVjdXRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEV4ZWN1dGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkNBRkVFMjEw
MzVEREU2MDAyOEE2MDkgLyogRXhlY3V0YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFeGVjdXRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Q0M4
NUEwMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODZDQzg1QTIwRUU3OUI3NDAwMjg4NjgyIC8qIEpJVENhbGwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSklUQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg2Q0M4NUMzMEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5
RSAvKiBKSVRDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0
IC8qIHRlc3RhcGkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IHRl
c3RhcGkubW07IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUk1Bc3NlbWJsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyog
QVJNQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFSTUFzc2Vt
Ymxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkQzQjJDMTEwMTU2QkRFMDAy
ODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RDNCMkMyMTAxNTZCREUwMDI4NjVFNyAvKiBN
YWNyb0Fzc2VtYmxlckFSTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNy
b0Fzc2VtYmxlckFSTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkQzQjNDMTEw
MTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMaW5rQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RDNC
M0MyMTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlcGF0Y2hCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODZEQjY0NjMwRjk1QzZGQzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhl
ZFZNUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVjdXRh
YmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NkUzQzYwNjE2N0JBQjg3MDA2RDc2MEEgLyogSlNWYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg2RTNDNjA3MTY3QkFCODcwMDZENzYwQSAvKiBKU0NvbnRleHQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg2RTNDNjA4MTY3QkFCODcwMDZENzYwQSAvKiBKU0NvbnRleHQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU0NvbnRleHQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RTNDNjA5MTY3QkFCODcwMDZENzYwQSAvKiBKU0Nv
bnRleHRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NvbnRl
eHRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkUzQzYwQTE2N0JB
Qjg3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNFeHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZFM0M2MEIxNjdC
QUI4NzAwNkQ3NjBBIC8qIEpTV3JhcHBlck1hcC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEpTV3JhcHBlck1hcC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODZFM0M2MEMxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTV3JhcHBlck1hcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dyYXBwZXJNYXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODZFM0M2MEQxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTVmFsdWUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU1ZhbHVlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NkUzQzYwRTE2N0JBQjg3MDA2RDc2MEEgLyogSlNWYWx1
ZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVJbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkUzQzYwRjE2N0JBQjg3MDA2
RDc2MEEgLyogSlNWaXJ0dWFsTWFjaGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1ZpcnR1YWxNYWNoaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2
RTNDNjEwMTY3QkFCODcwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNWaXJ0dWFsTWFjaGluZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZFM0M2MTExNjdCQUI4NzAwNkQ3NjBBIC8qIEpTVmly
dHVhbE1hY2hpbmVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODZFODU1MzgxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODZFQkYyRjkxNTYwRjAzNjAwOEU5MjIyIC8qIE5hbWVDb25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYW1lQ29uc3RydWN0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkVCRjJGQTE1NjBGMDM2MDA4
RTkyMjIgLyogTmFtZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hbWVDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkVC
RjJGQjE1NjBGMDM2MDA4RTkyMjIgLyogTmFtZUluc3RhbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hbWVJbnN0YW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg2RUJGMkZDMTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1lSW5zdGFuY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFtZUluc3RhbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RUJGMkZEMTU2MEYwMzYwMDhFOTIyMiAvKiBOYW1lUHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hbWVQcm90
b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkVCRjJGRTE1NjBGMDM2
MDA4RTkyMjIgLyogTmFtZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOYW1lUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RUM5
REI0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCeXRlQ29kZVBhcnNlci5jcHA7IHBhdGggPSBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NkVDOURCNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVQYXJzZXIuaDsgcGF0aCA9IGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkVDOURC
NjEzMjhERjgyMDAyQjJBRDcgLyogREZHR2VuZXJhdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHR2VuZXJhdGlvbkluZm8uaDsgcGF0aCA9IGRmZy9ERkdHZW5l
cmF0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkVDOURCNzEzMjhE
RjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHR3JhcGguY3BwOyBwYXRoID0gZGZnL0RGR0dyYXBoLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZFQzlEQjgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0dyYXBoLmg7IHBhdGggPSBk
ZmcvREZHR3JhcGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZFQzlEQkIxMzI4
REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0pJVENvbXBpbGVyLmNwcDsgcGF0aCA9IGRmZy9ERkdKSVRDb21w
aWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RUM5REJDMTMyOERGODIw
MDJCMkFENyAvKiBERkdKSVRDb21waWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdKSVRDb21waWxlci5oOyBwYXRoID0gZGZnL0RGR0pJVENvbXBpbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RUM5REJGMTMyOERGODIwMDJCMkFENyAvKiBERkdP
cGVyYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09w
ZXJhdGlvbnMuY3BwOyBwYXRoID0gZGZnL0RGR09wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NkVDOURDMDEzMjhERjgyMDAyQjJBRDcgLyogREZHT3BlcmF0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPcGVyYXRpb25zLmg7IHBh
dGggPSBkZmcvREZHT3BlcmF0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NkVDOURDMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJCYW5rLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1JlZ2lzdGVyQmFuay5oOyBwYXRoID0gZGZnL0RGR1Jl
Z2lzdGVyQmFuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkVDOURDMjEzMjhE
RjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQuY3BwOyBwYXRoID0gZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZFQzlEQzMx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklULmg7IHBhdGggPSBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZFQ0EzRTkxMzJERUYx
QzAwMkIyQUQ3IC8qIERGR05vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHTm9kZS5oOyBwYXRoID0gZGZnL0RGR05vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODZFQ0EzRjkxMzJERjI1QTAwMkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU2NvcmVCb2FyZC5oOyBwYXRoID0gZGZnL0RG
R1Njb3JlQm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZGM0VFQjYxNjg1
NUE1QjAwNzdCOTJBIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE9iamNSdW50aW1lRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg2RjNFRUI5MTY4Q0NGNzUwMDc3QjkyQSAvKiBPYmpDQ2FsbGJhY2tGdW5jdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmpDQ2FsbGJhY2tGdW5jdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkYzRUVCQTE2OENDRjc1MDA3N0I5MkEg
LyogT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBPYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODZGNzVFRkIxNTFDMDYyRjAwN0M5QkEzIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZWRSZXN1
bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkY3NUVGQzE1MUMwNjJGMDA3
QzlCQTMgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZ0V4cENhY2hlZFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NkY3NUVGRDE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cE1hdGNoZXNBcnJheS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAv
KiBKU0JvdW5kRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNCb3VuZEZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZG
QTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0JvdW5kRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTAyMTNFM0IxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGlj
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0
MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeVN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMw
NTJDMzIwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlckFyZW5hLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29uc3Ry
dWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vZGVDb25zdHJ1Y3Rv
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyMkEwMDMwNkMzNDFEMzAwOTA2
N0JCIC8qIGxpYmljdWNvcmUuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmljdWNv
cmUuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJpY3Vjb3JlLmR5bGliOyBzb3VyY2VUcmVlID0g
IjxhYnNvbHV0ZT4iOyB9OworCQk5MzJGNUJEODA4MjJBMUM3MDA3MzY5NzUgLyogSW5mby5wbGlz
dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMTsgfTsKKwkJOTMyRjVCRDkw
ODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1
IC8qIGpzYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0g
ImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0g
anNjOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5MzMwM0ZFODBFNkE3
MkI1MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNtYWxsU3RyaW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzMzAzRkVBMEU2QTcyQzAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU21hbGxTdHJpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzMzQ1QTg3MTJEODM4QzQwMDMwMkJFMyAvKiBTdHJpbmdSZWN1cnNpb25D
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzM0NUE4
ODEyRDgzOEM0MDAzMDJCRTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdSZWN1cnNpb25DaGVja2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzM0EzNDlBMDM4QUU3QzYwMDg2MzVDRSAvKiBJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJ
CTkzM0EzNDlEMDM4QUU4MEYwMDg2MzVDRSAvKiBJZGVudGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWRlbnRpZmllci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJOTM3QjYzQ0MwOUU3
NjZEMjAwQTY3MUREIC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUubWFrZTsgZmlsZUVuY29kaW5n
ID0gNDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzLm1ha2U7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHVzZXNUYWJzID0gMTsgfTsKKwkJOTM4NzcyRTUwMzhCRkUxOTAwODYzNUNFIC8qIEpTQXJyYXku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fy
cmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJOTNBREZD
RTYwQ0NCRDdBQzAwRDMwQjA4IC8qIEpTQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzQ0VEREZCMEVBOTFFRTYwMDI1OEVCRSAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwTWF0Y2hlc0FycmF5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjBCM0E5MDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGMEIzQUEwOUJCNERDMDAwNjhGQ0UzIC8qIFBh
cnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGMTk4MUEwODI0NUFBRTAwMUU5QUJDIC8qIEtleXdv
cmRzLnRhYmxlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gS2V5d29y
ZHMudGFibGU7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJOTUy
QzYzQUMwRTQ3NzdENjAwQzEzOTM2IC8qIEpTUHJvZmlsZXJQcml2YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvZmlsZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk1NzQyRjYzMEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGUuY3BwOyBwYXRoID0g
cHJvZmlsZXIvUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1NzQy
RjY0MEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFByb2ZpbGUuaDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpTUHJvZmls
ZXJQcml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJv
ZmlsZXJQcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTVBQjgzMkUw
REE0MkNBRDAwQkM4M0YzIC8qIExlZ2FjeVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IExlZ2FjeVByb2ZpbGVyLmNwcDsgcGF0aCA9IHByb2ZpbGVyL0xl
Z2FjeVByb2ZpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTVBQjgzMkYw
REE0MkNBRDAwQkM4M0YzIC8qIExlZ2FjeVByb2ZpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExlZ2FjeVByb2ZpbGVyLmg7IHBhdGggPSBwcm9maWxlci9MZWdhY3lQcm9m
aWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUFCODM1NDBEQTQzQjQ0MDBC
QzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUHJvZmlsZU5vZGUuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUFCODM1NTBEQTQzQjQ0MDBCQzgzRjMgLyog
UHJvZmlsZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZU5v
ZGUuaDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk1QzE4RDNFMEM5MEU3RUYwMEU3MkY3MyAvKiBKU1JldGFpblB0ci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JldGFpblB0ci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5NUNENDU3NDBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVy
YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlR2Vu
ZXJhdG9yLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5NUNENDU3NTBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmls
ZUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlR2Vu
ZXJhdG9yLmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk1RTNCQzA0MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDYWxsSWRlbnRpZmllci5o
OyBwYXRoID0gcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTYwMDk3QTUwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFiZWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VtYmxlckJ1ZmZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyog
WDg2QXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFg4NkFzc2Vt
Ymxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NjlBMDcyMDBFRDFDRTMzMDBG
MUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NjlBMDcyMTBFRDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTY5QTA3MjcwRUQxQ0U2OTAwRjFGNjgxIC8qIExh
YmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhYmVsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk2OUEwNzI4MEVEMUNFNjkwMEYxRjY4MSAvKiBSZWdpc3Rl
cklELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVySUQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTY5QTA3OTAwRUQxRDNBRTAwRjFGNjgxIC8qIENv
ZGVCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2RlQmxv
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NjlBMDc5MTBFRDFEM0FFMDBG
MUY2ODEgLyogQ29kZUJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
ZGVCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NjlBMDc5MjBFRDFEM0FF
MDBGMUY2ODEgLyogRXZhbENvZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFdmFsQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk2OUEw
NzkzMEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnN0cnVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5NjlBMDc5NDBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk2OUEwNzk1MEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT3Bjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk2OUEwOTIyMEVEMUUwOUMwMEYxRjY4MSAvKiBDb21wbGV0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBsZXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5Nzg4RkMyMjE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RhdGVNYXRoLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc4OEZDMjMxNDcxQUQwQzAwNjhDRTJEIC8q
IEpTRGF0ZU1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEYXRlTWF0
aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTI4RkYzOTE4QUM0QUVDMDBCOENG
MTIgLyogSlNSZXBsYXlJbnB1dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNSZXBsYXlJbnB1dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OTI4RkYzQTE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZXBsYXlJbnB1dHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTkyOEZGM0QxOEFDNEIxQzAwQjhDRjEyIC8qIEpTSW5wdXRzLmpzb24gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmpzb247IHBhdGggPSBKU0lucHV0cy5qc29uOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OUU0NUExRDE4QTFCMUU3MDAyNkQ4OEYgLyogQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0cy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVH
ZW5lcmF0b3JSZXBsYXlJbnB1dHMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5
RTQ1QTFFMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVtcGxh
dGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRv
clJlcGxheUlucHV0c1RlbXBsYXRlcy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTlFNDVBMUYxOEExQjI1OTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW1wdHlJbnB1dEN1cnNvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5OUU0NUEyMDE4QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVuY29kZWRWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5RTQ1QTIxMThBMUIyNTkwMDI2RDg4
RiAvKiBFbmNvZGVkVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW5j
b2RlZFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5RTQ1QTIyMThBMUIy
NTkwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnB1dEN1cnNvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUU0NUEy
MzE4QTFCMjU5MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbmRldGVybWluaXN0aWNJbnB1dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMTcxMkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2Fj
aGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUz
MTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVn
RXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3MTJCNDAxMUM3QjIz
NTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUwM0ZBMTMxODhF
MEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1MDNGQTE0MTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0
Q2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRD
YWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUwM0ZBMTUxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNTAzRkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSmF2YVNj
cmlwdENhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTAzRkExNzE4
OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSmF2YVNjcmlwdENhbGxGcmFtZVBy
b3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MDNGQTE4MTg4RTBG
QjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAv
KiBTY3JpcHRCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUwM0ZBMjAx
ODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTAzRkEyMzE4OEVGRkZEMDAxMTBGMTQgLyogU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTAzRkEyNDE4OEVGRkZE
MDAxMTBGMTQgLyogU2NyaXB0RGVidWdTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NyaXB0RGVidWdTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTUwM0ZBMjcxODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxP
YmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1MDNGQTI4MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2Vy
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0U2Ny
aXB0RGVidWdTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUwRTRCNUQx
ODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTBFNEI1RTE4ODA5REQ1MDA2OEE0NkQgLyogSW5z
cGVjdG9yUnVudGltZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTBF
NEI1RjE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTBFNEI2MDE4ODA5REQ1
MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUxMDA3QkUxODdDQzNDNjAwQjM4ODc5IC8qIEpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNTEwMDdCRjE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNTEzRTVCNTE4NUI4QkQzMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3Jp
cHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3Jp
cHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTEzRTVCNjE4NUI4QkQzMDA3
RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5qZWN0ZWRTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUxM0U1
QjkxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdEhvc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTUxM0U1QkExODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUxM0U1QkIx
ODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE1MTNFNUJDMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1MTNFNUJEMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTEz
RTVDMzE4NUY5MkM5MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IHBhdGggPSBJbmplY3RlZFNjcmlwdFNvdXJjZS5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTUxM0U1QzQxODVGOTJEQzAwN0U5NUFEIC8qIGpzbWluLnB5ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0ganNtaW4ucHk7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1MTNFNUM1MTg1RjkyRjAwMDdFOTVBRCAvKiB4eGQucGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0geHhkLnBsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUxM0U1QzgxODVGOTYyNDAwN0U5NUFE
IC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFu
YWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTE0QjJDMDE4NUE2ODQ0MDBG
M0M3Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1MTRCMkMxMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MzI0MzgxMTg1NjgzMTcwMDJFRDY5MiAv
KiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1MzI0MzgyMTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNw
YXRjaGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTMyNDM4MzE4NTY4MzE3MDAyRUQ2OTIg
LyogSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1MzI0Mzg0MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0Zyb250ZW5k
RGlzcGF0Y2hlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNo
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MzI0Mzg1MTg1NjgzMTcwMDJF
RDY5MiAvKiBJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1MzI0Mzg2MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTMyNDM4RDE4NTY5NkNBMDAyRUQ2OTIgLyogcHJvdG9jb2wgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGgg
PSBwcm90b2NvbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUzMjQzOEYxODU2OTZF
NjAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5weXRob247IHBhdGggPSBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNTMyNDM5MDE4NTY5NkU2MDAyRUQ2OTIgLyogQ29kZUdlbmVy
YXRvckluc3BlY3RvclN0cmluZ3MucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBh
dGggPSBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTUzMjQzOTExODU2OTZFNjAwMkVENjkyIC8qIGdlbmVyYXRlLWNvbWJpbmVk
LWluc3BlY3Rvci1qc29uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0g
ImdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5Ijsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTUzMjQzOTUxODU2QTQ3NTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmpzb247IHBhdGggPSBJbnNwZWN0b3JKUy5qc29uOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNTMyNDM5NjE4NTZBNDc1MDAyRUQ2OTIgLyogSW5zcGVjdG9y
SlNCYWNrZW5kQ29tbWFuZHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBJbnNwZWN0b3JKU0JhY2tlbmRDb21tYW5kcy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTUzQ0UwODExOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc29sZVByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1M0NFMDgyMThCQzFBNTYwMEJFREY3
NiAvKiBDb25zb2xlUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbnNvbGVQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUzQ0Uw
ODMxOEJDMUE1NjAwQkVERjc2IC8qIEpTQ29uc29sZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NvbnNvbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNTNDRTA4NDE4QkMxQTU2MDBCRURGNzYgLyogSlNDb25zb2xlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29uc29sZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTNDRTA4OTE4QkMyMUMzMDBCRURGNzYgLyogQ29uc29sZUNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1M0YxQUJFMThDOTBFQzcwMDcyRUI2RCAvKiBmcmFtZXdvcmsu
c2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gZnJhbWV3b3JrLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTQ5
ODIwMTE4OTFEMEIwMDA4MUU1QjggLyogRXZlbnRMb29wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50TG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1NDk4MjAyMTg5MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3AuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1NENGMkYyMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRWYWx1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NENGMkYzMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3Jp
cHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRWYWx1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTRDRjJGNzE4NEVBRURBMDAyMzdGMTkg
LyogU2NyaXB0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNjcmlwdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NENGMkY4
MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1NUQ5M0EzMTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU1RDkzQTQxODUwMTJBODAwNDAwREVEIC8q
IFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JpcHRGdW5jdGlvbkNhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU1RDkz
QUIxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclR5cGVCdWlsZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1N0QyM0UzMTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NTdEMjNFNDE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1N0QyM0U3MTg5MUIwNzcwMDMxQzdGQSAvKiBK
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTU3RDIzRTgxODkxQjA3NzAwMzFDN0ZBIC8qIEpTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTU3RDIzRUIxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlZ3VsYXJFeHByZXNzaW9uLmNwcDsgcGF0
aCA9IHlhcnIvUmVndWxhckV4cHJlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNTdEMjNFQzE4OTFCNTU0MDAzMUM3RkEgLyogUmVndWxhckV4cHJlc3Npb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVndWxhckV4cHJlc3Npb24uaDsgcGF0aCA9
IHlhcnIvUmVndWxhckV4cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTU3RDIzRUYxODkxQjVCNDAwMzFDN0ZBIC8qIENvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudFNlYXJjaFV0aWxpdGll
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1N0QyM0YwMTg5MUI1QjQwMDMx
QzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTU4NDBFMUUxODdCN0I4NjAwODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkU2NyaXB0
TW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU4NDBFMUYxODdCN0I4
NjAwODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1ODQwRTI2MTg3Qzk4MDcwMDg0M0IxMCAvKiBjc3NtaW4ucHkgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBjc3NtaW4ucHk7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1ODQwRTI4MTg3Q0E1QjgwMDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlm
eS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhv
bjsgcGF0aCA9ICJpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OEMwMjQxMThFNEE0MUEwMDAzMkJDNSAv
KiBKU0NvbnRleHRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Q29udGV4dFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU4RTM1OTAx
ODYwREVDNzAwMUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbmplY3RlZFNjcmlwdEhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNTkzQ0Y3QTE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y3QjE4
NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIElu
c3BlY3RvckFnZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JBZ2VudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGODAx
ODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTkzQ0Y4MTE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclZhbHVlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4NDE4NDAzOENBMDBCRkNFMjcgLyog
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTU5M0NGODUxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU4RTE4MjQ1RURFMDBD
QzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1OTAxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU5NDE4MjQ3OUVC
MDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNUI2QTc0QzE4QzZEQkE2MDBGMTFFOTEgLyogQ29uc29sZUNsaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zb2xlQ2xpZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTExODIzNDBCMzAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1
RTIxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUluc3BlY3Rvci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3RvckNvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJ
bnNwZWN0b3JDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1
RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUU1
MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NUJBMTVFNjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUU3MTgyMzQwQjMw
MEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNUMzQTFBMzE4QzA0OTAyMDBDOTU5M0EgLyogSlNDb25zb2xlQ2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29uc29sZUNsaWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QzNBMUE0MThDMDQ5MDIwMEM5NTkz
QSAvKiBKU0NvbnNvbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1Q0VFRTEy
MTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1Q0VFRTEzMTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBZ2VudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUQwQTFCQTE4NjIzMDFCMDBDN0I0OTYgLyogSW5z
cGVjdG9yRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVGRDAw
NjUxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNUZEMDA2NjE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1l
bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEFyZ3VtZW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUZEMDA2OTE4OUIwMEE5MDA2MzMyMzEg
LyogU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNjcmlwdENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
RkQwMDZBMTg5QjAwQTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1RkQwMDZCMTg5QjAwQTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsU3RhY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbFN0YWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVGRDAwNkMxODlCMDBBQTAwNjMz
MjMxIC8qIFNjcmlwdENhbGxTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHRDYWxsU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVGRDAw
NzExODlCMDM4QzAwNjMzMjMxIC8qIENvbnNvbGVUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb25zb2xlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTVGRDAwNzIxODlCMDM4QzAwNjMzMjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZGVudGlmaWVyc0ZhY3RvcnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUZEMDA3MzE4OUIwMzhDMDA2MzMyMzEg
LyogSWRlbnRpZmllcnNGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElkZW50aWZpZXJzRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUZE
MDA3NzE4OUIwNTEwMDA2MzMyMzEgLyogQ29uc29sZU1lc3NhZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc29sZU1lc3NhZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNUZEMDA3ODE4OUIwNTEwMDA2MzMyMzEgLyogQ29uc29sZU1lc3Nh
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc29sZU1lc3NhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVGRDAwN0IxODlCMEI0QzAwNjMzMjMxIC8q
IFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1RkQwMDdDMTg5QjBCNEMwMDYzMzIzMSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVGRDAwN0YxODlCMTkxQTAw
NjMzMjMxIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNUZEMDA4MDE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29u
c29sZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNv
bnNvbGVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUZEMDA4MzE4OUIx
QjdFMDA2MzMyMzEgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUZEMDA4NDE4OUIxQjdFMDA2MzMyMzEg
LyogSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTcwMDg3MzcxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcENvbnN0cnVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQz
IC8qIE1hcENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
cENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MDA4NzNCMTdD
QkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWFwUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTcwMDg3M0MxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTcwMDg3M0YxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWFwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3MDQ0N0U5MTdBMEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BlcmFuZHNJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MDQ0N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBE
dW1wQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEdW1w
Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MDQ0N0VDMTdBMEJE
NzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEdW1wQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzA0RDhG
RTE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBYnN0cmFjdEludGVycHJldGVyLmg7IHBhdGggPSBk
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNzA0RDhGRjE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzA0RDkwMDE3QTBCQUE4MDA2QkE1NTQg
LyogREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcw
NEQ5MDExN0EwQkFBODAwNkJBNTU0IC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg7IHBh
dGggPSBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTcwNEQ5MDIxN0EwQkFBODAwNkJBNTU0IC8qIERGR01lcmdlTW9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNZXJnZU1vZGUuaDsgcGF0aCA9IGRmZy9E
RkdNZXJnZU1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwOUYyRUYxN0Ew
QUMwNDAwNTEyRTk4IC8qIFNsb3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTbG93UGF0aENhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcw
OUYyRjExN0EwQUMyQTAwNTEyRTk4IC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25TbG93UGF0aHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNzBCMDgzMDE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5
U3dpdGNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0JpbmFy
eVN3aXRjaC5jcHA7IHBhdGggPSBkZmcvREZHQmluYXJ5U3dpdGNoLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTcwQjA4MzExN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3
aXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCaW5hcnlTd2l0Y2gu
aDsgcGF0aCA9IGRmZy9ERkdCaW5hcnlTd2l0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyog
UmVnRXhwSml0VGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4
cEppdFRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzE4RjgyMTExNzhF
QjRCMDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2Rp
bmcgPSA0OyBwYXRoID0gY3JlYXRlX3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5z
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0
aW5zIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyMDI4QjQxNzk3NjAxRTAwOTgw
MjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyog
SlNGdW5jdGlvbklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNG
dW5jdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyNzAwNzcw
REFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNOb3RBbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNzI3MDA3ODBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vdEFuT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyNzAxQjMwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlv
bkhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uSGVs
cGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzI3RkY2NTBEQTMwNTNCMDBF
NTQ4RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzI5MDA5QjE3
OTc2QzYwMDAzMTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEOUIxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEOUMxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3Mjk5RDlGMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2V0UHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEQTAxN0QxMjg0ODAwNUY1
RkY5IC8qIFNldFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEQTMxN0Qx
Mjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNldENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTcyOTlEQTQxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldENvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RF
dmFsQWN0aXZhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpY3RF
dmFsQWN0aXZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzMwQjYxMTEy
NTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNzM3ODEwOTE3OTlFQTJFMDA4MTc1MzMgLyogREZHQW5h
bHlzaXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQW5hbHlzaXMuaDsg
cGF0aCA9IGRmZy9ERkdBbmFseXNpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NzM3ODEwQTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05hdHVyYWxMb29wcy5jcHA7IHBhdGggPSBk
ZmcvREZHTmF0dXJhbExvb3BzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcz
NzgxMEIxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdOYXR1cmFsTG9vcHMuaDsgcGF0aCA9IGRmZy9ERkdOYXR1
cmFsTG9vcHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTczODY1NTExMTg2OTdC
NDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3BlY2lhbGl6ZWRUaHVua0pJVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNzM4NjU1MjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRodW5rR2VuZXJhdG9ycy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Mzg2NTUzMTE4Njk3QjQwMDU0MDI3OSAv
KiBUaHVua0dlbmVyYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGh1
bmtHZW5lcmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3M0E1MzU4MTc5
OUNENUQwMDE3MEMxOSAvKiBERkdMYXp5SlNWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdMYXp5SlNWYWx1ZS5jcHA7IHBhdGggPSBkZmcvREZHTGF6eUpT
VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzNBNTM1OTE3OTlDRDVE
MDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHTGF6eUpTVmFsdWUuaDsgcGF0aCA9IGRmZy9ERkdMYXp5SlNWYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzNFMTMyQzE3OTYyNENEMDBFNERFQTggLyogREZH
RGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcDsgcGF0aCA9IGRmZy9ERkdEZXNp
cmVkU3RydWN0dXJlQ2hhaW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcz
RTEzMkQxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5o
OyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTc0MTAxN0UxNzlEQUY4MDAwMkVCOEJBIC8qIERGR1NhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmg7IHBhdGggPSBkZmcv
REZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTc0ODJCNzkxMTY2Q0RFQTAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1h
cFJlZlByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFrT2Jq
ZWN0TWFwUmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzQ4MkI3
QTExNjZDREVBMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc0ODJFMzcxMTZBNjk3QjAwM0Iw
NzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3NERFMUNCMTIwQjg2RDYwMEQ0MEQ1QiAvKiBBUk12N0Fzc2VtYmxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUk12N0Fzc2VtYmxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NERFRjhCMTgyRDk5MTQwMDUy
MkMyMiAvKiBNYXBJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1hcEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNzRERUY4QzE4MkQ5OTE0MDA1MjJDMjIgLyogTWFwSXRlcmF0b3JD
b25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBJdGVyYXRv
ckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NERFRjhEMTgy
RDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXBJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NERFRjhFMTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVy
YXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBJdGVy
YXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzRERUY4RjE4
MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU01hcEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTc0REVGOTAxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYXBJdGVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNzU3MDZERDExOEEyQkNGMDA1N0Y4OEYgLyogSklUQXJpdGht
ZXRpYzMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEFy
aXRobWV0aWMzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NUVFOUIw
MThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnVpbHRpbk5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3NjE0MEM3MTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzYxNDBD
ODE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NjE0MEM5MTgyOTgyQ0IwMDc1MDYy
NCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklk
ZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKKwkJQTc2MTQwQ0ExODI5ODJDQjAwNzUwNjI0
IC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3NjE0MENCMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXJndW1lbnRz
SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzYxNDBDQzE4Mjk4
MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVudHNJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0FyZ3VtZW50c0l0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3NjdCNUIzMTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3Jl
YXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdM
b29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHTG9vcFByZUhlYWRl
ckNyZWF0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzY3QjVC
NDE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhh
c2UuaDsgcGF0aCA9IGRmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNzZDNTE3NDExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRl
cmZhY2VKSVQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcmZhY2VK
SVQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc2RjU0QTIxM0IyOEFBQjAwRUYy
QkNFIC8qIEpJVFdyaXRlQmFycmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKSVRXcml0ZUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc3QTQy
MzYxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdEhlYXAuY3BwOyBwYXRoID0gZGZnL0RG
R0Fic3RyYWN0SGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3N0E0MjM3
MTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQWJzdHJhY3RIZWFwLmg7IHBhdGggPSBkZmcvREZHQWJzdHJhY3RI
ZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3N0E0MjM4MTdBMEJCRkQwMEE4
REI4MSAvKiBERkdDbG9iYmVyaXplLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR0Nsb2JiZXJpemUuY3BwOyBwYXRoID0gZGZnL0RGR0Nsb2JiZXJpemUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzdBNDIzOTE3QTBCQkZEMDBBOERCODEgLyog
REZHQ2xvYmJlcml6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9i
YmVyaXplLmg7IHBhdGggPSBkZmcvREZHQ2xvYmJlcml6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNzdBNDIzQTE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlclNldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDbG9iYmVyU2V0LmNwcDsg
cGF0aCA9IGRmZy9ERkdDbG9iYmVyU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTc3QTQyM0IxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Nsb2JiZXJTZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ2xvYmJlclNldC5oOyBwYXRoID0gZGZnL0RGR0Ns
b2JiZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc3QTQyM0MxN0EwQkJG
RDAwQThEQjgxIC8qIERGR1NhZmVUb0V4ZWN1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHU2FmZVRvRXhlY3V0ZS5oOyBwYXRoID0gZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc3RjE4MUYxNjQwODhCMjAwNjQwQTQ3
IC8qIENvZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
b2RlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzdGMTgyMDE2NDA4
OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzdGMTgyNDE2
NDE5MjU0MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyTW9k
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4NTA3RDQxN0NCQzZGRDAwMTFG
NkU3IC8qIE1hcERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3ODUwN0Q1MTdDQkM2
RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4ODUzRjcxNzk3MjYy
OTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRl
ZFN0cnVjdHVyZUNoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVu
ZGVkU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4QTk3
NkMxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGYWlsZWRGaW5hbGl6ZXIuY3BwOyBwYXRoID0g
ZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3OEE5NzZEMTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWlsZWRGaW5hbGl6ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRmFpbGVkRmluYWxpemVyLmg7IHBhdGggPSBk
ZmcvREZHRmFpbGVkRmluYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
OEE5NzZFMTc5NzM4QjgwMDlERjc0NCAvKiBERkdGaW5hbGl6ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRmluYWxpemVyLmNwcDsgcGF0aCA9IGRmZy9ERkdG
aW5hbGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzhBOTc2RjE3OTcz
OEI4MDA5REY3NDQgLyogREZHRmluYWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR0ZpbmFsaXplci5oOyBwYXRoID0gZGZnL0RGR0ZpbmFsaXplci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNzhBOTc3MDE3OTczOEI4MDA5REY3NDQgLyogREZHSklU
RmluYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0pJ
VEZpbmFsaXplci5jcHA7IHBhdGggPSBkZmcvREZHSklURmluYWxpemVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4QTk3NzExNzk3MzhCODAwOURGNzQ0IC8qIERGR0pJVEZp
bmFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdKSVRGaW5hbGl6
ZXIuaDsgcGF0aCA9IGRmZy9ERkdKSVRGaW5hbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTc4QTk3NzIxNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGxhbi5jcHA7IHBhdGggPSBkZmcvREZH
UGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3OEE5NzczMTc5NzM4Qjgw
MDlERjc0NCAvKiBERkdQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R1BsYW4uaDsgcGF0aCA9IGRmZy9ERkdQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3OEE5NzdDMTc5NzM4RDUwMDlERjc0NCAvKiBGVExHZW5lcmF0ZWRGdW5jdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExHZW5lcmF0ZWRGdW5jdGlvbi5oOyBw
YXRoID0gZnRsL0ZUTEdlbmVyYXRlZEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3OEE5NzdEMTc5NzM4RDUwMDlERjc0NCAvKiBGVExKSVRGaW5hbGl6ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMSklURmluYWxpemVyLmNwcDsg
cGF0aCA9IGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNzhBOTc3RTE3OTczOEQ1MDA5REY3NDQgLyogRlRMSklURmluYWxpemVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEpJVEZpbmFsaXplci5oOyBwYXRoID0gZnRs
L0ZUTEpJVEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzkwREQ2
NTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRJdGVyYXRvckNvbnN0cnVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc5MERENjYxODJGNDk5NzAwNTg4ODA3IC8q
IFNldEl0ZXJhdG9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2V0SXRlcmF0b3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNzkwREQ2NzE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2V0SXRlcmF0b3JQcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzkwREQ2ODE4MkY0OTk3MDA1ODg4
MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2V0SXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTc5MERENjkxODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXRJdGVyYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3OTBERDZBMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2V0SXRlcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc5ODZENTYxN0EwQkIxRTAwQTk1REQw
IC8qIERGR0VkZ2VVc2VzU3RydWN0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0VkZ2VVc2VzU3RydWN0dXJlLmg7IHBhdGggPSBkZmcvREZHRWRnZVVzZXNTdHJ1Y3R1
cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc5RTc4MUUxNUVFQ0JBODAwNDdD
ODU1IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVubGlua2VkQ29kZUJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTc5RTc4MUYxNUVFQ0JBODAwNDdDODU1IC8qIFVubGlua2VkQ29kZUJsb2NrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVubGlua2VkQ29kZUJsb2NrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3OUVEQjA4MTE1MzFDRDYwMDE5RTkxMiAvKiBKU09i
amVjdFJlZlByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPYmpl
Y3RSZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QTRBRTA3MTc5
NzNCMjYwMDU2MTJCMSAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QTRBRTBDMTc5NzNCNEQwMDU2MTJCMSAvKiBK
SVRTdHVic1g4NkNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRT
dHVic1g4NkNvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E3RUU3NDEx
Qjk4QjhEMDA2NUExNEYgLyogQVNUQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBU1RCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QTdF
RTc3MTFCOThCOEQwMDY1QTE0RiAvKiBTeW50YXhDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN5bnRheENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTdBOEFGMjUxN0FEQjVGMjAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QnVmZmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVm
ZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QnVmZmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjI3MTdBREI1RjMwMDVBQjE3NCAvKiBB
cnJheUJ1ZmZlclZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXJyYXlCdWZmZXJWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFG
MjgxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdBOEFGMjkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdDMyQXJyYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdDY0QXJyYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMkIxN0FEQjVGMzAwNUFCMTc0IC8qIElu
dDhBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQ4QXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMkMxN0FEQjVGMzAwNUFCMTc0IC8q
IEludDE2QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50MTZBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyRDE3QURCNUYzMDA1QUIx
NzQgLyogSW50MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQz
MkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjMwMTdBREI1RjMw
MDVBQjE3NCAvKiBVaW50OEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVpbnQ4QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMzExN0FE
QjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVpbnQ4Q2xhbXBlZEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MTZBcnJheS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MTZBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBN0E4QUYzMzE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDMyQXJyYXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOTc5QzQxOEJFOEQ5RTAwMkMzNzMzIC8qIEZ1bmN0aW9u
LnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEZ1
bmN0aW9uLnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCNDhE
QjUwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0YWJsZUFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBN0I0OERCNjBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCNEFDQUUx
NDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRXhwb3J0TWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3QkRBRUMwMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlJdGVyYXRvckNv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCREFFQzExN0Y0
RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCREFFQzIxN0Y0RUExNDAwRjYxNDBDIC8qIEFycmF5SXRl
cmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5k
aW5nID0gMDsgcGF0aCA9IEFycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5n
LmNwcDsgfTsKKwkJQTdCREFFQzMxN0Y0RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JQcm90
b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0JEQUVDNDE3RjRFQTE0
MDBGNjE0MEMgLyogSlNBcnJheUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBKU0FycmF5SXRlcmF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29k
ZS5sYW5nLmNwcDsgfTsKKwkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FycmF5SXRlcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCRkYzQkYxNzk4Njg5NDAwMDJGNDYy
IC8qIERGR0ZpbHRyYXRpb25SZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHRmlsdHJhdGlvblJlc3VsdC5oOyBwYXRoID0gZGZnL0RGR0ZpbHRyYXRpb25SZXN1bHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDMEM0QUExNjdDMDhDRDAwMTcwMTFE
IC8qIEpTU2NyaXB0UmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2NyaXB0UmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDMEM0QUIx
NjdDMDhDRDAwMTcwMTFEIC8qIEpTU2NyaXB0UmVmUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdFJlZlByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTdDMUU4QzgxMTJFNzAxQzAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QzFFQUVB
MTc5ODdBQjYwMDI5OURCMiAvKiBDYWxsRnJhbWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhbGxGcmFtZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdDMUVBRUIxNzk4N0FCNjAwMjk5REIyIC8qIEpTU3RhY2tJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RhY2tJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QzFFQUVDMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zp
c2l0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tWaXNp
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDMUVBRUQxNzk4N0FCNjAw
Mjk5REIyIC8qIFN0YWNrVmlzaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdGFja1Zpc2l0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDMjI1Q0Mx
Mzk5ODFGMTAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5OyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0MyMjVDRDEzOTk4NDlDMDBGRjE2NjIgLyogS2V5
d29yZExvb2t1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXl3b3JkTG9v
a3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Q0EzQUREMTdEQTQxQUUwMDY1
MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2Vha01hcENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdDQTNBREUxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFwQ29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDQTNBREYxN0RBNDFBRTAwNjUzOEFGIC8q
IFdlYWtNYXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2Vha01hcFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
Q0EzQUUwMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTdDQTNBRTExN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYWtNYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNX
ZWFrTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vha01hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyog
V2Vha01hcERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vh
a01hcERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0NBM0FFQTE3REE1
MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vha01hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAx
QTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEFycmF5LnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGlu
RXhlY3V0YWJsZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMjE4
ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVpbHRpbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlND
QnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDQnVpbHRpbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHQmFzaWNCbG9jay5jcHA7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
bG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdCbG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25T
ZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4OUNFNTE3QTBCOENDMDA3
NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2Vy
dGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4OUNFNjE3QTBCOEND
MDA3NzNBRDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNw
cDsgcGF0aCA9IGRmZy9ERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODlDRTcxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0NyaXRp
Y2FsRWRnZUJyZWFraW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NyaXRpY2FsRWRn
ZUJyZWFraW5nUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODlDRTgx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0ZsdXNoRm9ybWF0LmNwcDsgcGF0aCA9IGRmZy9ERkdGbHVz
aEZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDg5Q0U5MTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdGbHVzaEZvcm1hdC5oOyBwYXRoID0gZGZnL0RGR0ZsdXNoRm9ybWF0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDg5Q0VDMTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdMaXZl
bmVzc0FuYWx5c2lzUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4
OUNFRDE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5oOyBw
YXRoID0gZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBN0Q4OUNFRTE3QTBCOENDMDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JBdmFp
bGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdEODlDRUYxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5oOyBwYXRoID0gZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODlDRjAxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1NT
QUNvbnZlcnNpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDg5
Q0YxMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU1NBQ29udmVyc2lvblBoYXNlLmg7IHBhdGggPSBk
ZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3RDg5RDAxMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTExvd2VyZWROb2RlVmFsdWUuaDsgcGF0aCA9
IGZ0bC9GVExMb3dlcmVkTm9kZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3RDlBMjhGMTdBMEJDNzQwMEVFMjYxOCAvKiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0F0VGFpbEFic3RyYWN0U3Rh
dGUuY3BwOyBwYXRoID0gZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBN0Q5QTI5MDE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWls
QWJzdHJhY3RTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBdFRh
aWxBYnN0cmFjdFN0YXRlLmg7IHBhdGggPSBkZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q5QTI5MTE3QTBCQzc0MDBFRTI2MTggLyog
REZHRWRnZURvbWluYXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdF
ZGdlRG9taW5hdGVzLmg7IHBhdGggPSBkZmcvREZHRWRnZURvbWluYXRlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBN0Q5QTI5MjE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBo
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0xJQ01QaGFz
ZS5jcHA7IHBhdGggPSBkZmcvREZHTElDTVBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdEOUEyOTMxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0xJQ01QaGFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdMSUNNUGhhc2UuaDsgcGF0aCA9IGRmZy9E
RkdMSUNNUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEQ0I3NzkxMkUz
RDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXcml0ZUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdF
MkVBNjkwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGl0ZXJhbFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0UyRUE2QTBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaXRlcmFsUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdFNUEzQTUxNzk3NDMyRDAwRTg5M0MwIC8qIENv
bXBpbGF0aW9uUmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbXBpbGF0aW9uUmVzdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdF
NUEzQTYxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBpbGF0aW9uUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3RTVBQjMzMTc5OUU0QjIwMEQyODMzRCAvKiBMTFZNRGlzYXNzZW1i
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMVk1EaXNhc3Nl
bWJsZXIuY3BwOyBwYXRoID0gZGlzYXNzZW1ibGVyL0xMVk1EaXNhc3NlbWJsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0U1QUIzNDE3OTlFNEIyMDBEMjgzM0QgLyogTExW
TURpc2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTFZNRGlz
YXNzZW1ibGVyLmg7IHBhdGggPSBkaXNhc3NlbWJsZXIvTExWTURpc2Fzc2VtYmxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0U1QUIzNTE3OTlFNEIyMDBEMjgzM0QgLyogVURp
czg2RGlzYXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFVEaXM4
NkRpc2Fzc2VtYmxlci5oOyBwYXRoID0gZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0U1QUIzNjE3OTlFNEIyMDBEMjgzM0Qg
LyogWDg2RGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFg4NkRpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIvWDg2RGlzYXNzZW1i
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdGMjk5NjkxN0EwQkI2NzAw
MTA0MTdBIC8qIEZUTEZhaWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRlRMRmFpbC5jcHA7IHBhdGggPSBmdGwvRlRMRmFpbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3RjI5OTZBMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEZhaWwuaDsgcGF0aCA9IGZ0bC9GVExGYWls
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Rjg2OTBFMEY5NTg0QTEwMDU1ODY5
NyAvKiBDYWNoZWRDYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hl
ZENhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdGODY5RUMwRjk1QzJFQzAw
NTU4Njk3IC8qIENhbGxGcmFtZUNsb3N1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FsbEZyYW1lQ2xvc3VyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0Y5OTM1RDBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU09OT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3Rjk5MzVFMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT05PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBN0ZCNjA0QjEwM0Y1RUFCMDAxN0EyODYgLyogUHJvcGVydHlEZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3BlcnR5RGVzY3Jp
cHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0ZCNjBBMzEwM0Y3REMyMDAx
N0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFByb3BlcnR5RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3RkNDMjZDMTdBMEI2QUEwMDc4NkQxQSAvKiBGVExTd2l0Y2hDYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFN3aXRjaENhc2UuaDsgcGF0aCA9IGZ0
bC9GVExTd2l0Y2hDYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RkY2NDdB
MThDNTJFODUwMEI1NTMwNyAvKiBTcGlsbFJlZ2lzdGVyc01vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3BpbGxSZWdpc3RlcnNNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QTQ3
NDhEMTUxQTgzMDYwMDQxMjNGRiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJXVEYuYTsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQThFODk0MzEwQ0QwNjAyNDAwMzY3
MTc5IC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBOEU4OTQzMzBDRDA2MDNGMDAzNjcxNzkgLyogSlNHbG9iYWxPYmplY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIzIC8qIFBy
b3BlcnR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJv
cGVydHlUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEREIxRjYyMThE
NzdEQjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9wYXF1ZVJvb3RTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QjU5Rjg5MzcxODkxQUQzMzAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRJbnN0cnVjdGlvblN0cmVh
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTlGODkzODE4OTFBREI1MDBENUND
REMgLyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVj
dXRhYmxlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFRvb2xFeGVj
dXRhYmxlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzAyRTkwNDBF
MTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkMwMkU5MDUwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXJyb3JDb25zdHJ1Y3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzAyRTkwNjBFMTgzOURCMDAwRjkyOTcg
LyogRXJyb3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRXJyb3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzAy
RTkwNzBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXJyb3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkMwMkU5MDgwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMDJFOTA5MEUx
ODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkMwMkU5MEEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9y
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdGl2
ZUVycm9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMwMkU5
MEIwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUVycm9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDMDJFOThBMEUxODNFMzgwMDBGOTI5NyAvKiBFcnJvckluc3Rh
bmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVycm9ySW5zdGFu
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzAyRTk4QjBFMTgzRTM4MDAw
RjkyOTcgLyogRXJyb3JJbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFcnJvckluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMDJFOUI2
MEUxODQyRkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1N0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDMDJFOUI4MEUxODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0dGVyU2V0dGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkMwODk0RDUwRkFGQkEyRDAwMDAxODY1IC8qIEpTQVBJVmFsdWVX
cmFwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTQVBJVmFs
dWVXcmFwcGVyLmNwcDsgcGF0aCA9IC4uL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzA4OTRENjBGQUZCQTJEMDAwMDE4NjUgLyog
SlNBUElWYWx1ZVdyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNB
UElWYWx1ZVdyYXBwZXIuaDsgcGF0aCA9IC4uL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxMTY2MDAwRTE5OTdCMTAwODA2NkREIC8q
IERhdGVJbnN0YW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
YXRlSW5zdGFuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzExNjYwMTBF
MTk5N0IxMDA4MDY2REQgLyogRGF0ZUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERhdGVJbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzExNjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcm5hbEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDMTE2N0Q4MEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDZWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMThDM0MwMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdDb25zdHJ1
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMThDM0MxMEUxNkVFMzMw
MEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJpbmdDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzE4QzNDMjBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nT2JqZWN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ09iamVjdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDMThDM0MzMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdPYmpl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMThDM0M1MEUxNkVFMzMwMEIzNDQ2MCAvKiBT
dHJpbmdQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3RyaW5nUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOEMz
QzYwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJpbmdQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkMxOEM1MjMwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVByb3RvdHlwZS5sdXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOEM1MkIwRTE2RkNEMjAwQjM0NDYwIC8q
IFJlZ0V4cE9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVn
RXhwT2JqZWN0Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzE4QzUyRDBF
MTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExleGVyLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzIyQTM5
ODBFMTZFMTQ4MDBBRjIxQzggLyogSlNPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzIyQTM5OTBFMTZFMTQ4MDBBRjIxQzggLyogSlNPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMyMkEzOUEwRTE2RTE0ODAwQUYyMUM4IC8qIEpTVmFyaWFibGVPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYXJpYWJsZU9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMjU3REU1MEUxRjUxQzUwMDE2QjZDOSAvKiBB
cmd1bWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJndW1l
bnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNTdERTYwRTFGNTFDNTAw
MTZCNkM5IC8qIEFyZ3VtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgwQzAwRTE2RDRF
OTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDMjY4MEMxMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0
cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgwQzIwRTE2RDRFOTAw
QTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE51bWJlckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkMyNjgwQzMwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE51bWJlckNvbnN0cnVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMjY4MEM0MEUxNkQ0RTkwMEEwNkU5MiAvKiBO
dW1iZXJQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TnVtYmVyUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgw
QzUwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJlclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOdW1iZXJQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkMyNjgwQzYwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdENvbnN0cnVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9iamVjdENvbnN0cnVjdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgwQzcwRTE2RDRFOTAwQTA2
RTkyIC8qIE9iamVjdENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE9iamVjdENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MjY4MEM4MEUxNkQ0RTkwMEEwNkU5MiAvKiBPYmplY3RQcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT2JqZWN0UHJvdG90eXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgwQzkwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdFBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmplY3RQcm90b3R5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgwRTYwRTE2RDUyMzAwQTA2
RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkMzMDQ2MDYwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDMzEzNTYyMEYzMDJGQTMwMDNERkQzQSAvKiBEZWJ1Z2dlckFjdGl2YXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJBY3RpdmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMzEzNTYzMEYzMDJGQTMwMDNERkQzQSAvKiBEZWJ1Z2dl
ckFjdGl2YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzMzdC
REUwRTFBRjBCODAwNzY5MThBIC8qIEdldHRlclNldHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHZXR0ZXJTZXR0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMzMzdCRUEwRTFCMDBDQjAwNzY5MThBIC8qIEVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkM2QUFBRTQwRTFGNDI2NTAwQUQ4N0Q4IC8qIENsYXNzSW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkM3NTZGQzYwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3NTZGQzcw
RTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNzk1MjA2MEUxNUU4QTgwMEE4OThBQiAvKiBBcnJheUNv
bnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5
Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzc5NTIwNzBF
MTVFOEE4MDBBODk4QUIgLyogQXJyYXlDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBcnJheUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDNzk1MjMyMEUxNUVCNTYwMEE4OThBQiAvKiBCb29sZWFuQ29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQm9vbGVhbkNvbnN0cnVjdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3OTUyMzMwRTE1RUI1NjAwQTg5
OEFCIC8qIEJvb2xlYW5Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCb29sZWFuQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkM3OTUyMzQwRTE1RUI1NjAwQTg5OEFCIC8qIEJvb2xlYW5Qcm90b3R5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQm9vbGVhblByb3RvdHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNzk1MjM1MEUxNUVCNTYwMEE4OThBQiAvKiBCb29s
ZWFuUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvb2xlYW5Q
cm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3RjhGQkEwRTE5RDFF
RjAwODYzMkMwIC8qIEpTQ2VsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0NlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzg3Q0RCODEw
NzEyQUNBMDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNPTk9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkM4RjNDQ0YwREFGMTdCQTAwNTc3QTgwIC8qIENvbnN0cnVjdERhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQzkwNDE0NzBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzk1NDM3QzBF
QkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlNYXBIYXNoVGFibGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkM5QkI5NUIwRTE5NjgwNjAwREY4ODU1IC8qIEludGVybmFsRnVuY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZXJuYWxGdW5j
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQTYyREZFMEUyODI2MjMw
MDA0RjMwRCAvKiBDYWxsRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDYWxsRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQTYyREZG
MEUyODI2MzEwMDA0RjMwRCAvKiBDb25zdHJ1Y3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbnN0cnVjdERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQ0JFMkNBRDE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQXNzZXJ0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQ0NGMEQwNzBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJl
U3R1YkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlU3R1
YkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDRjBEMEIwRUYwQjhBNTAw
NDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0cnVjdHVyZVN0dWJJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkNEMjAyQkQwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENvbnN0cnVjdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNEMjAyQkUwRTE3MDZBNzAwMkM3
RTgyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlZ0V4cENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
RDIwMkJGMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwUHJvdG90eXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNEMjAyQzAwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cFBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBQcm90b3R5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNEMjAyRDUwRTE3MDcwODAwMkM3
RTgyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkNEMjAzNDUwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVDb25zdHJ1Y3Rvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29uc3RydWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0QyMDM0NjBFMTcxMzVFMDAyQzdFODIgLyog
RGF0ZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVD
b25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0QyMDM0NzBFMTcx
MzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEYXRlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlw
ZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZVByb3RvdHlwZS5s
dXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNERDUxRTkwRkI4REY3NDAwNEE4
QkRDIC8qIEpJVE9wY29kZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSklUT3Bjb2Rlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDREUzQUIw
MEU2QzgyQ0YwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RydWN0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkNERTNBQjEwRTZDODJDRjAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJnTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKdW1wVGFibGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRh
YmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1bXBUYWJsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjBCMjU5ODE3MDY1MzYyMDBDMjFGNEUgLyogUmVn
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMjBCQTkyQzE2QkIxQzE1MDBCM0FFQTIgLyogU3RydWN0
dXJlUmFyZURhdGFJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MjExMjJERTE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDVGhyZWFkU2hhcmVkRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMTEyMkRGMTVERDlBQjMwMDc5MEUzQSAvKiBH
Q1RocmVhZFNoYXJlZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NU
aHJlYWRTaGFyZWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMTFCNTc0
MTc2QTIyNEQwMDBFMkEyMyAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUNhbGxiYWNrRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzIxODFGQzAxOEE5NDhGQjAwMjVBMjM1IC8qIEpTRXhwb3J0VGVzdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNFeHBvcnRUZXN0cy5oOyBwYXRo
ID0gQVBJL3Rlc3RzL0pTRXhwb3J0VGVzdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIxODFGQzExOEE5NDhGQjAwMjVBMjM1IC8qIEpTRXhwb3J0VGVzdHMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBKU0V4cG9ydFRlc3RzLm1tOyBwYXRoID0g
QVBJL3Rlc3RzL0pTRXhwb3J0VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMThEMTNGMTY1NUNGRDUwMDYyQkI4MSAvKiBDb3B5V29ya0xpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdvcmtMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyMjM5RDEyMTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5VmlzaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3B5VmlzaXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMjM5RDEzMTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5
VmlzaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5VmlzaXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjIzOUQxNDE2MjYyQkREMDA1QUM1RkQg
LyogQ29weVZpc2l0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvcHlWaXNpdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjIz
OUQxNTE2MjYyQkREMDA1QUM1RkQgLyogR0NUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR0NUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjIzOUQxNjE2MjYyQkREMDA1QUM1RkQgLyogR0NUaHJlYWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR0NUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzIyNTQ5NDIxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNsb3RWaXNpdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcGllZFNwYWNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI0RDMxRTAxNjFDRDY5NTAwMkFB
NERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhlYXBTdGF0aXN0aWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzI0RDMxRTExNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyNUQ3MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTTWFuYWdlZFZhbHVl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjVENzA5QTE2REU5OUY0MDBGQ0E2
QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNYW5hZ2VkVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI1RjhCQ0Ix
NTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50
YWxTd2VlcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluY3JlbWVudGFs
U3dlZXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjgzMThGRjE2RkU0QjdE
MDAxNTdCRkQgLyogSGFuZGxlQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGFuZGxlQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI4MzE5MDEx
NkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIYW5kbGVCbG9ja0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzI4OEIyREMxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRlVGVzdHMuaDsgcGF0aCA9IEFQSS90ZXN0
cy9EYXRlVGVzdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI4OEIyREQxOEE1
NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IERhdGVUZXN0cy5tbTsgcGF0aCA9IEFQSS90ZXN0cy9EYXRlVGVzdHMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOTgxRkQ2MTdCQUVFNEIwMEEzQkM5OCAv
KiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcDsgcGF0aCA9IGRmZy9ERkdE
ZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
Mjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5o
OyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjk4MUZEQTE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRl
QmFycmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVz
aXJlZFdyaXRlQmFycmllcnMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXcml0ZUJhcnJpZXJz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5ODFGREIxN0JBRkY0NDAwQTNC
Qzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmg7IHBhdGggPSBkZmcvREZHRGVzaXJl
ZFdyaXRlQmFycmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RUNCMDEx
ODA0RDBFRDAwRDJDQkI0IC8qIEN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQ3VycmVudFRoaXNJbnNpZGVC
bG9ja0dldHRlclRlc3QubW07IHBhdGggPSBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9j
a0dldHRlclRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOUVDQjAyMTgw
NEQwRUQwMEQyQ0JCNCAvKiBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVy
VGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5
OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0Rlc3RydWN0aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMkI2RDc1MjE4QTMzNzkzMDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0ZUJhcnJpZXJJbmxpbmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAvKiBNYXJr
ZWRBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkQWxs
b2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQjkxNkM0MTREQTA0MEMw
MENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzJDMEY3Q0IxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEZXNpcmVkVHJhbnNp
dGlvbnMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQzBGN0NDMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNp
cmVkVHJhbnNpdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGVz
aXJlZFRyYW5zaXRpb25zLmg7IHBhdGggPSBkZmcvREZHRGVzaXJlZFRyYW5zaXRpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBD
b3BpZWRTcGFjZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29w
aWVkU3BhY2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQzhEMDJF
MTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb3BpZWRCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUgLyogSGVhcEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhlYXBCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMkNGMzlCRjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkNGMzlDMDE2RTE1QTgxMDBERDY5QkUg
LyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQVBJV3JhcHBlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkRB
Nzc4MjE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSGVhcElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzJERjQ0MkQxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1cGVyUmVnaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzJERjQ0MkUxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1cGVyUmVnaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyRTUyNkJCMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFw
VGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFRpbWVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJFNTI2QkMxNTkwRUYwMDAwNTRF
NDhEIC8qIEhlYXBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFw
VGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJFQUEzRjgxNDlBODMwODAw
RkNFMTEyIC8qIENvcGllZFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvcGllZFNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyRUFEMkZCMTRG
MDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29waWVkQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyRjBGMkQwMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVSYXJlRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyRkM5QkQyMTY2NDRERkIwMDgxMEQzMyAv
KiBDb3BpZWRCbG9ja0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29waWVkQmxvY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyRkNB
RTBDMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUJhc2ljQmxvY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJGQ0FFMEQxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVj
b2RlQmFzaWNCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29k
ZUJhc2ljQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJGQ0FFMEUxN0E5
QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkZDQUUwRjE3QTlDMjRFMDAzNEM3MzUgLyog
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMkZFMThBMzE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0dXJlUmFyZURhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlUmFyZURhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDIxMjAyMjgwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVD
b252ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRl
Q29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQyMTIwMjI5MEFE
NDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcGFxdWVKU1N0cmlu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNzg2MzNGMEQ5QkVDMDAwMEQ3
NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluaXRpYWxpemVUaHJlYWRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTE3ODYzNkMwRDlCRUVDMzAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIz
NCAvKiBWTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJv
dmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNl
UHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQ5REMx
NTExMkVGMjcyMjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlk
ZXJDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VQ
cm92aWRlckNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjVCQjJCQzUw
MzBGNzcyMTAxRkNGRTFEIC8qIENvbXBsZXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxldGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBK
YXZhU2NyaXB0Q29yZVByZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q29yZVByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBj
b25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJ
RjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBh
dGggPSBBcnJheVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7
IH07CisJCUY2OTJBODRFMDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJheVByb3RvdHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVByb3Rv
dHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJB
ODUwMDI1NTU5N0QwMUZGNjBGNyAvKiBCb29sZWFuT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJvb2xlYW5PYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODU0MDI1
NTU5N0QwMUZGNjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSBjcmVhdGVfaGFzaF90YWJsZTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNjkyQTg1ODAyNTU1OTdEMDFG
RjYwRjcgLyogRGVidWdnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGVidWdnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODU5MDI1NTU5N0QwMUZGNjBGNyAvKiBEZWJ1Z2dl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZWJ1Z2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2
OTJBODVDMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdW5jdGlvblBy
b3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJ
RjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9uUHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRjY5MkE4
NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGdW5jdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRjY5MkE4NUYwMjU1NTk3RDAx
RkY2MEY3IC8qIEpTRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODYyMDI1NTU5N0QwMUZGNjBGNyAvKiBKU1N0cmluZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0
cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJB
ODY1MDI1NTU5N0QwMUZGNjBGNyAvKiBMZXhlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZXhlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRjY5MkE4NjYwMjU1NTk3RDAxRkY2MEY3IC8q
IExleGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExleGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJ
RjY5MkE4NjgwMjU1NTk3RDAxRkY2MEY3IC8qIExvb2t1cC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb29rdXAuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODY5MDI1NTU5N0QwMUZG
NjBGNyAvKiBMb29rdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTG9va3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKKwkJRjY5MkE4NkEwMjU1NTk3RDAxRkY2MEY3IC8qIE1hdGhPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE9i
amVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRjY5
MkE4NkIwMjU1NTk3RDAxRkY2MEY3IC8qIE1hdGhPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODZEMDI1NTU5N0QwMUZGNjBG
NyAvKiBOb2Rlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOb2Rlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgfTsKKwkJRjY5MkE4NkUwMjU1NTk3RDAxRkY2MEY3IC8qIE5vZGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vZGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRjY5MkE4NzAwMjU1NTk3RDAx
RkY2MEY3IC8qIE51bWJlck9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOdW1iZXJPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODcxMDI1NTU5N0QwMUZGNjBGNyAv
KiBOdW1iZXJPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTnVtYmVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgfTsKKwkJRjY5MkE4NzcwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
T3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsK
KwkJRjY5MkE4NzgwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BlcmF0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODdCMDI1NTU5N0Qw
MUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNjkyQTg3QzAyNTU1OTdEMDFGRjYwRjcg
LyogUmVnRXhwT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IH07CisJCUY2OTJBODdEMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVn
RXhwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNjky
QTg3RTAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU0NK
U1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ0pTVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IH07CisJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRo
ID0gbGxpbnQvTExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
MjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU0QTMzMUQxNUJEMkUwNzAwNkY1NEYzIC8q
IFZNSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZN
SW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU0QTMzMUUxNUJE
MkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFZNSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNTI0
OEY4MTkxNDQyRDkwMEI3RkRFNCAvKiBWYXJpYWJsZVdhdGNocG9pbnRTZXRJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhcmlhYmxlV2F0Y2hwb2ludFNldElubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU1OTMyQTUxODNDNUEyNjAwQTFF
Q0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBWTUVudHJ5U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTU5
MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZNRW50cnlTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCcmVha3BvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZFQTA4NjFGMTgyQjdBMDQwMEY2RDg1MSAvKiBEZWJ1Z2dlclByaW1pdGl2ZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJQcmltaXRpdmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAv
KiBFcnJvckhhbmRsaW5nU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXJyb3JIYW5kbGluZ1Njb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVEMjg3QjExNUVDOUE1NzAwREE4MTYxIC8qIExMSW50
T3Bjb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T3Bjb2RlLmg7
IHBhdGggPSBsbGludC9MTEludE9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2F0Y2hkb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2F0Y2hkb2cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkVEOTRGMkQxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nTWFjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhdGNoZG9nTWFjLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVFN0Q1QTAwRDk5QUMwNDAwNTM1MUY2IC8qIGlP
Uy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBpT1MueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRjY4MzVBMTc0MzQzQ0MwMEEzMkUyNSAv
KiBKSVRTdHVic0FSTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRTdHVi
c0FSTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUY2ODM1QjE3NDM0M0NDMDBB
MzJFMjUgLyogSklUU3R1YnNBUk12Ny5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKSVRTdHVic0FSTXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRjY4MzVD
MTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic1g4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKSVRTdHVic1g4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRUY2ODM1RDE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNYODYuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUU3R1YnNYODYuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKy8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4g
UEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRkNFRkFCMzE4MDVENjE2MDA0
NzJDRTQgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQkw
RkY5MjJDNjE0RjQ2QjEzMDA0MUEyNEUgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OworCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3JrcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTE0QjhFQzcyMEE1NjUyMDkwMDYy
QkU1NCAvKiBDb3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQkx
NDEyMTEzMTBBNDg3OTREMDA0ODAyNTUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCX07CisJCTE0QkQ1OUJEMEEzRThGOTAwMEJBRjU5QyAvKiBGcmFtZXdvcmtzICov
ID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNDQ0M0FFMzMxNkUxODhEOTAwNzZG
MTEwIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJMTRCRDU5
QzUwQTNFOEY5RjAwQkFGNTlDIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQl9OworCQk2NTExMjJGQzE0MDQ2QTRDMDAyQjEwMUQgLyogRnJhbWV3b3JrcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTY1MTEyMkZEMTQwNDZBNEMwMDJCMTAxRCAv
KiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQk2NTExMjJG
RTE0MDQ2QTRDMDAyQjEwMUQgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtzICovLAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQk5
MzJGNUJEMjA4MjJBMUM3MDA3MzY5NzUgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJCTkzMkY1QkQzMDgyMkExQzcwMDczNjk3NSAvKiBDb3JlRm91bmRh
dGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlBNzMxQjI1QTEzMDA5Mzg4MDA0
MEE3RkEgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQk5MzJG
NUJENzA4MjJBMUM3MDA3MzY5NzUgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICov
LAorCQkJCTkzMkY1QkQ2MDgyMkExQzcwMDczNjk3NSAvKiBsaWJvYmpjLmR5bGliIGluIEZyYW1l
d29ya3MgKi8sCisJCQkJQThBNDc0OEUxNTFBODMwNjAwNDEyM0ZGIC8qIGxpYldURi5hIGluIEZy
YW1ld29ya3MgKi8sCisJCQkJMzcxRDg0MkQxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIg
aW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJfTsKKwkJOTMyRjVCREUwODIyQTFDNzAwNzM2OTc1IC8qIEZyYW1ld29y
a3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk5MzJGNUJFQTA4MjJBMUM3
MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJ
CQkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3Jr
cyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFBy
b2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkw
RkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAor
CQkJCTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsg
Ki8sCisJCQkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKKwkJCQkwRkNFRkFC
NjE4MDVENjE2MDA0NzJDRTQgLyogbGlibGx2bUZvckpTQy5keWxpYiAqLywKKwkJCQkxNDEyMTEy
MDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKKwkJCQkxNEJENTlCRjBBM0U4RjkwMDBC
QUY1OUMgLyogdGVzdGFwaSAqLywKKwkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVz
dFJlZ0V4cCAqLywKKwkJCQk1NTQwN0FDODE4REE1OEFEMDBFRkY3RjIgLyogbGliQ29tcGlsZVJ1
bnRpbWVUb0xMVk1JUi5hICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCQl0YWJXaWR0aCA9IDQ7CisJCQl1c2VzVGFicyA9IDA7CisJ
CX07CisJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBKYXZhU2NyaXB0Q29yZSAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNjUyOUZCMzAxOEIyRDYz
OTAwQzYxMTAyIC8qIGdlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzICovLAorCQkJCTg2MDRGNEYyMTQz
QTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8sCisJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2
MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAorCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVB
NyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAorCQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5
OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKKwkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURG
ODQgLyoganNjLmNwcCAqLywKKwkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmln
LmggKi8sCisJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJl
Zml4LmggKi8sCisJCQkJOTM3QjYzQ0MwOUU3NjZEMjAwQTY3MUREIC8qIERlcml2ZWRTb3VyY2Vz
Lm1ha2UgKi8sCisJCQkJQTdDMjI1Q0MxMzk5ODFGMTAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXBH
ZW5lcmF0b3IucHkgKi8sCisJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywK
KwkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAorCQkJCUE1NENG
MkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLywKKwkJCQlBN0Q4MDE5RjE4ODBENjZF
MDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCisJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8q
IGJ5dGVjb2RlICovLAorCQkJCTdFMzlEODFEMEVDMzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGls
ZXIgKi8sCisJCQkJMUM5MDUxM0UwQkE5RTg4MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICov
LAorCQkJCTE0ODBEQjlBMEREQzIyMzEwMDNDRkRGMiAvKiBkZWJ1Z2dlciAqLywKKwkJCQk2NTBG
REY4RDA5RDBGQ0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2VzICovLAorCQkJCTg2RUM5REIz
MTMyOERGNDQwMDJCMkFENyAvKiBkZmcgKi8sCisJCQkJMEZGNDI3MkUxNThFQkNDRTAwNENCOUZG
IC8qIGRpc2Fzc2VtYmxlciAqLywKKwkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyogRnJh
bWV3b3JrcyAqLywKKwkJCQkwRkVBMDlGQzE3MDUxMzdGMDBCQjcyMkMgLyogZnRsICovLAorCQkJ
CTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovLAorCQkJCUE1QkExNURGMTgyMzQw
OTIwMEE4MkU2OSAvKiBpbnNwZWN0b3IgKi8sCisJCQkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5NjE5
IC8qIGludGVycHJldGVyICovLAorCQkJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQg
Ki8sCisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAorCQkJCTBGQ0VG
QUFEMTgwNUNBNDQwMDQ3MkNFNCAvKiBsbHZtICovLAorCQkJCTdFMzlEODM3MEVDM0EzODgwMDNB
RjExQSAvKiBwYXJzZXIgKi8sCisJCQkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1
Y3RzICovLAorCQkJCTk1QUI4MzFBMERBNDJDNjkwMEJDODNGMyAvKiBwcm9maWxlciAqLywKKwkJ
CQk5OUU0NUEwQzE4QTAxRTkzMDAyNkQ4OEYgLyogcmVwbGF5ICovLAorCQkJCTkzMkZDM0MyMDgy
NEJCNzAwMDVCM0M3NSAvKiBSZXNvdXJjZXMgKi8sCisJCQkJN0VGNkUwQkIwRUI3QTFFQzAwNzlB
RkFGIC8qIHJ1bnRpbWUgKi8sCisJCQkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3Rz
ICovLAorCQkJCTg2MDNDRUYwMTRDNzUzRUYwMEFFNTlFMyAvKiB0b29scyAqLywKKwkJCQk4NkVB
QzQ4QzBGOTNFOEI5MDA4RUM5NDggLyogeWFyciAqLywKKwkJCSk7CisJCQluYW1lID0gSmF2YVNj
cmlwdENvcmU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkwODY3RDY5QUZF
ODQwMjhGQzAyQUFDMDcgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJNjU2MEE0Q0YwNEIzQjNFNzAwOEFFOTUyIC8qIENvcmVGb3Vu
ZGF0aW9uLmZyYW1ld29yayAqLywKKwkJCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91
bmRhdGlvbi5mcmFtZXdvcmsgKi8sCisJCQkJNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxp
YmVkaXQuZHlsaWIgKi8sCisJCQkJOTMyMkEwMDMwNkMzNDFEMzAwOTA2N0JCIC8qIGxpYmljdWNv
cmUuZHlsaWIgKi8sCisJCQkJNTFGMEVDMDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9iamMuZHls
aWIgKi8sCisJCQkJQThBNDc0OEQxNTFBODMwNjAwNDEyM0ZGIC8qIGxpYldURi5hICovLAorCQkJ
CTM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovLAorCQkJKTsKKwkJCW5h
bWUgPSBGcmFtZXdvcmtzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJCXRhYldpZHRo
ID0gNDsKKwkJCXVzZXNUYWJzID0gMDsKKwkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcy
IC8qIGxsaW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi8sCisJCQkJRkUy
MENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLywKKwkJCQkwRjQ2ODBDNTE0
QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0Qx
MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUy
NzIgLyogTExJbnREYXRhLmggKi8sCisJCQkJNUREREY0NDYxNEZFRTcyMjAwQjRGQjREIC8qIExM
SW50RGVzaXJlZE9mZnNldHMuaCAqLywKKwkJCQkwRjM4QjAwRjE3Q0YwNzdGMDBCMTQ0RDMgLyog
TExJbnRFbnRyeXBvaW50LmNwcCAqLywKKwkJCQkwRjM4QjAxMDE3Q0YwNzdGMDBCMTQ0RDMgLyog
TExJbnRFbnRyeXBvaW50LmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExM
SW50RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExM
SW50RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTElu
dE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLywKKwkJCQlGRUQyODdCMTE1RUM5QTU3MDBEQTgx
NjEgLyogTExJbnRPcGNvZGUuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRTbG93UGF0aHMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludFNsb3dQYXRocy5oICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgKi8sCisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1
bmtzLmggKi8sCisJCQkJODZBMDU0NDYxNTU2NDUxQjAwNDQ1MTU3IC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2
ZWxJbnRlcnByZXRlci5oICovLAorCQkJCTg2QTA1NDQ3MTU1NjQ1MUIwMDQ0NTE1NyAvKiBMb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtICovLAorCQkJCTg2QTA1NDQ4MTU1NjQ1MUIwMDQ0NTE1
NyAvKiBMb3dMZXZlbEludGVycHJldGVyNjQuYXNtICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGlu
dDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTBGQ0VGQUFEMTgwNUNBNDQw
MDQ3MkNFNCAvKiBsbHZtICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQkwRkNFRkFCRjE4MDVEOTQxMDA0NzJDRTQgLyogbGlicmFyeSAqLywKKwkJCQkwRkNF
RkFDNDE4MDVFNzU1MDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk0uY3BwICovLAorCQkJCTBGQ0VG
QUFFMTgwNUNBNkQwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTS5oICovLAorCQkJCTBGQ0VGQUFG
MTgwNUNBNkQwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTU1hYy5tbSAqLywKKwkJCQkwRkNFRkFD
NTE4MDVFNzU1MDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk1QT1NJWC5jcHAgKi8sCisJCQkJMEZD
RUZBQzYxODA1RTc1NTAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNUE9TSVguaCAqLywKKwkJCQkw
RkNFRkFDNzE4MDVFNzU1MDA0NzJDRTQgLyogTExWTUFQSS5jcHAgKi8sCisJCQkJMEZDRUZBQzgx
ODA1RTc1NTAwNDcyQ0U0IC8qIExMVk1BUEkuaCAqLywKKwkJCQkwRkNFRkFDOTE4MDVFNzU1MDA0
NzJDRTQgLyogTExWTUFQSUZ1bmN0aW9ucy5oICovLAorCQkJCTBGQ0VGQUQyMTgwNUVEQ0MwMDQ3
MkNFNCAvKiBMTFZNSGVhZGVycy5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbHZtOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMEZDRUZBQkYxODA1RDk0MTAwNDcyQ0U0IC8q
IGxpYnJhcnkgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTBGQ0VGQURCMTgwNjRBMTQwMDQ3MkNFNCAvKiBjb25maWdfbGx2bS5oICovLAorCQkJCTBGQ0VG
QUQ2MTgwNjE3NDYwMDQ3MkNFNCAvKiBMTFZNQW5jaG9yLmNwcCAqLywKKwkJCQkwRkNFRkFDMjE4
MDVFNzQwMDA0NzJDRTQgLyogTExWTUV4cG9ydHMuY3BwICovLAorCQkJCTBGQ0VGQUMwMTgwNUQ5
NDEwMDQ3MkNFNCAvKiBMTFZNT3ZlcnJpZGVzLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGli
cmFyeTsKKwkJCXBhdGggPSBsbHZtL2xpYnJhcnk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OworCQkwRkVBMDlGQzE3MDUxMzdGMDBCQjcyMkMgLyogZnRsICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkRCMkNDNzE3M0RBNTFFMDA3QjND
MUIgLyogRlRMQWJicmV2aWF0ZWRUeXBlcy5oICovLAorCQkJCTBGRUEwOUZEMTcwNTEzREIwMEJC
NzIyQyAvKiBGVExBYmJyZXZpYXRpb25zLmggKi8sCisJCQkJMEZFQTBBMTcxNzA4QjAwNzAwQkI3
MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5jcHAgKi8sCisJCQkJMEZFQTBBMTgxNzA4QjAwNzAwQkI3
MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oICovLAorCQkJCTBGRUEwQTE5MTcwOEIwMDcwMEJCNzIy
QyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKKwkJCQkwRkVBMEExQTE3MDhC
MDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovLAorCQkJCTBGNDg1
MzIzMTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5jcHAgKi8sCisJCQkJ
MEY0ODUzMjQxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggKi8sCisJ
CQkJMEZFQTA5RkUxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5jcHAgKi8sCisJ
CQkJMEZFQTA5RkYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oICovLAorCQkJ
CTBGRUEwQTI1MTcwOTYyM0IwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuY3BwICovLAorCQkJ
CTBGRUEwQTIxMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCAqLywKKwkJCQkw
RkVBMEEwMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5jcHAgKi8sCisJCQkJMEZFQTBB
MDExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuaCAqLywKKwkJCQkwRkU5NUY3NzE4QjU2
OTQ3MDBCNTMxRkIgLyogRlRMRGF0YVNlY3Rpb24uY3BwICovLAorCQkJCTBGRTk1Rjc4MThCNTY5
NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5oICovLAorCQkJCTJBQzkyMkI5MThBMTYxODIw
MDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8uY3BwICovLAorCQkJCTJBQzkyMkJBMThB
MTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8uaCAqLywKKwkJCQkwRjlDNUU1
QzE4RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5jcHAgKi8sCisJCQkJMEY5QzVF
NUQxOEUzNUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuaCAqLywKKwkJCQkwRjIzNUJC
RDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmNwcCAqLywKKwkJCQkwRjIzNUJC
RTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggKi8sCisJCQkJMEYyMzVCQkYx
NzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuY3BwICovLAorCQkJ
CTBGMjM1QkMwMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmgg
Ki8sCisJCQkJMEYyMzVCQzExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudExpc3Qu
aCAqLywKKwkJCQkwRjIzNUJDMjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJh
dG9yLmNwcCAqLywKKwkJCQkwRjIzNUJDMzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRodW5r
R2VuZXJhdG9yLmggKi8sCisJCQkJMEYyMzVCQzQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRW
YWx1ZS5jcHAgKi8sCisJCQkJMEYyMzVCQzUxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1
ZS5oICovLAorCQkJCUE3RjI5OTY5MTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmNwcCAqLywK
KwkJCQlBN0YyOTk2QTE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oICovLAorCQkJCTBGRUEw
QTJCMTcwQjY2MTkwMEJCNzIyQyAvKiBGVExGb3JtYXR0ZWRWYWx1ZS5oICovLAorCQkJCTBGRDhB
MzE1MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwICovLAorCQkJ
CTBGRDhBMzE2MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JPU1JFbnRyeUpJVENvZGUuaCAqLywK
KwkJCQlBNzhBOTc3QzE3OTczOEQ1MDA5REY3NDQgLyogRlRMR2VuZXJhdGVkRnVuY3Rpb24uaCAq
LywKKwkJCQkwRjI1RjFBNzE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVEZXNjcmlw
dG9yLmggKi8sCisJCQkJMEYyNUYxQTgxODE2MzVGMzAwNTIyRjM5IC8qIEZUTElubGluZUNhY2hl
U2l6ZS5jcHAgKi8sCisJCQkJMEYyNUYxQTkxODE2MzVGMzAwNTIyRjM5IC8qIEZUTElubGluZUNh
Y2hlU2l6ZS5oICovLAorCQkJCTBGRUEwQTI2MTcwOTYyM0IwMEJCNzIyQyAvKiBGVExJbnRyaW5z
aWNSZXBvc2l0b3J5LmNwcCAqLywKKwkJCQkwRkVBMEEyMjE3MDk2MDY5MDBCQjcyMkMgLyogRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oICovLAorCQkJCTBGRUEwQTAyMTcwNTEzREIwMEJCNzIyQyAv
KiBGVExKSVRDb2RlLmNwcCAqLywKKwkJCQkwRkVBMEEwMzE3MDUxM0RCMDBCQjcyMkMgLyogRlRM
SklUQ29kZS5oICovLAorCQkJCUE3OEE5NzdEMTc5NzM4RDUwMDlERjc0NCAvKiBGVExKSVRGaW5h
bGl6ZXIuY3BwICovLAorCQkJCUE3OEE5NzdFMTc5NzM4RDUwMDlERjc0NCAvKiBGVExKSVRGaW5h
bGl6ZXIuaCAqLywKKwkJCQkwRjZCMUNCMzE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmNw
cCAqLywKKwkJCQkwRjZCMUNCNDE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmggKi8sCisJ
CQkJMEY4RjJCOTMxNzJFMDQ5RTAwN0RCREE1IC8qIEZUTExpbmsuY3BwICovLAorCQkJCTBGOEYy
Qjk0MTcyRTA0OUUwMDdEQkRBNSAvKiBGVExMaW5rLmggKi8sCisJCQkJMEZDRUZBREQxODA3MzhD
MDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmNwcCAqLywKKwkJCQkwRkNFRkFERTE4MDczOEMwMDA0
NzJDRTQgLyogRlRMTG9jYXRpb24uaCAqLywKKwkJCQkwRkVBMEEwNDE3MDUxM0RCMDBCQjcyMkMg
LyogRlRMTG93ZXJERkdUb0xMVk0uY3BwICovLAorCQkJCTBGRUEwQTA1MTcwNTEzREIwMEJCNzIy
QyAvKiBGVExMb3dlckRGR1RvTExWTS5oICovLAorCQkJCUE3RDg5RDAxMTdBMEI5MDQwMDc3M0FE
OCAvKiBGVExMb3dlcmVkTm9kZVZhbHVlLmggKi8sCisJCQkJMEZEOEEzMTcxN0Q1MUYyMjAwQ0Ey
QzQwIC8qIEZUTE9TUkVudHJ5LmNwcCAqLywKKwkJCQkwRkQ4QTMxODE3RDUxRjIyMDBDQTJDNDAg
LyogRlRMT1NSRW50cnkuaCAqLywKKwkJCQkwRjIzNUJDNjE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
T1NSRXhpdC5jcHAgKi8sCisJCQkJMEYyMzVCQzcxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4
aXQuaCAqLywKKwkJCQkwRjIzNUJDODE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBp
bGF0aW9uSW5mby5oICovLAorCQkJCTBGMjM1QkM5MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JF
eGl0Q29tcGlsZXIuY3BwICovLAorCQkJCTBGMjM1QkNBMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExP
U1JFeGl0Q29tcGlsZXIuaCAqLywKKwkJCQkwRkVBMEEyOTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRM
T3V0cHV0LmNwcCAqLywKKwkJCQkwRkVBMEEwNjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMT3V0cHV0
LmggKi8sCisJCQkJMEY0ODUzMjUxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2Rl
LmNwcCAqLywKKwkJCQkwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNv
ZGUuaCAqLywKKwkJCQkwRjZCMUNCRjE4NjJDNDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9m
ZnNldC5jcHAgKi8sCisJCQkJMEY2QjFDQzAxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVy
QXRPZmZzZXQuaCAqLywKKwkJCQkwRkNFRkFBOTE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJl
c3RvcmUuY3BwICovLAorCQkJCTBGQ0VGQUFBMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVz
dG9yZS5oICovLAorCQkJCTBGMjVGMUFBMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENh
bGwuY3BwICovLAorCQkJCTBGMjVGMUFCMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENh
bGwuaCAqLywKKwkJCQkwRjI1RjFBQzE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxs
S2V5LmNwcCAqLywKKwkJCQkwRjI1RjFBRDE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhD
YWxsS2V5LmggKi8sCisJCQkJMEY5RDMzOTgxODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFw
cy5jcHAgKi8sCisJCQkJMEY5RDMzOTkxODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5o
ICovLAorCQkJCTBGRUEwQTE1MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgKi8sCisJ
CQkJMEZFQTBBMDcxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTFN0YXRlLmggKi8sCisJCQkJQTdGQ0My
NkMxN0EwQjZBQTAwNzg2RDFBIC8qIEZUTFN3aXRjaENhc2UuaCAqLywKKwkJCQkwRjIzNUJDQjE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCAqLywKKwkJCQkwRjIzNUJDQzE3MTc4RTFD
MDA2OTBDN0YgLyogRlRMVGh1bmtzLmggKi8sCisJCQkJMEZFQTBBMUIxNzA4QjAwNzAwQkI3MjJD
IC8qIEZUTFR5cGVkUG9pbnRlci5oICovLAorCQkJCTBGNkIxQ0MxMTg2MkM0NzgwMDg0NUQ5NyAv
KiBGVExVbndpbmRJbmZvLmNwcCAqLywKKwkJCQkwRjZCMUNDMjE4NjJDNDc4MDA4NDVEOTcgLyog
RlRMVW53aW5kSW5mby5oICovLAorCQkJCTBGMjM1QkNEMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExW
YWx1ZUZvcm1hdC5jcHAgKi8sCisJCQkJMEYyMzVCQ0UxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFZh
bHVlRm9ybWF0LmggKi8sCisJCQkJMEZEQjJDQzgxNzNEQTUxRTAwN0IzQzFCIC8qIEZUTFZhbHVl
RnJvbUJsb2NrLmggKi8sCisJCQkJMEY1QTYyODExODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVl
UmFuZ2UuY3BwICovLAorCQkJCTBGNUE2MjgyMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJh
bmdlLmggKi8sCisJCQkJMEYwMzMyQzUxOEI1M0ZBOTAwNUY5NzlBIC8qIEZUTFdlaWdodC5oICov
LAorCQkJCTBGMDMzMkM3MThCNTQ2RUMwMDVGOTc5QSAvKiBGVExXZWlnaHRlZFRhcmdldC5oICov
LAorCQkJKTsKKwkJCW5hbWUgPSBmdGw7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQkwRkY0MjcyRTE1OEVCQ0NFMDA0Q0I5RkYgLyogZGlzYXNzZW1ibGVyICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2NTJBM0ExQTE2NTFBOTI0MDBB
ODBBRkUgLyogQVJNNjQgKi8sCisJCQkJNjVDMDI4NTkxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3
ICovLAorCQkJCTBGRjQyNzMzMTU4RUJENjQwMDRDQjlGRiAvKiB1ZGlzODYgKi8sCisJCQkJNjUy
QTNBMjAxNjUxQzY2MTAwQTgwQUZFIC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCAqLywKKwkJCQk2
NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovLAorCQkJ
CTBGOUQzMzZFMTY1REJCOEQwMDVBRDM4NyAvKiBEaXNhc3NlbWJsZXIuY3BwICovLAorCQkJCTBG
RjQyNzJGMTU4RUJENDQwMDRDQjlGRiAvKiBEaXNhc3NlbWJsZXIuaCAqLywKKwkJCQlBN0U1QUIz
MzE3OTlFNEIyMDBEMjgzM0QgLyogTExWTURpc2Fzc2VtYmxlci5jcHAgKi8sCisJCQkJQTdFNUFC
MzQxNzk5RTRCMjAwRDI4MzNEIC8qIExMVk1EaXNhc3NlbWJsZXIuaCAqLywKKwkJCQkwRkY0Mjcz
MDE1OEVCRDQ0MDA0Q0I5RkYgLyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCAqLywKKwkJCQlBN0U1
QUIzNTE3OTlFNEIyMDBEMjgzM0QgLyogVURpczg2RGlzYXNzZW1ibGVyLmggKi8sCisJCQkJQTdF
NUFCMzYxNzk5RTRCMjAwRDI4MzNEIC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgKi8sCisJCQkpOwor
CQkJbmFtZSA9IGRpc2Fzc2VtYmxlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisJCTBGRjQyNzMzMTU4RUJENjQwMDRDQjlGRiAvKiB1ZGlzODYgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGRjQyNzNFMTU4RUJEOTQwMDRDQjlGRiAv
KiB1ZGlzODYuYyAqLywKKwkJCQkwRkY0MjczRjE1OEVCRDk0MDA0Q0I5RkYgLyogdWRpczg2Lmgg
Ki8sCisJCQkJMEZGNDI3MzQxNThFQkQ5NDAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuYyAqLywK
KwkJCQkwRkY0MjczNTE1OEVCRDk0MDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5oICovLAorCQkJ
CTBGRjQyNzM2MTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODZfZXh0ZXJuLmggKi8sCisJCQkJMEZG
NDI3MzcxNThFQkQ5NDAwNENCOUZGIC8qIHVkaXM4Nl9pbnB1dC5jICovLAorCQkJCTBGRjQyNzM4
MTU4RUJEOTQwMDRDQjlGRiAvKiB1ZGlzODZfaW5wdXQuaCAqLywKKwkJCQkwRkY0Mjc0QzE1OEVC
RkUxMDA0Q0I5RkYgLyogdWRpczg2X2l0YWJfaG9sZGVyLmMgKi8sCisJCQkJMEZGNDI3MzkxNThF
QkQ5NDAwNENCOUZGIC8qIHVkaXM4Nl9zeW4tYXR0LmMgKi8sCisJCQkJMEZGNDI3M0ExNThFQkQ5
NDAwNENCOUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwuYyAqLywKKwkJCQkwRkY0MjczQjE1OEVCRDk0
MDA0Q0I5RkYgLyogdWRpczg2X3N5bi5jICovLAorCQkJCTBGRjQyNzNDMTU4RUJEOTQwMDRDQjlG
RiAvKiB1ZGlzODZfc3luLmggKi8sCisJCQkJMEZGNDI3M0QxNThFQkQ5NDAwNENCOUZGIC8qIHVk
aXM4Nl90eXBlcy5oICovLAorCQkJKTsKKwkJCW5hbWUgPSB1ZGlzODY7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUgLyogdGVzdHMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyOUVDQjAy
MTgwNEQwRUQwMEQyQ0JCNCAvKiBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oICov
LAorCQkJCUMyOUVDQjAxMTgwNEQwRUQwMEQyQ0JCNCAvKiBDdXJyZW50VGhpc0luc2lkZUJsb2Nr
R2V0dGVyVGVzdC5tbSAqLywKKwkJCQlDMjg4QjJEQzE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRl
c3RzLmggKi8sCisJCQkJQzI4OEIyREQxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5tbSAq
LywKKwkJCQlDMjE4MUZDMDE4QTk0OEZCMDAyNUEyMzUgLyogSlNFeHBvcnRUZXN0cy5oICovLAor
CQkJCUMyMTgxRkMxMThBOTQ4RkIwMDI1QTIzNSAvKiBKU0V4cG9ydFRlc3RzLm1tICovLAorCQkJ
CTE0NDAwNTE3MEE1MzFDQjUwMDA1RjA2MSAvKiBtaW5pZG9tICovLAorCQkJCTE0QkQ1QTJEMEEz
RTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8sCisJCQkJMTREODU3NzQwQTQ2OTZDODAwMzIx
NDZDIC8qIHRlc3RhcGkuanMgKi8sCisJCQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRl
c3RhcGkubW0gKi8sCisJCQkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAu
Y3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSB0ZXN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCQl0YWJXaWR0aCA9IDQ7CisJCQl1c2VzVGFicyA9IDA7CisJCX07CisJCTE0MjlENzdB
MEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3Ry
YWN0UEMuY3BwICovLAorCQkJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmggKi8sCisJCQkJQTdGODY5MEUwRjk1ODRBMTAwNTU4Njk3IC8qIENhY2hlZENhbGwuaCAqLywK
KwkJCQkxNDI5RDhEQjBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmNwcCAqLywKKwkJCQkx
NDI5RDhEQzBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmggKi8sCisJCQkJQTdGODY5RUMw
Rjk1QzJFQzAwNTU4Njk3IC8qIENhbGxGcmFtZUNsb3N1cmUuaCAqLywKKwkJCQlBN0MxRUFFQTE3
OTg3QUI2MDAyOTlEQjIgLyogQ2FsbEZyYW1lSW5saW5lcy5oICovLAorCQkJCTE0MjlEN0QzMEVE
MjEyODIwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMTQyOUQ3N0IwRUQyMEQ3
MzAwQjg5NjE5IC8qIEludGVycHJldGVyLmggKi8sCisJCQkJMTQyOUQ4NUIwRUQyMThFOTAwQjg5
NjE5IC8qIEpTU3RhY2suY3BwICovLAorCQkJCTE0RDc5MjY0MERBQTAzRkIwMDFBOUYwNSAvKiBK
U1N0YWNrLmggKi8sCisJCQkJQTdDMUVBRUIxNzk4N0FCNjAwMjk5REIyIC8qIEpTU3RhY2tJbmxp
bmVzLmggKi8sCisJCQkJNjVGQjUxMTYxODRFRTlCQzAwQzEyQjcwIC8qIFByb3RvQ2FsbEZyYW1l
LmNwcCAqLywKKwkJCQk2NUZCNTExNTE4NEVFOEY4MDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUu
aCAqLywKKwkJCQkxNDlCMjRGRjBEOEFGNkQxMDA5Q0I4QzcgLyogUmVnaXN0ZXIuaCAqLywKKwkJ
CQlBN0MxRUFFQzE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmNwcCAqLywKKwkJCQlB
N0MxRUFFRDE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmggKi8sCisJCQkJRkU0QTMz
MUQxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNwcCAqLywKKwkJCQlGRTRBMzMxRTE1
QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW50
ZXJwcmV0ZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxNDI5RDkyQzBF
RDIyRDcwMDBCODk2MTkgLyogaml0ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQkwRjc1NzZEMDE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklU
U3R1YlJvdXRpbmUuY3BwICovLAorCQkJCTBGNzU3NkQxMThFMUZFRTkwMDJFRjRDRCAvKiBBY2Nl
c3NvckNhbGxKSVRTdHViUm91dGluZS5oICovLAorCQkJCTBGNkIxQ0M3MTg2NDFERjgwMDg0NUQ5
NyAvKiBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAgKi8sCisJCQkJMEY2QjFDQzgxODY0
MURGODAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmggKi8sCisJCQkJMEYy
NEU1M0IxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgKi8sCisJCQkJMEYy
NEU1M0MxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5oICovLAorCQkJCTBGMjRF
NTNEMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCAqLywKKwkJCQkwRjczRDdBQjE2
NUExNDJBMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgKi8sCisJCQkJMEY3
M0Q3QUMxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCAqLywKKwkJ
CQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKKwkJ
CQlBN0I0OERCNjBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgKi8s
CisJCQkJQTdCNDhEQjUwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCAq
LywKKwkJCQk4NkRCNjQ2MzBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRvckZp
eGVkVk1Qb29sLmNwcCAqLywKKwkJCQkwRjI0RTUzRTE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5m
by5oICovLAorCQkJCTBGNzY2RDJEMTVBOERDREQwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJv
dXRpbmUuY3BwICovLAorCQkJCTBGNzY2RDJFMTVBOERDREQwMDhGMzYzRSAvKiBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUuaCAqLywKKwkJCQkwRjI0RTUzRjE3RUE5RjU5MDBBQkIyMTcgLyogR1BSSW5m
by5oICovLAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZh
bHVlLmNwcCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5oICovLAorCQkJCTE0MjlEOTJEMEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuY3BwICov
LAorCQkJCTE0MjlEOTJFMEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuaCAqLywKKwkJCQk4NkE5MEVD
RjBFRTdENTFGMDBBQjM1MEQgLyogSklUQXJpdGhtZXRpYy5jcHAgKi8sCisJCQkJQTc1NzA2REQx
MThBMkJDRjAwNTdGODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi8sCisJCQkJODZDQzg1
QTIwRUU3OUI3NDAwMjg4NjgyIC8qIEpJVENhbGwuY3BwICovLAorCQkJCTE0NkZFNTExMTFBNzEw
NDMwMDg3QUU2NiAvKiBKSVRDYWxsMzJfNjQuY3BwICovLAorCQkJCTBGOEY5NDQzMTY2NzYzNTIw
MEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCAqLywKKwkJCQk4NkNDRUZERDBGNDEzRjg5MDBGRDdGOUUg
LyogSklUQ29kZS5oICovLAorCQkJCTBGMDc3NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21w
aWxhdGlvbkVmZm9ydC5oICovLAorCQkJCTBGQUY3RUZBMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVRE
aXNhc3NlbWJsZXIuY3BwICovLAorCQkJCTBGQUY3RUZCMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVRE
aXNhc3NlbWJsZXIuaCAqLywKKwkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2Vw
dGlvbnMuaCAqLywKKwkJCQkwRkIxNEUxQzE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwICovLAorCQkJCTBGQjE0RTFEMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oICovLAorCQkJCTg2Q0M4NUEwMEVFNzlBNDcwMDI4ODY4MiAv
KiBKSVRJbmxpbmVzLmggKi8sCisJCQkJQkNERDUxRTkwRkI4REY3NDAwNEE4QkRDIC8qIEpJVE9w
Y29kZXMuY3BwICovLAorCQkJCUE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVz
MzJfNjQuY3BwICovLAorCQkJCTBGMjRFNTQ1MTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRp
b25zLmNwcCAqLywKKwkJCQkwRjI0RTU0NjE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9u
cy5oICovLAorCQkJCTg2Q0M4NUMzMEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAgKi8sCisJCQkJQTdDMUU4QzgxMTJFNzAxQzAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwICovLAorCQkJCTBGNzY2RDI2MTVBOENDMUIwMDhGMzYzRSAvKiBKSVRTdHVi
Um91dGluZS5jcHAgKi8sCisJCQkJMEY3NjZEMUMxNUE1MDI4RDAwOEYzNjNFIC8qIEpJVFN0dWJS
b3V0aW5lLmggKi8sCisJCQkJMTRBMjNENkMwRjRFMTlDRTAwMjNDREFEIC8qIEpJVFN0dWJzLmNw
cCAqLywKKwkJCQkxNEE2NTgxQTBGNEUzNkY0MDAwMTUwRkQgLyogSklUU3R1YnMuaCAqLywKKwkJ
CQlGRUY2ODM1QTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0uaCAqLywKKwkJCQlGRUY2
ODM1QjE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk12Ny5oICovLAorCQkJCUZFRjY4MzVE
MTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic1g4Ni5oICovLAorCQkJCUZFRjY4MzVDMTc0MzQz
Q0MwMEEzMkUyNSAvKiBKSVRTdHVic1g4Nl82NC5oICovLAorCQkJCUE3QTRBRTBDMTc5NzNCNEQw
MDU2MTJCMSAvKiBKSVRTdHVic1g4NkNvbW1vbi5oICovLAorCQkJCTBGNUVGOTFCMTY4NzhGNzgw
MDNFNUMyNSAvKiBKSVRUaHVua3MuY3BwICovLAorCQkJCTBGNUVGOTFDMTY4NzhGNzgwMDNFNUMy
NSAvKiBKSVRUaHVua3MuaCAqLywKKwkJCQkwRkM3MTJFMDE3Q0Q4NzhGMDA4Q0M5M0MgLyogSklU
VG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwICovLAorCQkJCTBGQzcxMkUxMTdD
RDg3OEYwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICov
LAorCQkJCUE3NkY1NEEyMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCAqLywK
KwkJCQlBNzZDNTE3NDExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQuaCAqLywKKwkJ
CQkwRkE3QThFOTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmNwcCAqLywKKwkJCQkwRkE3QThFQTE4
QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggKi8sCisJCQkJMEY2QjFDQkIxODYxMjQ2QTAwODQ1RDk3
IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAgKi8sCisJCQkJMEY2
QjFDQkMxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVy
YXRvci5oICovLAorCQkJCTBGQzMxNDE0MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5j
cHAgKi8sCisJCQkJMEZDMzE0MTAxODE0NTU5MTAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmggKi8s
CisJCQkJMEYyNEU1NDkxN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guY3BwICovLAorCQkJCTBG
MjRFNTRBMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmggKi8sCisJCQkJMEZBN0E4RUQxOENF
NEZEODAwNTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgKi8sCisJCQkJMEYy
NEU1NEIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oICovLAor
CQkJCUE3MDlGMkVGMTdBMEFDMDQwMDUxMkU5OCAvKiBTbG93UGF0aENhbGwuaCAqLywKKwkJCQlB
NzM4NjU1MTExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oICovLAorCQkJ
CUE3RkY2NDdBMThDNTJFODUwMEI1NTMwNyAvKiBTcGlsbFJlZ2lzdGVyc01vZGUuaCAqLywKKwkJ
CQkwRkMzMTQxMTE4MTQ1NTkxMDAwMzMyMzIgLyogVGVtcFJlZ2lzdGVyU2V0LmNwcCAqLywKKwkJ
CQkwRjI0RTU0ODE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0LmggKi8sCisJCQkJ
MEY1NzJENEQxNjg3OUZEQjAwRTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggKi8sCisJCQkJQTcz
ODY1NTIxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgKi8sCisJCQkJQTcz
ODY1NTMxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oICovLAorCQkJCTY1OTg3
RjJGMTY4MjhBN0UwMDNDMkY4RCAvKiBVbnVzZWRQb2ludGVyLmggKi8sCisJCQkpOworCQkJcGF0
aCA9IGppdDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTE0MkUzMTJBMTM0
RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQlDMkRBNzc4MjE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCAq
LywKKwkJCQlBRERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLAor
CQkJCTJBQUNFNjNBMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICov
LAorCQkJCTJBQUNFNjNCMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAq
LywKKwkJCQkxNDgxNkUxOTE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuY3BwICov
LAorCQkJCTE0ODE2RTFBMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oICovLAor
CQkJCTBGRDhBMzExMTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuY3BwICovLAorCQkJ
CTBGRDhBMzEyMTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuaCAqLywKKwkJCQkxNDZC
MTREQjEyRUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICovLAorCQkJCTE0
OURBQUYyMTJFQjU1OUQwMDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovLAorCQkJCUMy
RUFEMkZCMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCAqLywKKwkJCQlDMkM4
RDAyRTE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCAqLywKKwkJCQlDMkZDOUJEMjE2
NjQ0REZCMDA4MTBEMzMgLyogQ29waWVkQmxvY2tJbmxpbmVzLmggKi8sCisJCQkJQzI0MDMwNTMx
NEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLywKKwkJCQlDMkVBQTNGODE0OUE4
MzA4MDBGQ0UxMTIgLyogQ29waWVkU3BhY2UuaCAqLywKKwkJCQlDMkM4RDAyQjE0QTNDNkIyMDA1
NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVzLmggKi8sCisJCQkJMEY1QTUyQ0YxN0FERDcxNzAw
OEVDQjJEIC8qIENvcHlUb2tlbi5oICovLAorCQkJCUMyMjM5RDEyMTYyNjJCREQwMDVBQzVGRCAv
KiBDb3B5VmlzaXRvci5jcHAgKi8sCisJCQkJQzIyMzlEMTMxNjI2MkJERDAwNUFDNUZEIC8qIENv
cHlWaXNpdG9yLmggKi8sCisJCQkJQzIyMzlEMTQxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNp
dG9ySW5saW5lcy5oICovLAorCQkJCUMyMThEMTNGMTY1NUNGRDUwMDYyQkI4MSAvKiBDb3B5V29y
a0xpc3QuaCAqLywKKwkJCQkyQTY4Mjk1QTE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFy
cmllci5oICovLAorCQkJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCAq
LywKKwkJCQkwRjEzNkQ0QjE3NEFENjlCMDA3NUIzNTQgLyogRGVmZXJHQy5oICovLAorCQkJCTJB
MjgyNUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmggKi8sCisJCQkJ
QkNCRTJDQUQxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oICovLAorCQkJCTBGMkI2
NkE4MTdCNkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZC5oICovLAorCQkJCTBG
MkI2NkE5MTdCNkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCAq
LywKKwkJCQkwRjJCNjZBQTE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRT
ZXQuaCAqLywKKwkJCQkwRjJCNjZBQjE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNv
dW50ZWRTZXRJbmxpbmVzLmggKi8sCisJCQkJMkEzNDNGNzQxOEExNzQ4QjAwMzlCMDg1IC8qIEdD
U2VnbWVudGVkQXJyYXkuaCAqLywKKwkJCQkyQTM0M0Y3NzE4QTE3NDlEMDAzOUIwODUgLyogR0NT
ZWdtZW50ZWRBcnJheUlubGluZXMuaCAqLywKKwkJCQlDMjIzOUQxNTE2MjYyQkREMDA1QUM1RkQg
LyogR0NUaHJlYWQuY3BwICovLAorCQkJCUMyMjM5RDE2MTYyNjJCREQwMDVBQzVGRCAvKiBHQ1Ro
cmVhZC5oICovLAorCQkJCUMyMTEyMkRFMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJl
ZERhdGEuY3BwICovLAorCQkJCUMyMTEyMkRGMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNo
YXJlZERhdGEuaCAqLywKKwkJCQkxNDJFMzEyQjEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlLmgg
Ki8sCisJCQkJQzI4MzE4RkYxNkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggKi8sCisJ
CQkJQzI4MzE5MDExNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovLAor
CQkJCTE0MkUzMTJDMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuY3BwICovLAorCQkJCTE0
MkUzMTJEMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuaCAqLywKKwkJCQkxNDJFMzEyRTEz
NEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suY3BwICovLAorCQkJCTE0MkUzMTJGMTM0RkYw
QTYwMEFGQURCNSAvKiBIYW5kbGVTdGFjay5oICovLAorCQkJCTE0NkZBNUE4MTM3OEY2QjAwMDM2
MjdBMyAvKiBIYW5kbGVUeXBlcy5oICovLAorCQkJCTE0QkE3QTk1MTNBQURGRjgwMDVCN0MyQyAv
KiBIZWFwLmNwcCAqLywKKwkJCQkxNEJBN0E5NjEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5oICov
LAorCQkJCUMyQzhEMDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLywKKwkJCQky
QUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi8sCisJCQkJ
MkE2RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLywKKwkJCQkxNEY5
NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi8sCisJCQkJQzI0RDMx
RTAxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCAqLywKKwkJCQlDMjREMzFF
MTE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLywKKwkJCQlDMkU1MjZCQjE1
OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNwcCAqLywKKwkJCQlDMkU1MjZCQzE1OTBFRjAw
MDA1NEU0OEQgLyogSGVhcFRpbWVyLmggKi8sCisJCQkJQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1Qjcx
IC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi8sCisJCQkJQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1
QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oICovLAorCQkJCTBGNzY2RDI5MTVBOENDMzQwMDhG
MzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAgKi8sCisJCQkJMEY3NjZEMkExNUE4Q0MzNDAw
OEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggKi8sCisJCQkJMEY0MzE3MzYxNDZCQUM2NTAw
N0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovLAorCQkJCTE0MkUzMTMwMTM0RkYwQTYwMEFG
QURCNSAvKiBMb2NhbC5oICovLAorCQkJCTE0MkUzMTMxMTM0RkYwQTYwMEFGQURCNSAvKiBMb2Nh
bFNjb3BlLmggKi8sCisJCQkJMTRCNzIzM0YxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFj
a01hcmtlci5jcHAgKi8sCisJCQkJMTRCNzIzNDAxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVT
dGFja01hcmtlci5oICovLAorCQkJCUMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRB
bGxvY2F0b3IuY3BwICovLAorCQkJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRB
bGxvY2F0b3IuaCAqLywKKwkJCQkxNDJENkYwNjEzNTM5QTI4MDBCMDJFODYgLyogTWFya2VkQmxv
Y2suY3BwICovLAorCQkJCTE0MkQ2RjA3MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5o
ICovLAorCQkJCTE0MTQ0OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICov
LAorCQkJCTE0RDJGM0Q4MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8sCisJ
CQkJMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggKi8sCisJCQkJMTQy
RDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgKi8sCisJCQkJMTQyRDZGMEYx
MzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAorCQkJCTJBQUQ5NjQ5MTg1Njk0MTcw
MDFGOTNCRSAvKiBSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCAqLywKKwkJCQlDMjBCMjU5ODE3
MDY1MzYyMDBDMjFGNEUgLyogUmVnaW9uLmggKi8sCisJCQkJQzIyNTQ5NDIxNUY3REJBQTAwNjVF
ODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLywKKwkJCQkxNEJBNzhGMDEzQUFCODhGMDA1QjdDMkMg
LyogU2xvdFZpc2l0b3IuaCAqLywKKwkJCQkwRkNCNDA4NTE1QzBBM0MzMDA0ODkzMkIgLyogU2xv
dFZpc2l0b3JJbmxpbmVzLmggKi8sCisJCQkJMTQyRTMxMzIxMzRGRjBBNjAwQUZBREI1IC8qIFN0
cm9uZy5oICovLAorCQkJCTE0NTcyMjg1MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVz
LmggKi8sCisJCQkJQzJERjQ0MkQxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmNwcCAq
LywKKwkJCQlDMkRGNDQyRTE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uaCAqLywKKwkJ
CQkxNDE0NDhDQzEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggKi8sCisJCQkJ
MEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLywK
KwkJCQkxQUNGNzM3NjE3MUNBNkZCMDBDOUJCMUUgLyogV2Vhay5jcHAgKi8sCisJCQkJMTQyRTMx
MzMxMzRGRjBBNjAwQUZBREI1IC8qIFdlYWsuaCAqLywKKwkJCQkxNEU4NEY5OTE0RUUxQUNDMDBE
NkQ1RDQgLyogV2Vha0Jsb2NrLmNwcCAqLywKKwkJCQkxNEU4NEY5QTE0RUUxQUNDMDBENkQ1RDQg
LyogV2Vha0Jsb2NrLmggKi8sCisJCQkJMTRGNzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtI
YW5kbGVPd25lci5jcHAgKi8sCisJCQkJMTRGNzI1NjQxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtI
YW5kbGVPd25lci5oICovLAorCQkJCTE0RTg0RjlEMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrSW1w
bC5oICovLAorCQkJCTE0QkU3RDMyMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oICov
LAorCQkJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVy
LmggKi8sCisJCQkJMTRFODRGOUIxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwICovLAor
CQkJCTE0RTg0RjlDMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmggKi8sCisJCQkJMTQxNTAx
MzIxNTRCQjEzRjAwNUQ4Qzk4IC8qIFdlYWtTZXRJbmxpbmVzLmggKi8sCisJCQkJMkE0RUM5MDkx
ODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgKi8sCisJCQkJMkE0RUM5
MEExODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oICovLAorCQkJCTBGQzgx
NTA4MTQwNDNCQ0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCAqLywKKwkJCQkw
RkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovLAorCQkJ
CTJBODM2MzgzMThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAq
LywKKwkJCQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFj
ay5oICovLAorCQkJCTJBODM2Mzg3MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNh
bGxiYWNrLmNwcCAqLywKKwkJCQkyQTgzNjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5oICovLAorCQkJCTJBQUJDREU2MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xv
Z2dpbmcuaCAqLywKKwkJCQkyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNw
cCAqLywKKwkJCSk7CisJCQlwYXRoID0gaGVhcDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyMTFCNTc0MTc2QTIyNEQwMDBFMkEy
MyAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggKi8sCisJCQkJMTQ4MkI3OEEwQTQzMDVBQjAwNTE3
Q0ZDIC8qIEFQSUNhc3QuaCAqLywKKwkJCQkxQ0FBOEI0QTBEMzJDMzlBMDA0MUJDRkYgLyogSmF2
YVNjcmlwdC5oICovLAorCQkJCTFDQUE4QjRCMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0
Q29yZS5oICovLAorCQkJCUJDMDg5NEQ1MEZBRkJBMkQwMDAwMTg2NSAvKiBKU0FQSVZhbHVlV3Jh
cHBlci5jcHAgKi8sCisJCQkJQkMwODk0RDYwRkFGQkEyRDAwMDAxODY1IC8qIEpTQVBJVmFsdWVX
cmFwcGVyLmggKi8sCisJCQkJQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBl
ck9iamVjdC5oICovLAorCQkJCUMyQ0YzOUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBw
ZXJPYmplY3QubW0gKi8sCisJCQkJMTQyMTM1OUEwQTY3N0Y0RjAwQTgxOTVFIC8qIEpTQmFzZS5j
cHAgKi8sCisJCQkJMTQyNzExMzgwQTQ2MEJCQjAwODBFRUVBIC8qIEpTQmFzZS5oICovLAorCQkJ
CTE0MEQxN0Q2MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggKi8sCisJCQkJMTQ0
MEY4QUQwQTUwOEQyMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAgKi8sCisJ
CQkJMTQ0MEY4QUMwQTUwOEQyMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oICov
LAorCQkJCTE0NDBGODkwMEE1MDhCMTAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uY3Bw
ICovLAorCQkJCTE0NDBGODhGMEE1MDhCMTAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24u
aCAqLywKKwkJCQkxNEFCREY1RTBBNDM3RkVGMDBFQ0NBMDEgLyogSlNDYWxsYmFja09iamVjdC5j
cHAgKi8sCisJCQkJMTRBQkRGNUQwQTQzN0ZFRjAwRUNDQTAxIC8qIEpTQ2FsbGJhY2tPYmplY3Qu
aCAqLywKKwkJCQlBOEU4OTQzMTBDRDA2MDI0MDAzNjcxNzkgLyogSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oICovLAorCQkJCTE0NDBGQ0UyMEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVm
LmNwcCAqLywKKwkJCQkxNDQwRkNFMTBBNTFFNDZCMDAwNUYwNjEgLyogSlNDbGFzc1JlZi5oICov
LAorCQkJCTg2RTNDNjA3MTY3QkFCODcwMDZENzYwQSAvKiBKU0NvbnRleHQuaCAqLywKKwkJCQk4
NkUzQzYwODE2N0JBQjg3MDA2RDc2MEEgLyogSlNDb250ZXh0Lm1tICovLAorCQkJCUE1OEMwMjQx
MThFNEE0MUEwMDAzMkJDNSAvKiBKU0NvbnRleHRQcml2YXRlLmggKi8sCisJCQkJODZFM0M2MDkx
NjdCQUI4NzAwNkQ3NjBBIC8qIEpTQ29udGV4dEludGVybmFsLmggKi8sCisJCQkJMTRCRDVBMjkw
QTNFOTFGNjAwQkFGNTlDIC8qIEpTQ29udGV4dFJlZi5jcHAgKi8sCisJCQkJMTRCRDVBMkEwQTNF
OTFGNjAwQkFGNTlDIC8qIEpTQ29udGV4dFJlZi5oICovLAorCQkJCTE0OENEMUQ3MTA4Q0Y5MDIw
MDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggKi8sCisJCQkJQTcyMDI4QjQxNzk3NjAx
RTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8sCisJCQkJQTcyMDI4QjUxNzk3
NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovLAorCQkJCTg2RTNDNjBBMTY3
QkFCODcwMDZENzYwQSAvKiBKU0V4cG9ydC5oICovLAorCQkJCUMyNUQ3MDlBMTZERTk5RjQwMEZD
QTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5oICovLAorCQkJCUMyNUQ3MDk5MTZERTk5RjQwMEZDQTZC
QyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLywKKwkJCQkyQTRCQjdGMjE4QTQxMTc5MDA4QTBGQ0Qg
LyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oICovLAorCQkJCTE0ODJCN0UyMEE0MzA3NjAwMDUx
N0NGQyAvKiBKU09iamVjdFJlZi5jcHAgKi8sCisJCQkJMTQ4MkI3RTEwQTQzMDc2MDAwNTE3Q0ZD
IC8qIEpTT2JqZWN0UmVmLmggKi8sCisJCQkJQTc5RURCMDgxMTUzMUNENjAwMTlFOTEyIC8qIEpT
T2JqZWN0UmVmUHJpdmF0ZS5oICovLAorCQkJCTk1OTg4QkE5MEU0NzdCRUMwMEQyOEQ0RCAvKiBK
U1Byb2ZpbGVyUHJpdmF0ZS5jcHAgKi8sCisJCQkJOTUyQzYzQUMwRTQ3NzdENjAwQzEzOTM2IC8q
IEpTUHJvZmlsZXJQcml2YXRlLmggKi8sCisJCQkJOTVDMThEM0UwQzkwRTdFRjAwRTcyRjczIC8q
IEpTUmV0YWluUHRyLmggKi8sCisJCQkJQTdDMEM0QUExNjdDMDhDRDAwMTcwMTFEIC8qIEpTU2Ny
aXB0UmVmLmNwcCAqLywKKwkJCQlBN0MwQzRBQjE2N0MwOENEMDAxNzAxMUQgLyogSlNTY3JpcHRS
ZWZQcml2YXRlLmggKi8sCisJCQkJMTQ4MkI3NEMwQTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3RyaW5n
UmVmLmNwcCAqLywKKwkJCQkxNDgyQjc0QjBBNDMwMzI4MDA1MTdDRkMgLyogSlNTdHJpbmdSZWYu
aCAqLywKKwkJCQkxNDZBQUIzNzBCNjZBOTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5jcHAg
Ki8sCisJCQkJMTQ2QUFCMkEwQjY2QTg0OTAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuaCAqLywK
KwkJCQkxQTI4RDRBNzE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggKi8s
CisJCQkJODZFM0M2MDYxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCAqLywKKwkJCQk4NkUz
QzYwRDE2N0JBQjg3MDA2RDc2MEEgLyogSlNWYWx1ZS5tbSAqLywKKwkJCQk4NkUzQzYwRTE2N0JB
Qjg3MDA2RDc2MEEgLyogSlNWYWx1ZUludGVybmFsLmggKi8sCisJCQkJMTRCRDVBMkIwQTNFOTFG
NjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwICovLAorCQkJCTE0ODJCNkVBMEE0MzAwQjMwMDUx
N0NGQyAvKiBKU1ZhbHVlUmVmLmggKi8sCisJCQkJODZFM0M2MEYxNjdCQUI4NzAwNkQ3NjBBIC8q
IEpTVmlydHVhbE1hY2hpbmUuaCAqLywKKwkJCQk4NkUzQzYxMDE2N0JBQjg3MDA2RDc2MEEgLyog
SlNWaXJ0dWFsTWFjaGluZS5tbSAqLywKKwkJCQk4NkUzQzYxMTE2N0JBQjg3MDA2RDc2MEEgLyog
SlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmggKi8sCisJCQkJQTc0ODJFMzcxMTZBNjk3QjAwM0Iw
NzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmggKi8sCisJCQkJQTc0ODJCN0ExMTY2
Q0RFQTAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwICovLAorCQkJCUE3
NDgyQjc5MTE2NkNERUEwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggKi8s
CisJCQkJODZFM0M2MEMxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTV3JhcHBlck1hcC5oICovLAorCQkJ
CTg2RTNDNjBCMTY3QkFCODcwMDZENzYwQSAvKiBKU1dyYXBwZXJNYXAubW0gKi8sCisJCQkJODZG
M0VFQjkxNjhDQ0Y3NTAwNzdCOTJBIC8qIE9iakNDYWxsYmFja0Z1bmN0aW9uLmggKi8sCisJCQkJ
ODZGM0VFQkExNjhDQ0Y3NTAwNzdCOTJBIC8qIE9iakNDYWxsYmFja0Z1bmN0aW9uLm1tICovLAor
CQkJCTg2RjNFRUI2MTY4NTVBNUIwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovLAor
CQkJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi8sCisJ
CQkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8sCisJCQkJ
NURFM0QwRjQwREQ4RERGQjAwNDY4NzE0IC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oICovLAorCQkJ
KTsKKwkJCXBhdGggPSBBUEk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQkJdGFiV2lk
dGggPSA0OworCQkJdXNlc1RhYnMgPSAwOworCQl9OworCQkxNDQwMDUxNzBBNTMxQ0I1MDAwNUYw
NjEgLyogbWluaWRvbSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJMTQ0MEY2NDIwQTRGOEI2QTAwMDVGMDYxIC8qIEpTTm9kZS5jICovLAorCQkJCTE0NDBG
NjQxMEE0RjhCNkEwMDA1RjA2MSAvKiBKU05vZGUuaCAqLywKKwkJCQkxNDQwMDc1NjBBNTM3MEQy
MDAwNUYwNjEgLyogSlNOb2RlTGlzdC5jICovLAorCQkJCTE0NDAwNzU1MEE1MzcwRDIwMDA1RjA2
MSAvKiBKU05vZGVMaXN0LmggKi8sCisJCQkJMTQxMjExMDIwQTQ4NzgwOTAwNDgwMjU1IC8qIG1p
bmlkb20uYyAqLywKKwkJCQkxNDEyMTEwRDBBNDg3ODg3MDA0ODAyNTUgLyogbWluaWRvbS5qcyAq
LywKKwkJCQkxNDQwMDUyMDBBNTMxRDNCMDAwNUYwNjEgLyogTm9kZS5jICovLAorCQkJCTE0NDAw
NTFGMEE1MzFEM0IwMDA1RjA2MSAvKiBOb2RlLmggKi8sCisJCQkJMTQ0MDA3NDkwQTUzNkNDMjAw
MDVGMDYxIC8qIE5vZGVMaXN0LmMgKi8sCisJCQkJMTQ0MDA3NDgwQTUzNkNDMjAwMDVGMDYxIC8q
IE5vZGVMaXN0LmggKi8sCisJCQkpOworCQkJbmFtZSA9IG1pbmlkb207CisJCQlwYXRoID0gQVBJ
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQ4MERCOUEwRERDMjIzMTAw
M0NGREYyIC8qIGRlYnVnZ2VyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQlGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICovLAor
CQkJCUY2OTJBODU4MDI1NTU5N0QwMUZGNjBGNyAvKiBEZWJ1Z2dlci5jcHAgKi8sCisJCQkJRjY5
MkE4NTkwMjU1NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2VyLmggKi8sCisJCQkJQkMzMTM1NjMwRjMw
MkZBMzAwM0RGRDNBIC8qIERlYnVnZ2VyQWN0aXZhdGlvbi5jcHAgKi8sCisJCQkJQkMzMTM1NjIw
RjMwMkZBMzAwM0RGRDNBIC8qIERlYnVnZ2VyQWN0aXZhdGlvbi5oICovLAorCQkJCTE0OTU1OUVE
MEREQ0RERjcwMDY0ODA4NyAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5jcHAgKi8sCisJCQkJMTQ4MERC
OUIwRERDMjI3RjAwM0NGREYyIC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmggKi8sCisJCQkJRkVBMDg2
MUYxODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICovLAorCQkJKTsKKwkJ
CXBhdGggPSBkZWJ1Z2dlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFD
OTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTU0MDc1ODQxOEY0QTM3NTAwNjAyQTVE
IC8qIENvbXBpbGVSdW50aW1lVG9MTFZNSVIueGNjb25maWcgKi8sCisJCQkJMUM5MDUxNDUwQkE5
RThBNzAwODFFOUQwIC8qIEJhc2UueGNjb25maWcgKi8sCisJCQkJMUM5MDUxNDQwQkE5RThBNzAw
ODFFOUQwIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKKwkJCQk0NDkwOTdFRTBGOEY4MUI1
MDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8sCisJCQkJRkVFN0Q1QTAwRDk5
QUMwNDAwNTM1MUY2IC8qIGlPUy54Y2NvbmZpZyAqLywKKwkJCQkxQzkwNTE0MzBCQTlFOEE3MDA4
MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi8sCisJCQkJNURBRkQ2Q0IxNDZCNjg2
MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLywKKwkJCQkwRkNFRkFCRTE4MDVEODY5MDA0NzJD
RTQgLyogTExWTUZvckpTQy54Y2NvbmZpZyAqLywKKwkJCQlCQzAyMUJGMjEzNjkwMEMzMDBGQzU0
NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi8sCisJCQkJMUM5MDUxNDIwQkE5RThBNzAw
ODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8sCisJCQkpOworCQkJcGF0aCA9IENvbmZpZ3Vy
YXRpb25zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJCXRhYldpZHRoID0gNDsKKwkJ
CXVzZXNUYWJzID0gMDsKKwkJfTsKKwkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2
ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQkMxOEM1MjMwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovLAor
CQkJCTY1MTRGMjE3MThCM0UxNjcwMDk4RkY4QiAvKiBCeXRlY29kZXMuaCAqLywKKwkJCQlCQ0Qy
MDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQk2NTE0
RjIxODE4QjNFMTY3MDA5OEZGOEIgLyogSW5pdEJ5dGVjb2Rlcy5hc20gKi8sCisJCQkJQTUxM0U1
QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8sCisJCQkJQTUz
MjQzOTUxODU2QTQ3NTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gKi8sCisJCQkJQTUzMjQz
OTYxODU2QTQ3NTAwMkVENjkyIC8qIEluc3BlY3RvckpTQmFja2VuZENvbW1hbmRzLmpzICovLAor
CQkJCUE1MzI0MzgxMTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRj
aGVycy5jcHAgKi8sCisJCQkJQTUzMjQzODIxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpT
QmFja2VuZERpc3BhdGNoZXJzLmggKi8sCisJCQkJQTUzMjQzODMxODU2ODMxNzAwMkVENjkyIC8q
IEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgKi8sCisJCQkJQTUzMjQzODQxODU2
ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oICovLAorCQkJ
CUE1MzI0Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAg
Ki8sCisJCQkJQTUzMjQzODYxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTVHlwZUJ1aWxk
ZXJzLmggKi8sCisJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNw
cCAqLywKKwkJCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLywK
KwkJCQlCQzg3Q0RCODEwNzEyQUNBMDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCAqLywKKwkJ
CQk3QzE4NEUyNDE3QkZGQTM2MDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
Ki8sCisJCQkJN0MxODRFMjUxN0JGRkEzNjAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5s
dXQuaCAqLywKKwkJCQk5OTI4RkYzOTE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMu
Y3BwICovLAorCQkJCTk5MjhGRjNBMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5o
ICovLAorCQkJCUE3QzIyNUNEMTM5OTg0OUMwMEZGMTY2MiAvKiBLZXl3b3JkTG9va3VwLmggKi8s
CisJCQkJQkMxOEM1MkQwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oICovLAorCQkJCUJD
MjY4MEU2MEUxNkQ1MjMwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJ
CQlCQ0QyMDJENTBFMTcwNzA4MDAyQzdFODIgLyogUmVnRXhwQ29uc3RydWN0b3IubHV0LmggKi8s
CisJCQkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovLAor
CQkJCUJDMThDNTJCMEUxNkZDRDIwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QubHV0LmggKi8sCisJ
CQkJNUQ1MzcyN0QwRTFDNTVFQzAwMjFFNTQ5IC8qIFRyYWNpbmdEdHJhY2UuaCAqLywKKwkJCSk7
CisJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCQlwYXRoID0gRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmU7CisJCQlzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQkJ
dGFiV2lkdGggPSA0OworCQkJdXNlc1RhYnMgPSAwOworCQl9OworCQk2NTJBM0ExQTE2NTFBOTI0
MDBBODBBRkUgLyogQVJNNjQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTY1MkEzQTIyMTY1MUM2OTcwMEE4MEFGRSAvKiBBNjRET3Bjb2RlLmNwcCAqLywK
KwkJCQk2NTJBM0EyMzE2NTFDNjk3MDBBODBBRkUgLyogQTY0RE9wY29kZS5oICovLAorCQkJKTsK
KwkJCW5hbWUgPSBBUk02NDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTY1
QzAyODU5MTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12NyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJNjVDMDI4NUExNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3
RE9wY29kZS5jcHAgKi8sCisJCQkJNjVDMDI4NUIxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9w
Y29kZS5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBBUk12NzsKKwkJCXBhdGggPSBkaXNhc3NlbWJs
ZXIvQVJNdjc7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk3RTM5RDgxRDBF
QzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5NjlBMDcyMDBFRDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwICovLAorCQkJCTk2OUEwNzIxMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRl
Y29kZUdlbmVyYXRvci5oICovLAorCQkJCTk2OUEwNzI3MEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJl
bC5oICovLAorCQkJCTk2MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi8s
CisJCQkJNjU1RUIyOUExMENFMjU4MTAwMUE5OTBFIC8qIE5vZGVzQ29kZWdlbi5jcHAgKi8sCisJ
CQkJOTY5QTA3MjgwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCAqLywKKwkJCQkxNERG
MDREOTE2QjM5OTZEMDAxNkE1MTMgLyogU3RhdGljUHJvcGVydHlBbmFseXNpcy5oICovLAorCQkJ
CTE0Q0E5NThBMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggKi8s
CisJCQkpOworCQkJcGF0aCA9IGJ5dGVjb21waWxlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CisJCTdFMzlEODM3MEVDM0EzODgwMDNBRjExQSAvKiBwYXJzZXIgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3QTdFRTc0MTFCOThCOEQw
MDY1QTE0RiAvKiBBU1RCdWlsZGVyLmggKi8sCisJCQkJOTNGMTk4MUEwODI0NUFBRTAwMUU5QUJD
IC8qIEtleXdvcmRzLnRhYmxlICovLAorCQkJCUY2OTJBODY1MDI1NTU5N0QwMUZGNjBGNyAvKiBM
ZXhlci5jcHAgKi8sCisJCQkJRjY5MkE4NjYwMjU1NTk3RDAxRkY2MEY3IC8qIExleGVyLmggKi8s
CisJCQkJOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLywK
KwkJCQk3RUZGMDA2MzBFQzA1QTlBMDBBQTdDOTMgLyogTm9kZUluZm8uaCAqLywKKwkJCQlGNjky
QTg2RDAyNTU1OTdEMDFGRjYwRjcgLyogTm9kZXMuY3BwICovLAorCQkJCUY2OTJBODZFMDI1NTU5
N0QwMUZGNjBGNyAvKiBOb2Rlcy5oICovLAorCQkJCTkzRjBCM0E5MDlCQjREQzAwMDY4RkNFMyAv
KiBQYXJzZXIuY3BwICovLAorCQkJCTkzRjBCM0FBMDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIu
aCAqLywKKwkJCQk5MzA1MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICov
LAorCQkJCTkzMDUyQzMzMEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5oICovLAorCQkJ
CTBGQ0NBRTQzMTZEMENGNkUwMEQwQzY1QiAvKiBQYXJzZXJFcnJvci5oICovLAorCQkJCUE3N0Yx
ODI0MTY0MTkyNTQwMDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5oICovLAorCQkJCTY1MzAzRDYzMTQ0
N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCAqLywKKwkJCQk4NjlFQkNCNjBFOEM2RDRB
MDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovLAorCQkJCTBGOEYyQjlEMTczMDZDOEIwMDdEQkRB
NSAvKiBTb3VyY2VDb2RlLmNwcCAqLywKKwkJCQk2NUU4NjZFRTBERDU5QUZBMDBBMkIyQTEgLyog
U291cmNlQ29kZS5oICovLAorCQkJCTBGNDkzQUY4MTZEMENBRDEwMDg0NTA4QiAvKiBTb3VyY2VQ
cm92aWRlci5jcHAgKi8sCisJCQkJNjVFODY2RUQwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZVBy
b3ZpZGVyLmggKi8sCisJCQkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3Zp
ZGVyQ2FjaGUuY3BwICovLAorCQkJCUU0OURDMTUxMTJFRjI3MjIwMDE4NEExRiAvKiBTb3VyY2VQ
cm92aWRlckNhY2hlLmggKi8sCisJCQkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8sCisJCQkJQTdBN0VFNzcxMUI5OEI4RDAwNjVBMTRGIC8q
IFN5bnRheENoZWNrZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gcGFyc2VyOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1
bnRpbWUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJD
RjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKKwkJCQlCQ0Y2MDUxMjBF
MjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAorCQkJCUJDMjU3REU1MEUxRjUxQzUwMDE2
QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLAorCQkJCUJDMjU3REU2MEUxRjUxQzUwMDE2QjZDOSAv
KiBBcmd1bWVudHMuaCAqLywKKwkJCQlBNzYxNDBDNzE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1l
bnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTc2MTQwQzgxODI5ODJDQjAwNzUw
NjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBNzYxNDBDOTE4
Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJ
CUE3NjE0MENBMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5o
ICovLAorCQkJCTBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oICov
LAorCQkJCUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgKi8sCisJ
CQkJQTdBOEFGMjYxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggKi8sCisJCQkJMEZG
Qzk5RDIxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5j
cHAgKi8sCisJCQkJMEZGQzk5RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludC5oICovLAorCQkJCUE3QThBRjI3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJh
eUJ1ZmZlclZpZXcuY3BwICovLAorCQkJCUE3QThBRjI4MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJh
eUJ1ZmZlclZpZXcuaCAqLywKKwkJCQlCQzc5NTIwNjBFMTVFOEE4MDBBODk4QUIgLyogQXJyYXlD
b25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQkM3OTUyMDcwRTE1RThBODAwQTg5OEFCIC8qIEFycmF5
Q29uc3RydWN0b3IuaCAqLywKKwkJCQkwRkI3RjM4OTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlD
b252ZW50aW9ucy5oICovLAorCQkJCUE3QkRBRUMwMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0
ZXJhdG9yQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUE3QkRBRUMxMTdGNEVBMTQwMEY2MTQwQyAv
KiBBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBN0JEQUVDMjE3RjRFQTE0MDBG
NjE0MEMgLyogQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTdCREFFQzMxN0Y0
RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JQcm90b3R5cGUuaCAqLywKKwkJCQlGNjkyQTg0
RDAyNTU1OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuY3BwICovLAorCQkJCUY2OTJBODRF
MDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJheVByb3RvdHlwZS5oICovLAorCQkJCTBGQjdGMzhBMTVF
RDhFMzgwMEYxNjdCMiAvKiBBcnJheVN0b3JhZ2UuaCAqLywKKwkJCQkxNDdCODNBQTBFNkRCOEM5
MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCAqLywKKwkJCQk4NjY3MzlE
MDEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdlci5oICovLAorCQkJCUJDNzk1MjMyMEUxNUVC
NTYwMEE4OThBQiAvKiBCb29sZWFuQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUJDNzk1MjMzMEUx
NUVCNTYwMEE4OThBQiAvKiBCb29sZWFuQ29uc3RydWN0b3IuaCAqLywKKwkJCQlGNjkyQTg1MDAy
NTU1OTdEMDFGRjYwRjcgLyogQm9vbGVhbk9iamVjdC5jcHAgKi8sCisJCQkJNzA0RkQzNTMwNTY5
N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLywKKwkJCQlCQzc5NTIzNDBFMTVFQjU2
MDBBODk4QUIgLyogQm9vbGVhblByb3RvdHlwZS5jcHAgKi8sCisJCQkJQkM3OTUyMzUwRTE1RUI1
NjAwQTg5OEFCIC8qIEJvb2xlYW5Qcm90b3R5cGUuaCAqLywKKwkJCQkwRkI3RjM4QjE1RUQ4RTM4
MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggKi8sCisJCQkJMEZCN0YzOEMxNUVEOEUzODAwRjE2N0Iy
IC8qIEJ1dHRlcmZseUlubGluZXMuaCAqLywKKwkJCQlCQ0E2MkRGRTBFMjgyNjIzMDAwNEYzMEQg
LyogQ2FsbERhdGEuY3BwICovLAorCQkJCTE0NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxs
RGF0YS5oICovLAorCQkJCUJDNkFBQUU0MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCAq
LywKKwkJCQlBNzdGMTgxRjE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmNwcCAqLywKKwkJ
CQlBNzdGMTgyMDE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggKi8sCisJCQkJMEY4Rjk0
M0ExNjY3NjMxMTAwRDYxOTcxIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwICovLAorCQkJ
CTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8s
CisJCQkJNjVFQTczNjIwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAq
LywKKwkJCQk2NUVBNzM2MzBCQUUzNUQxMDAxQkI1NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuaCAq
LywKKwkJCQlBNzA5RjJGMTE3QTBBQzJBMDA1MTJFOTggLyogQ29tbW9uU2xvd1BhdGhzLmNwcCAq
LywKKwkJCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8s
CisJCQkJNjU1M0EzMkYxN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlv
bnMuY3BwICovLAorCQkJCTY1NTNBMzMwMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0
aHNFeGNlcHRpb25zLmggKi8sCisJCQkJQTdFNUEzQTUxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBp
bGF0aW9uUmVzdWx0LmNwcCAqLywKKwkJCQlBN0U1QTNBNjE3OTc0MzJEMDBFODkzQzAgLyogQ29t
cGlsYXRpb25SZXN1bHQuaCAqLywKKwkJCQk5NjlBMDkyMjBFRDFFMDlDMDBGMUY2ODEgLyogQ29t
cGxldGlvbi5jcHAgKi8sCisJCQkJRjVCQjJCQzUwMzBGNzcyMTAxRkNGRTFEIC8qIENvbXBsZXRp
b24uaCAqLywKKwkJCQkwRkRCMkNFOTE3NDg5NkM3MDA3QjNDMUIgLyogQ29uY3VycmVudEpJVExv
Y2suaCAqLywKKwkJCQlBNUI2QTc0QzE4QzZEQkE2MDBGMTFFOTEgLyogQ29uc29sZUNsaWVudC5j
cHAgKi8sCisJCQkJQTUzQ0UwODkxOEJDMjFDMzAwQkVERjc2IC8qIENvbnNvbGVDbGllbnQuaCAq
LywKKwkJCQlBNTNDRTA4MTE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlwZS5jcHAg
Ki8sCisJCQkJQTUzQ0UwODIxOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUuaCAq
LywKKwkJCQlBNUZEMDA3MTE4OUIwMzhDMDA2MzMyMzEgLyogQ29uc29sZVR5cGVzLmggKi8sCisJ
CQkJMEZGQzk5RDAxODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovLAorCQkJCUJD
QTYyREZGMEUyODI2MzEwMDA0RjMwRCAvKiBDb25zdHJ1Y3REYXRhLmNwcCAqLywKKwkJCQlCQzhG
M0NDRjBEQUYxN0JBMDA1NzdBODAgLyogQ29uc3RydWN0RGF0YS5oICovLAorCQkJCTBGMkI2NkIw
MTdCNkI1QUIwMEE3QUUzRiAvKiBEYXRhVmlldy5jcHAgKi8sCisJCQkJMEYyQjY2QjExN0I2QjVB
QjAwQTdBRTNGIC8qIERhdGFWaWV3LmggKi8sCisJCQkJQkNEMjAzNDUwRTE3MTM1RTAwMkM3RTgy
IC8qIERhdGVDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQkNEMjAzNDYwRTE3MTM1RTAwMkM3RTgy
IC8qIERhdGVDb25zdHJ1Y3Rvci5oICovLAorCQkJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAv
KiBEYXRlQ29udmVyc2lvbi5jcHAgKi8sCisJCQkJRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8q
IERhdGVDb252ZXJzaW9uLmggKi8sCisJCQkJQkMxMTY2MDAwRTE5OTdCMTAwODA2NkREIC8qIERh
dGVJbnN0YW5jZS5jcHAgKi8sCisJCQkJQkMxMTY2MDEwRTE5OTdCMTAwODA2NkREIC8qIERhdGVJ
bnN0YW5jZS5oICovLAorCQkJCTE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFu
Y2VDYWNoZS5oICovLAorCQkJCUJDRDIwMzQ3MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90
eXBlLmNwcCAqLywKKwkJCQlCQ0QyMDM0ODBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlw
ZS5oICovLAorCQkJCUE3MDQ0N0VCMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAg
Ki8sCisJCQkJQTcwNDQ3RUMxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggKi8sCisJ
CQkJQkMzMzdCRUEwRTFCMDBDQjAwNzY5MThBIC8qIEVycm9yLmNwcCAqLywKKwkJCQlCQzMwNDYw
NjBFMUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCAqLywKKwkJCQlCQzAyRTkwNDBFMTgzOURCMDAw
RjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQkMwMkU5MDUwRTE4MzlEQjAw
MEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuaCAqLywKKwkJCQlGRUI1OEMxMjE4N0I4QjE2MDA5
OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCAqLywKKwkJCQlGRUI1OEMxMzE4N0I4QjE2
MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi8sCisJCQkJQkMwMkU5OEEwRTE4M0Uz
ODAwMEY5Mjk3IC8qIEVycm9ySW5zdGFuY2UuY3BwICovLAorCQkJCUJDMDJFOThCMEUxODNFMzgw
MDBGOTI5NyAvKiBFcnJvckluc3RhbmNlLmggKi8sCisJCQkJQkMwMkU5MDYwRTE4MzlEQjAwMEY5
Mjk3IC8qIEVycm9yUHJvdG90eXBlLmNwcCAqLywKKwkJCQlCQzAyRTkwNzBFMTgzOURCMDAwRjky
OTcgLyogRXJyb3JQcm90b3R5cGUuaCAqLywKKwkJCQkxNDI5RDg3NzBFRDIxQUNEMDBCODk2MTkg
LyogRXhjZXB0aW9uSGVscGVycy5jcHAgKi8sCisJCQkJQTcyNzAxQjMwREFERTk0OTAwRTU0OEQ3
IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLywKKwkJCQk4NkNBMDMyRDEwMzhFODQ0MDAyOEE2MDkg
LyogRXhlY3V0YWJsZS5jcHAgKi8sCisJCQkJODZDQUZFRTIxMDM1RERFNjAwMjhBNjA5IC8qIEV4
ZWN1dGFibGUuaCAqLywKKwkJCQlBN0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFy
cmF5LmggKi8sCisJCQkJQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5o
ICovLAorCQkJCUJDMjY4MEMwMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCAqLywKKwkJCQlCQzI2ODBDMTBFMTZENEU5MDBBMDZFOTIgLyogRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oICovLAorCQkJCTBGQjRCNTIxMTZCNjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1
dGFibGVEdW1wLmNwcCAqLywKKwkJCQkwRkI0QjUyMjE2QjYyNzhEMDAzRjY5NkIgLyogRnVuY3Rp
b25FeGVjdXRhYmxlRHVtcC5oICovLAorCQkJCUY2OTJBODVDMDI1NTU5N0QwMUZGNjBGNyAvKiBG
dW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCisJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8q
IEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCisJCQkJMEYyQjY2QjIxN0I2QjVBQjAwQTdBRTNGIC8q
IEdlbmVyaWNUeXBlZEFycmF5Vmlldy5oICovLAorCQkJCTBGMkI2NkIzMTdCNkI1QUIwMEE3QUUz
RiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggKi8sCisJCQkJQkMwMkU5QjgwRTE4
NDU0NTAwMEY5Mjk3IC8qIEdldHRlclNldHRlci5jcHAgKi8sCisJCQkJQkMzMzdCREUwRTFBRjBC
ODAwNzY5MThBIC8qIEdldHRlclNldHRlci5oICovLAorCQkJCTUyRkFEREVDMTk0NjdBN0EwMEM4
QkJFNSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwICovLAorCQkJCTUyRkFEREVBMTk0
NjdBMjQwMEM4QkJFNSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCAqLywKKwkJCQk5MzNB
MzQ5RDAzOEFFODBGMDA4NjM1Q0UgLyogSWRlbnRpZmllci5jcHAgKi8sCisJCQkJOTMzQTM0OUEw
MzhBRTdDNjAwODYzNUNFIC8qIElkZW50aWZpZXIuaCAqLywKKwkJCQk4NjA2RERFOTE4REE0NEFC
MDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMuaCAqLywKKwkJCQkwRkI3RjM4RDE1RUQ4RTM4
MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCAqLywKKwkJCQkwRkI3RjM4RTE1RUQ4RTM4MDBG
MTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggKi8sCisJCQkJMEYxM0UwNEMxNjE2NEEx
QjAwREM4REU3IC8qIEluZGV4aW5nVHlwZS5jcHAgKi8sCisJCQkJMEZCN0YzOEYxNUVEOEUzODAw
RjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oICovLAorCQkJCUUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3
NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCAqLywKKwkJCQlFMTc4NjMzRjBEOUJFQzAwMDBE
NzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5oICovLAorCQkJCUE3QThBRjJDMTdBREI1RjMw
MDVBQjE3NCAvKiBJbnQxNkFycmF5LmggKi8sCisJCQkJQTdBOEFGMkQxN0FEQjVGMzAwNUFCMTc0
IC8qIEludDMyQXJyYXkuaCAqLywKKwkJCQlBN0E4QUYyQjE3QURCNUYzMDA1QUIxNzQgLyogSW50
OEFycmF5LmggKi8sCisJCQkJQTc4ODUzRjcxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3Ry
dWN0dXJlQ2hhaW4uY3BwICovLAorCQkJCUE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRl
bmRlZFN0cnVjdHVyZUNoYWluLmggKi8sCisJCQkJQkM5QkI5NUIwRTE5NjgwNjAwREY4ODU1IC8q
IEludGVybmFsRnVuY3Rpb24uY3BwICovLAorCQkJCUJDMTE2NjdBMEUxOTlDMDUwMDgwNjZERCAv
KiBJbnRlcm5hbEZ1bmN0aW9uLmggKi8sCisJCQkJODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8q
IEludHJpbnNpYy5oICovLAorCQkJCTE0REE4MThGMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2
YXRpb24uY3BwICovLAorCQkJCTE0REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRp
b24uaCAqLywKKwkJCQlBNzYxNDBDQjE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVudHNJdGVy
YXRvci5jcHAgKi8sCisJCQkJQTc2MTQwQ0MxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRz
SXRlcmF0b3IuaCAqLywKKwkJCQk5M0FERkNFNjBDQ0JEN0FDMDBEMzBCMDggLyogSlNBcnJheS5j
cHAgKi8sCisJCQkJOTM4NzcyRTUwMzhCRkUxOTAwODYzNUNFIC8qIEpTQXJyYXkuaCAqLywKKwkJ
CQkwRjJCNjZCNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlci5jcHAgKi8sCisJCQkJ
MEYyQjY2QjUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuaCAqLywKKwkJCQkwRjJC
NjZCNjE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCAqLywK
KwkJCQkwRjJCNjZCNzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9y
LmggKi8sCisJCQkJMEYyQjY2QjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJQcm90
b3R5cGUuY3BwICovLAorCQkJCTBGMkI2NkI5MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVm
ZmVyUHJvdG90eXBlLmggKi8sCisJCQkJMEYyQjY2QkExN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJy
YXlCdWZmZXJWaWV3LmNwcCAqLywKKwkJCQkwRjJCNjZCQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNB
cnJheUJ1ZmZlclZpZXcuaCAqLywKKwkJCQkwRjJCNjZCQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNB
cnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggKi8sCisJCQkJQTdCREFFQzQxN0Y0RUExNDAwRjYxNDBD
IC8qIEpTQXJyYXlJdGVyYXRvci5jcHAgKi8sCisJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBD
IC8qIEpTQXJyYXlJdGVyYXRvci5oICovLAorCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAv
KiBKU0JvdW5kRnVuY3Rpb24uY3BwICovLAorCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAv
KiBKU0JvdW5kRnVuY3Rpb24uaCAqLywKKwkJCQlCQzdGOEZCQTBFMTlEMUVGMDA4NjMyQzAgLyog
SlNDZWxsLmNwcCAqLywKKwkJCQlCQzExNjdEODBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmgg
Ki8sCisJCQkJMEY5NzQ5NkYxNjg3QURFMjAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMuaCAqLywK
KwkJCQkwRjFERDg0OTE4QTk0NUJFMDAyNkYzRkEgLyogSlNDSW5saW5lcy5oICovLAorCQkJCUY2
OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU0NKU1ZhbHVlLmNwcCAqLywKKwkJCQkxNEFCQjM2
RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNWYWx1ZS5oICovLAorCQkJCTg2NUEzMEYwMTM1MDA3
RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovLAorCQkJCUE1M0NFMDgzMThCQzFB
NTYwMEJFREY3NiAvKiBKU0NvbnNvbGUuY3BwICovLAorCQkJCUE1M0NFMDg0MThCQzFBNTYwMEJF
REY3NiAvKiBKU0NvbnNvbGUuaCAqLywKKwkJCQkwRjJCNjZCRDE3QjZCNUFCMDBBN0FFM0YgLyog
SlNEYXRhVmlldy5jcHAgKi8sCisJCQkJMEYyQjY2QkUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0
YVZpZXcuaCAqLywKKwkJCQkwRjJCNjZCRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1By
b3RvdHlwZS5jcHAgKi8sCisJCQkJMEYyQjY2QzAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZp
ZXdQcm90b3R5cGUuaCAqLywKKwkJCQk5Nzg4RkMyMjE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRl
TWF0aC5jcHAgKi8sCisJCQkJOTc4OEZDMjMxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGgu
aCAqLywKKwkJCQlDMkE3RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaCAqLywKKwkJCQlBN0I0QUNBRTE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3Mu
aCAqLywKKwkJCQkwRjJCNjZDMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCAq
LywKKwkJCQkwRjJCNjZDMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCAqLywK
KwkJCQlGNjkyQTg1RTAyNTU1OTdEMDFGRjYwRjcgLyogSlNGdW5jdGlvbi5jcHAgKi8sCisJCQkJ
RjY5MkE4NUYwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uaCAqLywKKwkJCQlBNzIwMjhC
OTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCAqLywKKwkJCQkwRjJCNjZD
MzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCAqLywKKwkJCQkw
RjJCNjZDNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3Rvci5oICovLAorCQkJCTBGMkI2NkM1MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oICovLAorCQkJCTBGMkI2NkM2MTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCAqLywKKwkJCQkwRjJC
NjZDNzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUu
aCAqLywKKwkJCQkwRjJCNjZDODE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVJbmxpbmVzLmggKi8sCisJCQkJMTRERTBENjgwRDAyNDMxNDAwQUFDQ0Ey
IC8qIEpTR2xvYmFsT2JqZWN0LmNwcCAqLywKKwkJCQlBOEU4OTQzMzBDRDA2MDNGMDAzNjcxNzkg
LyogSlNHbG9iYWxPYmplY3QuaCAqLywKKwkJCQlBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyog
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLywKKwkJCQlBNTk0NTU5MTE4MjQ3NDQ3MDBD
QzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggKi8sCisJCQkJQkM3NTZGQzYwRTIw
MzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCAqLywKKwkJCQlCQzc1
NkZDNzBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCAqLywKKwkJ
CQkwRjJCNjZDQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQxNkFycmF5LmggKi8sCisJCQkJMEYy
QjY2Q0IxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MzJBcnJheS5oICovLAorCQkJCTBGMkI2NkM5
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDhBcnJheS5oICovLAorCQkJCTY1RUE0Qzk5MDkyQUY5
RTIwMDkzRDgwMCAvKiBKU0xvY2suY3BwICovLAorCQkJCTY1RUE0QzlBMDkyQUY5RTIwMDkzRDgw
MCAvKiBKU0xvY2suaCAqLywKKwkJCQlBNzAwODczRjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAu
Y3BwICovLAorCQkJCUE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oICovLAorCQkJ
CUE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAqLywKKwkJCQlB
NzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovLAorCQkJCTE0ODc0
QURGMTVFQkRFNEEwMDJFMzU4NyAvKiBKU05hbWVTY29wZS5jcHAgKi8sCisJCQkJMTQ4NzRBRTAx
NUVCREU0QTAwMkUzNTg3IC8qIEpTTmFtZVNjb3BlLmggKi8sCisJCQkJQTcyNzAwNzgwREFDNjA1
NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwICovLAorCQkJCUE3MjcwMDc3MERBQzYwNTYw
MEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmggKi8sCisJCQkJQkMyMkEzOTgwRTE2RTE0ODAwQUYy
MUM4IC8qIEpTT2JqZWN0LmNwcCAqLywKKwkJCQlCQzIyQTM5OTBFMTZFMTQ4MDBBRjIxQzggLyog
SlNPYmplY3QuaCAqLywKKwkJCQlBN0Y5OTM1RTBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVj
dC5jcHAgKi8sCisJCQkJQTdGOTkzNUQwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuaCAq
LywKKwkJCQk3QzE4NEUxODE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCAqLywKKwkJ
CQk3QzE4NEUxOTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmggKi8sCisJCQkJN0MxODRF
MjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk3
QzE4NEUyMTE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3RydWN0b3IuaCAqLywKKwkJ
CQk3QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovLAor
CQkJCTdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5oICovLAor
CQkJCTdDMDA4Q0QwMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwICov
LAorCQkJCTdDMDA4Q0QxMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuaCAq
LywKKwkJCQk3QzE4NEUxQzE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmNw
cCAqLywKKwkJCQk3QzE4NEUxRDE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBl
LmggKi8sCisJCQkJN0MwMDhDREMxODcxMjU4RDAwOTU1QzI0IC8qIEpTUHJvbWlzZVJlYWN0aW9u
LmNwcCAqLywKKwkJCQk3QzAwOENERDE4NzEyNThEMDA5NTVDMjQgLyogSlNQcm9taXNlUmVhY3Rp
b24uaCAqLywKKwkJCQlBNzI3RkY2NjBEQTMwNTNCMDBFNTQ4RDcgLyogSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAgKi8sCisJCQkJQTcyN0ZGNjUwREEzMDUzQjAwRTU0OEQ3IC8qIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCAqLywKKwkJCQk4NjI1NTNDRTE2MTM2QUE1MDA5RjE3RDAgLyogSlNQ
cm94eS5jcHAgKi8sCisJCQkJODYyNTUzQ0YxNjEzNkFBNTAwOUYxN0QwIC8qIEpTUHJveHkuaCAq
LywKKwkJCQkxNDg3NEFFMTE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5jcHAgKi8sCisJCQkJ
MTQ4NzRBRTIxNUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCAqLywKKwkJCQkwRjkxOUQwRTE1
N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgKi8sCisJCQkJ
MEY5MTlEMEYxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCAq
LywKKwkJCQlBNzI5OUQ5QjE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuY3BwICovLAorCQkJCUE3
Mjk5RDlDMTdEMTI4MzcwMDVGNUZGOSAvKiBKU1NldC5oICovLAorCQkJCUE3OTBERDY5MTgyRjQ5
OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmNwcCAqLywKKwkJCQlBNzkwREQ2QTE4MkY0OTk3
MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovLAorCQkJCUJDMDJFOUI2MEUxODQyRkEwMDBG
OTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCisJCQkJRjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8q
IEpTU3RyaW5nLmggKi8sCisJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5n
QnVpbGRlci5oICovLAorCQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pv
aW5lci5jcHAgKi8sCisJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9p
bmVyLmggKi8sCisJCQkJMEY5MTlEMDkxNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVP
YmplY3QuY3BwICovLAorCQkJCTBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRh
YmxlT2JqZWN0LmggKi8sCisJCQkJMTRBQkI0NTQwOTlDMkEwRjAwRTJBMjRGIC8qIEpTVHlwZS5o
ICovLAorCQkJCTBGMkI2NkNDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1
Y3RvcnMuY3BwICovLAorCQkJCTBGMkI2NkNEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJy
YXlDb25zdHJ1Y3RvcnMuaCAqLywKKwkJCQkwRjJCNjZDRTE3QjZCNUFCMDBBN0FFM0YgLyogSlNU
eXBlZEFycmF5UHJvdG90eXBlcy5jcHAgKi8sCisJCQkJMEYyQjY2Q0YxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTVHlwZWRBcnJheVByb3RvdHlwZXMuaCAqLywKKwkJCQkwRjJCNjZEMDE3QjZCNUFCMDBB
N0FFM0YgLyogSlNUeXBlZEFycmF5cy5jcHAgKi8sCisJCQkJMEYyQjY2RDExN0I2QjVBQjAwQTdB
RTNGIC8qIEpTVHlwZWRBcnJheXMuaCAqLywKKwkJCQk2NTA3RDI5NzBFODcxRTRBMDBEN0Q4OTYg
LyogSlNUeXBlSW5mby5oICovLAorCQkJCTBGMkI2NkQ0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1Vp
bnQxNkFycmF5LmggKi8sCisJCQkJMEYyQjY2RDUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDMy
QXJyYXkuaCAqLywKKwkJCQkwRjJCNjZEMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50OEFycmF5
LmggKi8sCisJCQkJMEYyQjY2RDMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDhDbGFtcGVkQXJy
YXkuaCAqLywKKwkJCQlCQzIyQTM5QTBFMTZFMTQ4MDBBRjIxQzggLyogSlNWYXJpYWJsZU9iamVj
dC5jcHAgKi8sCisJCQkJMTRGMjUyNTYwRDA4REQ4RDAwNEVDRkZGIC8qIEpTVmFyaWFibGVPYmpl
Y3QuaCAqLywKKwkJCQlBN0NBM0FFMTE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmNwcCAq
LywKKwkJCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8sCisJCQkJ
MTQ0MjU2NUYxNUVERTk4RDAwNjZBNDlCIC8qIEpTV2l0aFNjb3BlLmNwcCAqLywKKwkJCQkxNDQy
NTY2MDE1RURFOThEMDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuaCAqLywKKwkJCQk2NUM3QTE3MTBB
OEVBQUNCMDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0LmNwcCAqLywKKwkJCQk2NUM3QTE3MjBB
OEVBQUNCMDBGQTM3RUEgLyogSlNXcmFwcGVyT2JqZWN0LmggKi8sCisJCQkJQTdFMkVBNkEwRkI0
NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuY3BwICovLAorCQkJCUE3RTJFQTY5MEZCNDYw
Q0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi8sCisJCQkJRjY5MkE4NjgwMjU1NTk3RDAx
RkY2MEY3IC8qIExvb2t1cC5jcHAgKi8sCisJCQkJRjY5MkE4NjkwMjU1NTk3RDAxRkY2MEY3IC8q
IExvb2t1cC5oICovLAorCQkJCUE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5jcHAgKi8sCisJCQkJQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVj
dG9yLmggKi8sCisJCQkJQTc4NTA3RDQxN0NCQzZGRDAwMTFGNkU3IC8qIE1hcERhdGEuY3BwICov
LAorCQkJCUE3ODUwN0Q1MTdDQkM2RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggKi8sCisJCQkJQTc0
REVGOEIxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwICovLAor
CQkJCUE3NERFRjhDMTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvckNvbnN0cnVjdG9yLmgg
Ki8sCisJCQkJQTc0REVGOEQxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBl
LmNwcCAqLywKKwkJCQlBNzRERUY4RTE4MkQ5OTE0MDA1MjJDMjIgLyogTWFwSXRlcmF0b3JQcm90
b3R5cGUuaCAqLywKKwkJCQlBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBl
LmNwcCAqLywKKwkJCQlBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmgg
Ki8sCisJCQkJODYxMkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi8sCisJ
CQkJRjY5MkE4NkEwMjU1NTk3RDAxRkY2MEY3IC8qIE1hdGhPYmplY3QuY3BwICovLAorCQkJCUY2
OTJBODZCMDI1NTU5N0QwMUZGNjBGNyAvKiBNYXRoT2JqZWN0LmggKi8sCisJCQkJOTAyMTNFM0Ix
MjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICovLAorCQkJCTkwMjEzRTND
MTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggKi8sCisJCQkJN0MwMDhDRTUx
ODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oICovLAorCQkJCTg2RUJGMkY5MTU2MEYwMzYw
MDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTg2RUJGMkZBMTU2MEYwMzYw
MDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuaCAqLywKKwkJCQk4NkVCRjJGQjE1NjBGMDM2MDA4
RTkyMjIgLyogTmFtZUluc3RhbmNlLmNwcCAqLywKKwkJCQk4NkVCRjJGQzE1NjBGMDM2MDA4RTky
MjIgLyogTmFtZUluc3RhbmNlLmggKi8sCisJCQkJODZFQkYyRkQxNTYwRjAzNjAwOEU5MjIyIC8q
IE5hbWVQcm90b3R5cGUuY3BwICovLAorCQkJCTg2RUJGMkZFMTU2MEYwMzYwMDhFOTIyMiAvKiBO
YW1lUHJvdG90eXBlLmggKi8sCisJCQkJQkMwMkU5MDgwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUJDMDJFOTA5MEUxODM5REIwMDBGOTI5NyAv
KiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggKi8sCisJCQkJQkMwMkU5MEEwRTE4MzlEQjAwMEY5
Mjk3IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCAqLywKKwkJCQlCQzAyRTkwQjBFMTgzOURC
MDAwRjkyOTcgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuaCAqLywKKwkJCQlCQzI2ODBDMjBFMTZE
NEU5MDBBMDZFOTIgLyogTnVtYmVyQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUJDMjY4MEMzMEUx
NkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oICovLAorCQkJCUY2OTJBODcwMDI1
NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuY3BwICovLAorCQkJCUY2OTJBODcxMDI1NTU5
N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuaCAqLywKKwkJCQlCQzI2ODBDNDBFMTZENEU5MDBB
MDZFOTIgLyogTnVtYmVyUHJvdG90eXBlLmNwcCAqLywKKwkJCQlCQzI2ODBDNTBFMTZENEU5MDBB
MDZFOTIgLyogTnVtYmVyUHJvdG90eXBlLmggKi8sCisJCQkJMTQyRDM5MzgxMDNFNDU2MDAwN0RD
QjUyIC8qIE51bWVyaWNTdHJpbmdzLmggKi8sCisJCQkJQkMyNjgwQzYwRTE2RDRFOTAwQTA2RTky
IC8qIE9iamVjdENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlCQzI2ODBDNzBFMTZENEU5MDBBMDZF
OTIgLyogT2JqZWN0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlCQzI2ODBDODBFMTZENEU5MDBBMDZF
OTIgLyogT2JqZWN0UHJvdG90eXBlLmNwcCAqLywKKwkJCQlCQzI2ODBDOTBFMTZENEU5MDBBMDZF
OTIgLyogT2JqZWN0UHJvdG90eXBlLmggKi8sCisJCQkJRjY5MkE4NzcwMjU1NTk3RDAxRkY2MEY3
IC8qIE9wZXJhdGlvbnMuY3BwICovLAorCQkJCUY2OTJBODc4MDI1NTU5N0QwMUZGNjBGNyAvKiBP
cGVyYXRpb25zLmggKi8sCisJCQkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMu
Y3BwICovLAorCQkJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi8sCisJ
CQkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8sCisJCQkJQTdG
QjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJ
QTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAorCQkJ
CUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oICovLAor
CQkJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLywKKwkJCQk2
NTQwMEMwRjBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwICovLAorCQkJ
CTY1NDAwQzEwMEE2OUJBRjIwMDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oICovLAorCQkJ
CTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oICovLAorCQkJCTY1
NjIxRTZCMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovLAorCQkJCTY1NjIx
RTZDMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLywKKwkJCQkwRkI3RjM5MDE1
RUQ4RTM4MDBGMTY3QjIgLyogUHJvcGVydHlTdG9yYWdlLmggKi8sCisJCQkJQUQxQ0YwNjgxNkRD
QUIyRDAwQjk3MTIzIC8qIFByb3BlcnR5VGFibGUuY3BwICovLAorCQkJCTY1QzAyRkJCMDYzNzQ2
MkEwMDNFN0VFNiAvKiBQcm90ZWN0LmggKi8sCisJCQkJMTREODQ0QTIxNkFBMkM3MDAwQTY1QUYw
IC8qIFByb3RvdHlwZU1hcC5jcHAgKi8sCisJCQkJMTREODQ0QTMxNkFBMkM3MDAwQTY1QUYwIC8q
IFByb3RvdHlwZU1hcC5oICovLAorCQkJCTBGNTc4MEExMThGRTFFOTgwMDFFNzJEOSAvKiBQdXJl
TmFOLmggKi8sCisJCQkJMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4
TW9kZS5oICovLAorCQkJCTE0N0I4NDYyMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNs
b3QuaCAqLywKKwkJCQlGNjkyQTg3RDAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLywK
KwkJCQlGNjkyQTg3RTAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmggKi8sCisJCQkJQTE3MTJC
M0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLywKKwkJCQlBMTcxMkIzRTEx
QzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLywKKwkJCQk4NkY3NUVGQjE1MUMwNjJG
MDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCAqLywKKwkJCQk4NkY3NUVGQzE1MUMw
NjJGMDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmggKi8sCisJCQkJQkNEMjAyQkQwRTE3
MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlCQ0QyMDJCRTBF
MTcwNkE3MDAyQzdFODIgLyogUmVnRXhwQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBMTcxMkI0MDEx
QzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8sCisJCQkJODZGNzVFRkQxNTFDMDYyRjAw
N0M5QkEzIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5jcHAgKi8sCisJCQkJOTNDRURERkIwRUE5MUVF
NjAwMjU4RUJFIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5oICovLAorCQkJCUY2OTJBODdCMDI1NTU5
N0QwMUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuY3BwICovLAorCQkJCUY2OTJBODdDMDI1NTU5N0Qw
MUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuaCAqLywKKwkJCQlCQ0QyMDJCRjBFMTcwNkE3MDAyQzdF
ODIgLyogUmVnRXhwUHJvdG90eXBlLmNwcCAqLywKKwkJCQlCQ0QyMDJDMDBFMTcwNkE3MDAyQzdF
ODIgLyogUmVnRXhwUHJvdG90eXBlLmggKi8sCisJCQkJMEY2QjFDQjgxODYxMjQ0QzAwODQ1RDk3
IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oICovLAorCQkJCTBGQjdGMzkxMTVFRDhFMzgw
MEYxNjdCMiAvKiBSZWplY3QuaCAqLywKKwkJCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyog
U2FtcGxpbmdDb3VudGVyLmNwcCAqLywKKwkJCQkwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyog
U2FtcGxpbmdDb3VudGVyLmggKi8sCisJCQkJQTcyOTlEQTMxN0QxMjg1ODAwNUY1RkY5IC8qIFNl
dENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBNzI5OURBNDE3RDEyODU4MDA1RjVGRjkgLyogU2V0
Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBNzkwREQ2NTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRl
cmF0b3JDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTc5MERENjYxODJGNDk5NzAwNTg4ODA3IC8q
IFNldEl0ZXJhdG9yQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBNzkwREQ2NzE4MkY0OTk3MDA1ODg4
MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCUE3OTBERDY4MTgyRjQ5OTcw
MDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oICovLAorCQkJCUE3Mjk5RDlGMTdEMTI4
NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwICovLAorCQkJCUE3Mjk5REEwMTdEMTI4NDgw
MDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCAqLywKKwkJCQkwRjJCNjZENjE3QjZCNUFCMDBBN0FF
M0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwICovLAorCQkJCTBGMkI2NkQ3MTdC
NkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oICovLAorCQkJCTkz
MzAzRkU4MEU2QTcyQjUwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwICovLAorCQkJCTkzMzAz
RkVBMEU2QTcyQzAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuaCAqLywKKwkJCQkwRjBDRDRDMzE1
RjZCNkI1MDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgKi8sCisJCQkJMEZCN0Yz
OTIxNUVEOEUzODAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCAqLywKKwkJCQkwRjNB
Qzc1MTE4M0VBMTA0MDAzMjAyOUYgLyogU3RhY2tBbGlnbm1lbnQuaCAqLywKKwkJCQlBNzMwQjYx
MTEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwICovLAorCQkJCUE3
MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5oICovLAorCQkJ
CUJDMThDM0MwMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5jcHAgKi8sCisJ
CQkJQkMxOEMzQzEwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmggKi8sCisJ
CQkJQkMxOEMzQzIwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ09iamVjdC5jcHAgKi8sCisJCQkJ
QkMxOEMzQzMwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ09iamVjdC5oICovLAorCQkJCUJDMThD
M0M1MEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuY3BwICovLAorCQkJCUJDMThD
M0M2MEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCAqLywKKwkJCQk5MzM0NUE4
NzEyRDgzOEM0MDAzMDJCRTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgKi8sCisJCQkJ
OTMzNDVBODgxMkQ4MzhDNDAwMzAyQkUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCAqLywK
KwkJCQlCQ0RFM0FCMDBFNkM4MkNGMDAxNDUzQTcgLyogU3RydWN0dXJlLmNwcCAqLywKKwkJCQlC
Q0RFM0FCMTBFNkM4MkNGMDAxNDUzQTcgLyogU3RydWN0dXJlLmggKi8sCisJCQkJN0U0RUU3MEUw
RUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLywKKwkJCQk3RTRFRTcwODBF
QkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLywKKwkJCQkyQUFBQTMxMDE4QkQ0
OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi8sCisJCQkJMkFGNzM4MkExOEJCQkY5
MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovLAorCQkJCTJBRjczODJCMThCQkJG
OTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8sCisJCQkJMEZEMkM5MjMxNkQwMUVF
OTAwQzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMuaCAqLywKKwkJCQlDMkYwRjJEMDE2QkFFRUU5
MDAxODdDMTkgLyogU3RydWN0dXJlUmFyZURhdGEuY3BwICovLAorCQkJCUMyRkUxOEEzMTZCQUVD
NDAwMEFGMzA2MSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5oICovLAorCQkJCUMyMEJBOTJDMTZCQjFD
MTUwMEIzQUVBMiAvKiBTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCAqLywKKwkJCQlCQzkwNDE0
NzBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggKi8sCisJCQkJ
MEY5MTlEMjcxNTg1Njc3MDAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCAqLywKKwkJCQkxNEEz
OTZBNjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAqLywKKwkJCQkwRkEyQzE3OTE3
RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmNwcCAqLywKKwkJCQkwRkEyQzE3QTE3
RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggKi8sCisJCQkJMEY1NTk4OTcxN0M4
NkM1NjAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggKi8sCisJCQkJNUQ1MzcyNkQwRTFD
NTQ2QjAwMjFFNTQ5IC8qIFRyYWNpbmcuZCAqLywKKwkJCQk1RDUzNzI2RTBFMUM1NDg4MDAyMUU1
NDkgLyogVHJhY2luZy5oICovLAorCQkJCTBGMkI2NkQ4MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBl
ZEFycmF5QWRhcHRvcnMuaCAqLywKKwkJCQkwRjJCNjZEOTE3QjZCNUFCMDBBN0FFM0YgLyogVHlw
ZWRBcnJheUNvbnRyb2xsZXIuY3BwICovLAorCQkJCTBGMkI2NkRBMTdCNkI1QUIwMEE3QUUzRiAv
KiBUeXBlZEFycmF5Q29udHJvbGxlci5oICovLAorCQkJCTBGNEI5NERCMTdCOUYwNzUwMEREMDNB
NCAvKiBUeXBlZEFycmF5SW5saW5lcy5oICovLAorCQkJCTBGMkI2NkRCMTdCNkI1QUIwMEE3QUUz
RiAvKiBUeXBlZEFycmF5cy5oICovLAorCQkJCTBGMkI2NkRDMTdCNkI1QUIwMEE3QUUzRiAvKiBU
eXBlZEFycmF5VHlwZS5jcHAgKi8sCisJCQkJMEYyQjY2REQxN0I2QjVBQjAwQTdBRTNGIC8qIFR5
cGVkQXJyYXlUeXBlLmggKi8sCisJCQkJQTdBOEFGMzIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQx
NkFycmF5LmggKi8sCisJCQkJODY2NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhG
cmFjdGlvbi5oICovLAorCQkJCUE3QThBRjMzMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJh
eS5oICovLAorCQkJCUE3QThBRjMwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggKi8s
CisJCQkJQTdBOEFGMzExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xhbXBlZEFycmF5LmggKi8s
CisJCQkJRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLywKKwkJCQlFMThFM0E1
NjBERjkyNzhDMDBEOTBCMzQgLyogVk0uaCAqLywKKwkJCQlGRTU5MzJBNTE4M0M1QTI2MDBBMUVD
Q0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLywKKwkJCQlGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0Mg
LyogVk1FbnRyeVNjb3BlLmggKi8sCisJCQkJRkVEOTRGMkIxNzFFM0UyMzAwQkU3N0E0IC8qIFdh
dGNoZG9nLmNwcCAqLywKKwkJCQlGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cu
aCAqLywKKwkJCQlGRUQ5NEYyRDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2dNYWMuY3BwICov
LAorCQkJCTE0QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLywKKwkJCQlB
N0NBM0FERDE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmNwcCAqLywKKwkJ
CQlBN0NBM0FERTE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmggKi8sCisJ
CQkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLywKKwkJCQlB
N0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLywKKwkJCQlBN0NBM0FE
RjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTdDQTNB
RTAxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuaCAqLywKKwkJCQkxNDIwQkU3
QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oICovLAorCQkJCUE3RENCNzc5MTJFM0Q5
MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLywKKwkJCQlDMkI2RDc1MjE4QTMzNzkzMDA0
QTkzMDEgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oICovLAorCQkJCTJBMTExMjQzMTkyRkNFNzkw
MDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwICovLAorCQkJCTJBMTExMjQ0MTkyRkNF
NzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0g
cnVudGltZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTg2MDNDRUYwMTRD
NzUzRUYwMEFFNTlFMyAvKiB0b29scyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJODZCNTgyMkUxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQcm9maWxlLmNw
cCAqLywKKwkJCQk4NkI1ODIyRjE0RDIzNzNCMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuaCAqLywK
KwkJCQk4NjAzQ0VGMjE0Qzc1NDY0MDBBRTU5RTMgLyogQ29kZVByb2ZpbGluZy5jcHAgKi8sCisJ
CQkJODYwM0NFRjMxNEM3NTQ2NDAwQUU1OUUzIC8qIENvZGVQcm9maWxpbmcuaCAqLywKKwkJCQk4
NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVOb2RlLmggKi8sCisJCQkJODZC
NTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1NYXBBcnJheS5oICovLAorCQkJKTsKKwkJ
CXBhdGggPSB0b29sczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTg2RUFD
NDhDMEY5M0U4QjkwMDhFQzk0OCAvKiB5YXJyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlBNTdEMjNFQjE4OTFCNTU0MDAzMUM3RkEgLyogUmVndWxhckV4
cHJlc3Npb24uY3BwICovLAorCQkJCUE1N0QyM0VDMTg5MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFy
RXhwcmVzc2lvbi5oICovLAorCQkJCTQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmgg
Ki8sCisJCQkJODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1My
LmNwcCAqLywKKwkJCQk4NjNDNkQ5OTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6
ZVVDUzIuaCAqLywKKwkJCQk4NjNDNkQ5QTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNh
bGl6ZVVDUzIuanMgKi8sCisJCQkJODY3MDRCN0QxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRl
cnByZXRlci5jcHAgKi8sCisJCQkJODY3MDRCN0UxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRl
cnByZXRlci5oICovLAorCQkJCTg2NzA0QjdGMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNw
cCAqLywKKwkJCQk4NjcwNEI4MDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oICovLAorCQkJ
CTg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8sCisJCQkJODY3MDRC
ODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCAqLywKKwkJCQk4NjcwNEI4MzEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLywKKwkJCQk4NjcwNEI0MDEyREI4QTgx
MDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwICovLAorCQkJCTg2NzA0QjQxMTJEQjhB
ODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oICovLAorCQkJKTsKKwkJCW5hbWUgPSB5
YXJyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJODZFQzlEQjMxMzI4REY0
NDAwMkIyQUQ3IC8qIGRmZyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQTc3QTQyMzYxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5jcHAg
Ki8sCisJCQkJQTc3QTQyMzcxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oICov
LAorCQkJCUE3MDREOEZFMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVy
LmggKi8sCisJCQkJQTcwNEQ4RkYxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmggKi8sCisJCQkJMEY1NUMxOTMxNzI3NkU0NjAwQ0VBQkZEIC8qIERGR0Fi
c3RyYWN0VmFsdWUuY3BwICovLAorCQkJCTBGNjIwMTZGMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdB
YnN0cmFjdFZhbHVlLmggKi8sCisJCQkJMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0Fk
amFjZW5jeUxpc3QuaCAqLywKKwkJCQkwRkI0QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxs
b2NhdG9yLmggKi8sCisJCQkJQTczNzgxMDkxNzk5RUEyRTAwODE3NTMzIC8qIERGR0FuYWx5c2lz
LmggKi8sCisJCQkJMEYxRTNBNDMxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRp
b24uaCAqLywKKwkJCQkwRjE2MDE1QTE1NjE5OEJGMDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2lt
cGxpZmljYXRpb25QaGFzZS5jcHAgKi8sCisJCQkJMEYxNjAxNUIxNTYxOThCRjAwQzI1ODdDIC8q
IERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLywKKwkJCQkwRjQ4NTMxRjE4Nzc1
MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmNwcCAqLywKKwkJCQkwRjQ4NTMyMDE4Nzc1MDU2
MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmggKi8sCisJCQkJMEYwNUMzQjIxNjgzQ0Y4RjAwQkFG
NDVCIC8qIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCAqLywKKwkJCQkwRjYzOTQ4MTE1
RTQ4MTE0MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmNwcCAqLywKKwkJCQkwRjYzOTQ4MjE1RTQ4
MTE0MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmggKi8sCisJCQkJQTdEOUEyOEYxN0EwQkM3NDAw
RUUyNjE4IC8qIERGR0F0VGFpbEFic3RyYWN0U3RhdGUuY3BwICovLAorCQkJCUE3RDlBMjkwMTdB
MEJDNzQwMEVFMjYxOCAvKiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmggKi8sCisJCQkJMEY2NjZF
QzIxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgKi8sCisJCQkJMEY2NjZF
QzMxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5oICovLAorCQkJCTBGNzE0Q0Ex
MTZFQTkyRUQwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCAqLywK
KwkJCQkwRjcxNENBMjE2RUE5MkVEMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25Q
aGFzZS5oICovLAorCQkJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2Nr
LmNwcCAqLywKKwkJCQkwRjYyMDE3MDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQmFzaWNCbG9jay5o
ICovLAorCQkJCTBGRDU2NTIyMTZBQjc4MEEwMDE5NzY1MyAvKiBERkdCYXNpY0Jsb2NrSW5saW5l
cy5oICovLAorCQkJCUE3MEIwODMwMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2gu
Y3BwICovLAorCQkJCUE3MEIwODMxMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2gu
aCAqLywKKwkJCQlBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25T
ZXQuY3BwICovLAorCQkJCUE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2Vy
dGlvblNldC5oICovLAorCQkJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hE
aXJlY3Rpb24uaCAqLywKKwkJCQk4NkVDOURCNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwICovLAorCQkJCTg2RUM5REI1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRl
Q29kZVBhcnNlci5oICovLAorCQkJCTBGMjU2QzM0MTYyN0IwQUEwMDdGMjc4MyAvKiBERkdDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oICovLAorCQkJCTBGRDgyRTFFMTQxNzJD
MkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwICovLAorCQkJCTBGRDgyRTFGMTQxNzJD
MkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLywKKwkJCQkwRkZGQzk0QjE0RUY5MDk1
MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovLAorCQkJCTBGRkZDOTRDMTRFRjkwOTUwMEM3
MjUzMiAvKiBERkdDRkFQaGFzZS5oICovLAorCQkJCTBGM0IzQTI0MTU0NEM5OTEwMDNFRDBGRiAv
KiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCAqLywKKwkJCQkwRjNCM0EyNTE1NDRDOTkx
MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oICovLAorCQkJCUE3N0E0MjM4
MTdBMEJCRkQwMEE4REI4MSAvKiBERkdDbG9iYmVyaXplLmNwcCAqLywKKwkJCQlBNzdBNDIzOTE3
QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlcml6ZS5oICovLAorCQkJCUE3N0E0MjNBMTdBMEJC
RkQwMEE4REI4MSAvKiBERkdDbG9iYmVyU2V0LmNwcCAqLywKKwkJCQlBNzdBNDIzQjE3QTBCQkZE
MDBBOERCODEgLyogREZHQ2xvYmJlclNldC5oICovLAorCQkJCTBGQjRCNTFBMTZCNjI3NzIwMDNG
Njk2QiAvKiBERkdDb21tb24uY3BwICovLAorCQkJCTBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAv
KiBERkdDb21tb24uaCAqLywKKwkJCQkwRkVBMEEyRDE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29t
bW9uRGF0YS5jcHAgKi8sCisJCQkJMEZFQTBBMkUxNzBENDBCRjAwQkI3MjJDIC8qIERGR0NvbW1v
bkRhdGEuaCAqLywKKwkJCQkwRjM4QjAxMzE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRp
b25LZXkuY3BwICovLAorCQkJCTBGMzhCMDE0MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxh
dGlvbktleS5oICovLAorCQkJCTBGMzhCMDE1MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxh
dGlvbk1vZGUuY3BwICovLAorCQkJCTBGMzhCMDE2MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21w
aWxhdGlvbk1vZGUuaCAqLywKKwkJCQkwRjNCM0ExNzE1M0U2OEVGMDAzRUQwRkYgLyogREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwICovLAorCQkJCTBGM0IzQTE4MTUzRTY4RUYwMDNFRDBGRiAv
KiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oICovLAorCQkJCTBGQkUwRjZCMTZDMURCMDEwMDgy
QzVFOCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcCAqLywKKwkJCQkwRkJFMEY2QzE2QzFE
QjAxMDA4MkM1RTggLyogREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oICovLAorCQkJCUE3RDg5Q0U2
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcCAqLywK
KwkJCQlBN0Q4OUNFNzE3QTBCOENDMDA3NzNBRDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQ
aGFzZS5oICovLAorCQkJCTBGRkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5j
cHAgKi8sCisJCQkJMEZGRkM5NEUxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggKi8s
CisJCQkJMEYyRkM3NzAxNkUxMkY2RjAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmNwcCAqLywKKwkJ
CQkwRjJGQzc3MTE2RTEyRjZGMDAzOEQ5NzYgLyogREZHRENFUGhhc2UuaCAqLywKKwkJCQkwRjhG
MkI5NzE3MkYwNEZEMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCAqLywKKwkJ
CQkwRjhGMkI5ODE3MkYwNEZEMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmggKi8s
CisJCQkJQTczRTEzMkMxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFp
bnMuY3BwICovLAorCQkJCUE3M0UxMzJEMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3Ry
dWN0dXJlQ2hhaW5zLmggKi8sCisJCQkJQzJDMEY3Q0IxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rl
c2lyZWRUcmFuc2l0aW9ucy5jcHAgKi8sCisJCQkJQzJDMEY3Q0MxN0JCRkM1QjAwNDY0RkU0IC8q
IERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5oICovLAorCQkJCTBGRTg1MzQ5MTcyM0NEQTUwMEI2MThG
NSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwICovLAorCQkJCTBGRTg1MzRBMTcyM0NEQTUw
MEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCAqLywKKwkJCQlDMjk4MUZENjE3QkFF
RTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCAqLywKKwkJCQlDMjk4
MUZENzE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggKi8sCisJ
CQkJQzI5ODFGREExN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNw
cCAqLywKKwkJCQlDMjk4MUZEQjE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFy
cmllcnMuaCAqLywKKwkJCQkwRkY0Mjc2MTE1OTFBMUM5MDA0Q0I5RkYgLyogREZHRGlzYXNzZW1i
bGVyLmNwcCAqLywKKwkJCQkwRkY0Mjc2MjE1OTFBMUM5MDA0Q0I5RkYgLyogREZHRGlzYXNzZW1i
bGVyLmggKi8sCisJCQkJMEZEODFBQ0YxNTRGQjRFQjAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMu
Y3BwICovLAorCQkJCTBGRDgxQUQwMTU0RkI0RUIwMDk4M0U3MiAvKiBERkdEb21pbmF0b3JzLmgg
Ki8sCisJCQkJMEYxRTNBNDQxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRl
LmggKi8sCisJCQkJMEZEM0M4MjAxNDExNUNGODAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgKi8s
CisJCQkJMEZEM0M4MjIxNDExNUQwRTAwRkQ4MUNCIC8qIERGR0RyaXZlci5oICovLAorCQkJCTBG
QjRCNTFCMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdFZGdlLmNwcCAqLywKKwkJCQkwRjY2RTE2OTE0
REYzRjEzMDBCN0IyRTQgLyogREZHRWRnZS5oICovLAorCQkJCUE3RDlBMjkxMTdBMEJDNzQwMEVF
MjYxOCAvKiBERkdFZGdlRG9taW5hdGVzLmggKi8sCisJCQkJQTc5ODZENTYxN0EwQkIxRTAwQTk1
REQwIC8qIERGR0VkZ2VVc2VzU3RydWN0dXJlLmggKi8sCisJCQkJQTc4QTk3NkMxNzk3MzhCODAw
OURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgKi8sCisJCQkJQTc4QTk3NkQxNzk3MzhC
ODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5oICovLAorCQkJCUE3QkZGM0JGMTc5ODY4
OTQwMDAyRjQ2MiAvKiBERkdGaWx0cmF0aW9uUmVzdWx0LmggKi8sCisJCQkJQTc4QTk3NkUxNzk3
MzhCODAwOURGNzQ0IC8qIERGR0ZpbmFsaXplci5jcHAgKi8sCisJCQkJQTc4QTk3NkYxNzk3MzhC
ODAwOURGNzQ0IC8qIERGR0ZpbmFsaXplci5oICovLAorCQkJCTBGMkJEQzEyMTUxQzVENEEwMENE
ODkxMCAvKiBERkdGaXh1cFBoYXNlLmNwcCAqLywKKwkJCQkwRjJCREMxMzE1MUM1RDRBMDBDRDg5
MTAgLyogREZHRml4dXBQaGFzZS5oICovLAorCQkJCTBGOUQzMzk0MTdGRkM0RTYwMDczQzJCQyAv
KiBERkdGbHVzaGVkQXQuY3BwICovLAorCQkJCTBGOUQzMzk1MTdGRkM0RTYwMDczQzJCQyAvKiBE
RkdGbHVzaGVkQXQuaCAqLywKKwkJCQlBN0Q4OUNFODE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1
c2hGb3JtYXQuY3BwICovLAorCQkJCUE3RDg5Q0U5MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVz
aEZvcm1hdC5oICovLAorCQkJCTg2RUM5REI2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0
aW9uSW5mby5oICovLAorCQkJCTg2RUM5REI3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5j
cHAgKi8sCisJCQkJODZFQzlEQjgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggKi8sCisJ
CQkJMEYyRkNDRjIxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR0dyYXBoU2FmZXBvaW50LmNwcCAqLywK
KwkJCQkwRjJGQ0NGMzE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCAqLywK
KwkJCQkwRkIxNEUyMDE4MTI1NzBCMDA5QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmgg
Ki8sCisJCQkJMEZCMTRFMjIxODEzMDk1NTAwOUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBl
cklubGluZXMuaCAqLywKKwkJCQlBNzA0RDkwMDE3QTBCQUE4MDA2QkE1NTQgLyogREZHSW5QbGFj
ZUFic3RyYWN0U3RhdGUuY3BwICovLAorCQkJCUE3MDREOTAxMTdBMEJBQTgwMDZCQTU1NCAvKiBE
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oICovLAorCQkJCTBGMkJEQzFGMTUxRTgwMzgwMENEODkx
MCAvKiBERkdJbnNlcnRpb25TZXQuaCAqLywKKwkJCQkwRjMwMEI3OTE4QUIxQjE0MDBBNkQ3MkUg
LyogREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwICovLAorCQkJCTBGMzAwQjdBMThB
QjFCMTQwMEE2RDcyRSAvKiBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5oICovLAorCQkJ
CTBGQzk3RjM3MTgyMDIxMTkwMDJDOUIyNiAvKiBERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlv
blBoYXNlLmNwcCAqLywKKwkJCQkwRkM5N0YzODE4MjAyMTE5MDAyQzlCMjYgLyogREZHSW52YWxp
ZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5oICovLAorCQkJCTBGRUEwQTJGMTcwRDQwQkYwMEJC
NzIyQyAvKiBERkdKSVRDb2RlLmNwcCAqLywKKwkJCQkwRkVBMEEzMDE3MEQ0MEJGMDBCQjcyMkMg
LyogREZHSklUQ29kZS5oICovLAorCQkJCTg2RUM5REJCMTMyOERGODIwMDJCMkFENyAvKiBERkdK
SVRDb21waWxlci5jcHAgKi8sCisJCQkJODZFQzlEQkMxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJ
VENvbXBpbGVyLmggKi8sCisJCQkJQTc4QTk3NzAxNzk3MzhCODAwOURGNzQ0IC8qIERGR0pJVEZp
bmFsaXplci5jcHAgKi8sCisJCQkJQTc4QTk3NzExNzk3MzhCODAwOURGNzQ0IC8qIERGR0pJVEZp
bmFsaXplci5oICovLAorCQkJCTBGQzk3RjM5MTgyMDIxMTkwMDJDOUIyNiAvKiBERkdKdW1wUmVw
bGFjZW1lbnQuY3BwICovLAorCQkJCTBGQzk3RjNBMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdKdW1w
UmVwbGFjZW1lbnQuaCAqLywKKwkJCQlBNzNBNTM1ODE3OTlDRDVEMDAxNzBDMTkgLyogREZHTGF6
eUpTVmFsdWUuY3BwICovLAorCQkJCUE3M0E1MzU5MTc5OUNENUQwMDE3MEMxOSAvKiBERkdMYXp5
SlNWYWx1ZS5oICovLAorCQkJCUE3RDlBMjkyMTdBMEJDNzQwMEVFMjYxOCAvKiBERkdMSUNNUGhh
c2UuY3BwICovLAorCQkJCUE3RDlBMjkzMTdBMEJDNzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2Uu
aCAqLywKKwkJCQlBN0Q4OUNFQzE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNp
c1BoYXNlLmNwcCAqLywKKwkJCQlBN0Q4OUNFRDE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5l
c3NBbmFseXNpc1BoYXNlLmggKi8sCisJCQkJMEZCNEI1MUMxNkI2Mjc3MjAwM0Y2OTZCIC8qIERG
R0xvbmdMaXZlZFN0YXRlLmNwcCAqLywKKwkJCQkwRkI0QjUxRDE2QjYyNzcyMDAzRjY5NkIgLyog
REZHTG9uZ0xpdmVkU3RhdGUuaCAqLywKKwkJCQlBNzY3QjVCMzE3QTBCOTY1MDA2M0Q5NDAgLyog
REZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwICovLAorCQkJCUE3NjdCNUI0MTdBMEI5
NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oICovLAorCQkJCUE3
MDREOTAyMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdNZXJnZU1vZGUuaCAqLywKKwkJCQkwRjJCREMz
RDE1MjI4MDE3MDBDRDg5MTAgLyogREZHTWluaWZpZWRHcmFwaC5oICovLAorCQkJCTBGQjRCNTEw
MTZCM0E5NjQwMDNGNjk2QiAvKiBERkdNaW5pZmllZElELmggKi8sCisJCQkJMEYyQkRDNEMxNTIy
ODE4MzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgKi8sCisJCQkJMEYyQkRDM0UxNTIy
ODAxNzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5oICovLAorCQkJCUE3Mzc4MTBBMTc5OUVB
MkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuY3BwICovLAorCQkJCUE3Mzc4MTBCMTc5OUVB
MkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuaCAqLywKKwkJCQkwRkI0QjUxRTE2QjYyNzcy
MDAzRjY5NkIgLyogREZHTm9kZS5jcHAgKi8sCisJCQkJODZFQ0EzRTkxMzJERUYxQzAwMkIyQUQ3
IC8qIERGR05vZGUuaCAqLywKKwkJCQkwRkI0QjUxRjE2QjYyNzcyMDAzRjY5NkIgLyogREZHTm9k
ZUFsbG9jYXRvci5oICovLAorCQkJCTBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2Rl
RmxhZ3MuY3BwICovLAorCQkJCTBGQTU4MUI4MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxh
Z3MuaCAqLywKKwkJCQkwRjMwMEI3NzE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5o
ICovLAorCQkJCTBGQTU4MUI5MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovLAor
CQkJCTg2RUM5REJGMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmNwcCAqLywKKwkJ
CQk4NkVDOURDMDEzMjhERjgyMDAyQjJBRDcgLyogREZHT3BlcmF0aW9ucy5oICovLAorCQkJCUE3
RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNl
LmNwcCAqLywKKwkJCQlBN0Q4OUNFRjE3QTBCOENDMDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmls
aXR5QW5hbHlzaXNQaGFzZS5oICovLAorCQkJCTBGRDgyRTUyMTQxREFFREUwMDE3OUM5NCAvKiBE
RkdPU1JFbnRyeS5jcHAgKi8sCisJCQkJMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09T
UkVudHJ5LmggKi8sCisJCQkJMEZEOEEzMUQxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5
cG9pbnRDcmVhdGlvblBoYXNlLmNwcCAqLywKKwkJCQkwRkQ4QTMxRTE3RDUxRjU3MDBDQTJDNDAg
LyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCAqLywKKwkJCQkwRkMwOTc4RTE0NkE2
RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdC5jcHAgKi8sCisJCQkJMEZDMDk3NjgxNDY4QTZFRjAw
Q0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLywKKwkJCQkwRjIzNUJFNzE3MTc4RTczMDA2OTBDN0Yg
LyogREZHT1NSRXhpdEJhc2UuY3BwICovLAorCQkJCTBGMjM1QkU4MTcxNzhFNzMwMDY5MEM3RiAv
KiBERkdPU1JFeGl0QmFzZS5oICovLAorCQkJCTY1OTg3RjJDMTY3RkU4NEIwMDNDMkY4RCAvKiBE
RkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggKi8sCisJCQkJMEZDMDk3OEYxNDZBNkY2MzAwQ0Yy
NDQyIC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgKi8sCisJCQkJMEZDMDk3NkYxNDY5M0FFRjAw
Q0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oICovLAorCQkJCTBGQzA5Nzc1MTQ2OTQzQUQw
MENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgKi8sCisJCQkJMEZDMDk3NzAx
NDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCAqLywKKwkJCQkwRjcw
MjVBNzE3MTRCMEY4MDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCAqLywK
KwkJCQkwRjcwMjVBODE3MTRCMEY4MDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmggKi8sCisJCQkJMEZFRkM5QTcxNjgxQTNCMDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxh
Y2Vob2xkZXIuY3BwICovLAorCQkJCTBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmggKi8sCisJCQkJMEYyMzVCRTkxNzE3OEU3MzAwNjkwQzdGIC8q
IERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgKi8sCisJCQkJMEYyMzVCRUExNzE3OEU3MzAwNjkw
QzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oICovLAorCQkJCTBGRkZDOTRGMTRFRjkwOTUw
MEM3MjUzMiAvKiBERkdQaGFzZS5jcHAgKi8sCisJCQkJMEZGRkM5NTAxNEVGOTA5NTAwQzcyNTMy
IC8qIERGR1BoYXNlLmggKi8sCisJCQkJQTc4QTk3NzIxNzk3MzhCODAwOURGNzQ0IC8qIERGR1Bs
YW4uY3BwICovLAorCQkJCUE3OEE5NzczMTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmggKi8s
CisJCQkJMEZCRTBGNkQxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25Q
aGFzZS5jcHAgKi8sCisJCQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rp
b25JbmplY3Rpb25QaGFzZS5oICovLAorCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBE
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgKi8sCisJCQkJMEZGRkM5NTIxNEVGOTA5
NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCisJCQkJODZF
QzlEQzExMzI4REY4MjAwMkIyQUQ3IC8qIERGR1JlZ2lzdGVyQmFuay5oICovLAorCQkJCTBGNjY2
RUNBMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2Uu
Y3BwICovLAorCQkJCTBGNjY2RUNCMTgzNkIzN0UwMEQwMTdGMSAvKiBERkdSZXN1cnJlY3Rpb25G
b3JWYWxpZGF0aW9uUGhhc2UuaCAqLywKKwkJCQkwRjJGQ0NGNDE4QTYwMDcwMDAxQTI3RjggLyog
REZHU2FmZXBvaW50LmNwcCAqLywKKwkJCQkwRjJGQ0NGNTE4QTYwMDcwMDAxQTI3RjggLyogREZH
U2FmZXBvaW50LmggKi8sCisJCQkJQTc3QTQyM0MxN0EwQkJGRDAwQThEQjgxIC8qIERGR1NhZmVU
b0V4ZWN1dGUuaCAqLywKKwkJCQlBNzQxMDE3RTE3OURBRjgwMDAyRUI4QkEgLyogREZHU2FuZVN0
cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCAqLywKKwkJCQkwRjJGQ0NGNjE4QTYwMDcw
MDAxQTI3RjggLyogREZHU2Nhbm5hYmxlLmggKi8sCisJCQkJODZFQ0EzRjkxMzJERjI1QTAwMkIy
QUQ3IC8qIERGR1Njb3JlQm9hcmQuaCAqLywKKwkJCQkwRjFFM0E2NTE1M0EyMURGMDAwRjk0NTYg
LyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oICovLAorCQkJCTBGMUUzQTUwMTUzN0MyQ0Iw
MDBGOTQ1NiAvKiBERkdTbG93UGF0aEdlbmVyYXRvci5oICovLAorCQkJCTg2RUM5REMyMTMyOERG
ODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgKi8sCisJCQkJODZFQzlEQzMxMzI4
REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmggKi8sCisJCQkJODY4ODBGMUIxNDMy
OEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovLAorCQkJCTg2ODgw
RjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLywKKwkJCQlB
N0Q4OUNGMDE3QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcCAqLywK
KwkJCQlBN0Q4OUNGMTE3QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29udmVyc2lvblBoYXNlLmgg
Ki8sCisJCQkJMEZDMjBDQjcxODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxvd2VyaW5nUGhhc2Uu
Y3BwICovLAorCQkJCTBGQzIwQ0I4MTg1NTZBMzUwMEM5RTk1NCAvKiBERkdTU0FMb3dlcmluZ1Bo
YXNlLmggKi8sCisJCQkJMEY5RkI0RjIxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0
UGhhc2UuY3BwICovLAorCQkJCTBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xh
eW91dFBoYXNlLmggKi8sCisJCQkJMEY0RjI5REQxOEI2QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRp
Y0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcCAqLywKKwkJCQkwRjRGMjlERTE4QjZB
RDFDMDA1N0JDMTUgLyogREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuaCAq
LywKKwkJCQkyQUNDRjNEQzE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lv
blBoYXNlLmNwcCAqLywKKwkJCQkyQUNDRjNERDE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVC
YXJyaWVyRWxpc2lvblBoYXNlLmggKi8sCisJCQkJMEZDMjBDQjMxODUyRTJDNjAwQzlFOTU0IC8q
IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwICovLAorCQkJCTBGQzIwQ0I0MTg1MkUyQzYw
MEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmggKi8sCisJCQkJMEY2Mzk0NzYx
NURDRTM0NzAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLywKKwkJCQkw
RjJGQ0NGNzE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFkRGF0YS5jcHAgKi8sCisJCQkJMEYy
RkNDRjgxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEuaCAqLywKKwkJCQkwRkMwOTc5
RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAqLywKKwkJCQkwRkMwOTdBMDE0NkIy
OEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi8sCisJCQkJMEZEOEEzMUYxN0Q1MUY1NzAwQ0Ey
QzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwICovLAorCQkJCTBGRDhBMzIw
MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggKi8sCisJ
CQkJMEZEOEEzMjExN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcCAqLywKKwkJCQkwRkQ4QTMyMjE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9G
VExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQkwRkQ4QTMyMzE3RDUxRjU3
MDBDQTJDNDAgLyogREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5jcHAgKi8sCisJCQkJMEZEOEEzMjQxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NS
RW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQkwRjYzOTQzQzE1Qzc1
RjE0MDA2QTU5N0MgLyogREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgKi8sCisJCQkJMEY2
Mzk0M0QxNUM3NUYxNDAwNkE1OTdDIC8qIERGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaCAqLywK
KwkJCQkwRkJFMEY2RjE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5jcHAg
Ki8sCisJCQkJMEZCRTBGNzAxNkMxREIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2Uu
aCAqLywKKwkJCQkwRjM0QjE0NzE2RDQyMDBFMDAxQ0RBNUEgLyogREZHVXNlS2luZC5jcHAgKi8s
CisJCQkJMEYzNEIxNDgxNkQ0MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQuaCAqLywKKwkJCQkw
RjNCM0EyOTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovLAorCQkJCTBGM0Iz
QTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5oICovLAorCQkJCTBGMkJEQzNGMTUy
MjgwMTcwMENEODkxMCAvKiBERkdWYWx1ZVJlY292ZXJ5T3ZlcnJpZGUuaCAqLywKKwkJCQkwRjJC
REM0RTE1MjI4QkU3MDBDRDg5MTAgLyogREZHVmFsdWVTb3VyY2UuY3BwICovLAorCQkJCTBGMkJE
QzQwMTUyMjgwMTcwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5oICovLAorCQkJCTBGNkU4NDU5
MTkwMzBCRUYwMDU2Mjc0MSAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwICovLAorCQkJCTBG
NjIwMTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAqLywKKwkJ
CQkwRkREQkZCMjE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5j
cHAgKi8sCisJCQkJMEZEREJGQjMxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNz
RGF0YUR1bXAuaCAqLywKKwkJCQkwRjJCREM1MDE1MjI4RkZBMDBDRDg5MTAgLyogREZHVmFyaWFi
bGVFdmVudC5jcHAgKi8sCisJCQkJMEYyQkRDNDExNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1Zhcmlh
YmxlRXZlbnQuaCAqLywKKwkJCQkwRjJCREM0MjE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFyaWFi
bGVFdmVudFN0cmVhbS5jcHAgKi8sCisJCQkJMEYyQkRDNDMxNTIyODAxNzAwQ0Q4OTEwIC8qIERG
R1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCAqLywKKwkJCQkwRkZGQzk1MzE0RUY5MDk1MDBDNzI1MzIg
LyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcCAqLywKKwkJCQkwRkZGQzk1
NDE0RUY5MDk1MDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmgg
Ki8sCisJCQkJMEZDOTdGM0IxODIwMjExOTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0
aW9uUGhhc2UuY3BwICovLAorCQkJCTBGQzk3RjNDMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdXYXRj
aHBvaW50Q29sbGVjdGlvblBoYXNlLmggKi8sCisJCQkJMEZEQjJDRTUxNzQ4MzBBMjAwN0IzQzFC
IC8qIERGR1dvcmtsaXN0LmNwcCAqLywKKwkJCQkwRkRCMkNFNjE3NDgzMEEyMDA3QjNDMUIgLyog
REZHV29ya2xpc3QuaCAqLywKKwkJCQkyQTg4MDY3NjE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVu
Y3Rpb25XaGl0ZWxpc3QuY3BwICovLAorCQkJCTJBODgwNjc3MTkxMDdENTUwMENCMEJCQiAvKiBE
RkdGdW5jdGlvbldoaXRlbGlzdC5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBkZmc7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk5MzJGQzNDMjA4MjRCQjcwMDA1QjNDNzUgLyog
UmVzb3VyY2VzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlBNTNGMUFCRTE4QzkwRUM3MDA3MkVCNkQgLyogZnJhbWV3b3JrLnNiICovLAorCQkJCTkzMkY1
QkQ4MDgyMkExQzcwMDczNjk3NSAvKiBJbmZvLnBsaXN0ICovLAorCQkJKTsKKwkJCW5hbWUgPSBS
ZXNvdXJjZXM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQkJdGFiV2lkdGggPSA0Owor
CQkJdXNlc1RhYnMgPSAwOworCQl9OworCQk5NUFCODMxQTBEQTQyQzY5MDBCQzgzRjMgLyogcHJv
ZmlsZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUy
QUZGNDQ4MTkzRkQzNTkwMDFEQUFENCAvKiBUeXBlU2V0LmggKi8sCisJCQkJOTVFM0JDMDQwRTFB
RTY4MjAwQjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggKi8sCisJCQkJOTVBQjgzMkUwREE0MkNB
RDAwQkM4M0YzIC8qIExlZ2FjeVByb2ZpbGVyLmNwcCAqLywKKwkJCQk5NUFCODMyRjBEQTQyQ0FE
MDBCQzgzRjMgLyogTGVnYWN5UHJvZmlsZXIuaCAqLywKKwkJCQk5NTc0MkY2MzBERDExRjVBMDAw
OTE3RkIgLyogUHJvZmlsZS5jcHAgKi8sCisJCQkJOTU3NDJGNjQwREQxMUY1QTAwMDkxN0ZCIC8q
IFByb2ZpbGUuaCAqLywKKwkJCQk5NUNENDU3NDBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdl
bmVyYXRvci5jcHAgKi8sCisJCQkJOTVDRDQ1NzUwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVH
ZW5lcmF0b3IuaCAqLywKKwkJCQk5NUFCODM1NDBEQTQzQjQ0MDBCQzgzRjMgLyogUHJvZmlsZU5v
ZGUuY3BwICovLAorCQkJCTk1QUI4MzU1MERBNDNCNDQwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5o
ICovLAorCQkJCTBGRjcyOTkyMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2RlLmNw
cCAqLywKKwkJCQkwRkY3Mjk5MzE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZS5o
ICovLAorCQkJCTBGRjcyOTk0MTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2Rlcy5j
cHAgKi8sCisJCQkJMEZGNzI5OTUxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGVz
LmggKi8sCisJCQkJMEYxMzkxMjQxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyQnl0ZWNvZGVT
ZXF1ZW5jZS5jcHAgKi8sCisJCQkJMEYxMzkxMjUxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVy
Qnl0ZWNvZGVTZXF1ZW5jZS5oICovLAorCQkJCTBGRjcyOTk2MTY2QUQzNDcwMDBGNUJBMyAvKiBQ
cm9maWxlckNvbXBpbGF0aW9uLmNwcCAqLywKKwkJCQkwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMg
LyogUHJvZmlsZXJDb21waWxhdGlvbi5oICovLAorCQkJCTBGRjcyOTk4MTY2QUQzNDcwMDBGNUJB
MyAvKiBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHAgKi8sCisJCQkJMEZGNzI5OTkxNjZBRDM0
NzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmggKi8sCisJCQkJMEZGNzI5OUEx
NjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5jcHAgKi8sCisJCQkJ
MEZGNzI5OUIxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5oICov
LAorCQkJCTBGRjcyOTlDMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckRhdGFiYXNlLmNwcCAq
LywKKwkJCQkwRkY3Mjk5RDE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJEYXRhYmFzZS5oICov
LAorCQkJCTBGRjcyOTlFMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckV4ZWN1dGlvbkNvdW50
ZXIuaCAqLywKKwkJCQkwRjE5MENBQTE4OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNv
blJlYXNvbi5jcHAgKi8sCisJCQkJMEYxOTBDQUIxODlEODJGNjAwMEFFNUYwIC8qIFByb2ZpbGVy
SmV0dGlzb25SZWFzb24uaCAqLywKKwkJCQkwRkY3Mjk5RjE2NkFEMzQ3MDAwRjVCQTMgLyogUHJv
ZmlsZXJPcmlnaW4uY3BwICovLAorCQkJCTBGRjcyOUEwMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9m
aWxlck9yaWdpbi5oICovLAorCQkJCTBGRjcyOUExMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxl
ck9yaWdpblN0YWNrLmNwcCAqLywKKwkJCQkwRkY3MjlBMjE2NkFEMzQ3MDAwRjVCQTMgLyogUHJv
ZmlsZXJPcmlnaW5TdGFjay5oICovLAorCQkJCTBGQjEwNTg3MTY3NTQ4MkUwMEY4QUI2RSAvKiBQ
cm9maWxlck9TUkV4aXQuY3BwICovLAorCQkJCTBGQjEwNTg4MTY3NTQ4MkUwMEY4QUI2RSAvKiBQ
cm9maWxlck9TUkV4aXQuaCAqLywKKwkJCQkwRkIxMDU4OTE2NzU0ODJFMDBGOEFCNkUgLyogUHJv
ZmlsZXJPU1JFeGl0U2l0ZS5jcHAgKi8sCisJCQkJMEZCMTA1OEExNjc1NDgyRTAwRjhBQjZFIC8q
IFByb2ZpbGVyT1NSRXhpdFNpdGUuaCAqLywKKwkJCQkwRjEzOTEyNjE2NzcxQzMwMDA5Q0NCMDcg
LyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAgKi8sCisJCQkJMEYxMzkxMjcxNjc3MUMz
MDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCAqLywKKwkJCQk1MkRDOUMx
MTE5MzkzMEIxMDBGQTc0NjMgLyogVHlwZVNldC5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IHBy
b2ZpbGVyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJCXVzZXNUYWJzID0gMDsKKwkJ
fTsKKwkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYxRkU1MUIxOTIyQTNCQzAwNjk4
N0M1IC8qIEFib3J0UmVhc29uLmggKi8sCisJCQkJODYwMTYxREYwRjNBODNDMTAwRjg0NzEwIC8q
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKKwkJCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZD
QjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLywKKwkJCQk4NkQzQjJCRjEwMTU2QkRFMDAyODY1RTcg
LyogQVJNQXNzZW1ibGVyLmNwcCAqLywKKwkJCQk4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyog
QVJNQXNzZW1ibGVyLmggKi8sCisJCQkJQTc0REUxQ0IxMjBCODZENjAwRDQwRDVCIC8qIEFSTXY3
QXNzZW1ibGVyLmNwcCAqLywKKwkJCQk4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdB
c3NlbWJsZXIuaCAqLywKKwkJCQk5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVy
QnVmZmVyLmggKi8sCisJCQkJODZEM0IyQzExMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1
ZmZlcldpdGhDb25zdGFudFBvb2wuaCAqLywKKwkJCQk4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMg
LyogQ29kZUxvY2F0aW9uLmggKi8sCisJCQkJMEZGNDI3NTYxNTkxNEEyMDAwNENCOUZGIC8qIExp
bmtCdWZmZXIuY3BwICovLAorCQkJCTg2RDNCM0MxMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVm
ZmVyLmggKi8sCisJCQkJMEZFQjNFQ0UxNjIzN0Y2NzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVy
LmNwcCAqLywKKwkJCQk4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIu
aCAqLywKKwkJCQk4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0u
Y3BwICovLAorCQkJCTg2RDNCMkMyMTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFS
TS5oICovLAorCQkJCTg2NDA5MjNDMTU2RUVEM0IwMDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFS
TTY0LmggKi8sCisJCQkJQTcyOTAwOUIxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVy
QVJNdjcuY3BwICovLAorCQkJCTg2QUREMTQ0MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2Vt
YmxlckFSTXY3LmggKi8sCisJCQkJODYzQjIzREYwRkM2MEU2MjAwNzAzQUE0IC8qIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oICovLAorCQkJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlck1JUFMuaCAqLywKKwkJCQk4NkFFNjRBNjEzNUU1RTFDMDA5NjMwMTIgLyogTWFj
cm9Bc3NlbWJsZXJTSDQuaCAqLywKKwkJCQk4NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFj
cm9Bc3NlbWJsZXJYODYuaCAqLywKKwkJCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaCAqLywKKwkJCQlBN0E0QUUwNzE3OTczQjI2MDA1NjEyQjEgLyog
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwICovLAorCQkJCTg2MDE2MUUyMEYzQTgzQzEwMEY4
NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovLAorCQkJCTY1ODYwMTc3MTg1QThG
NUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oICovLAorCQkJCTg2
QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi8sCisJCQkJODZEM0Iz
QzIxMDE1OUQ3RjAwMjg2NUU3IC8qIFJlcGF0Y2hCdWZmZXIuaCAqLywKKwkJCQk4NkFFNjRBNzEz
NUU1RTFDMDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggKi8sCisJCQkJOTY4OENCMTQwRUQxMkI0
RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBhc3NlbWJs
ZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk5NjlBMDc4RjBFRDFEM0FF
MDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcCAqLywKKwkJCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5oICovLAorCQkJCTBGNjM5NDUxMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJh
eVByb2ZpbGUuY3BwICovLAorCQkJCTBGNjM5NDUyMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVBy
b2ZpbGUuaCAqLywKKwkJCQlDMkZDQUUwQzE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcCAqLywKKwkJCQlDMkZDQUUwRDE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVC
YXNpY0Jsb2NrLmggKi8sCisJCQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2Rl
Q29udmVudGlvbnMuaCAqLywKKwkJCQk2NTI5RkIzMTE4QjJEOTk5MDBDNjExMDIgLyogQnl0ZWNv
ZGVMaXN0Lmpzb24gKi8sCisJCQkJQzJGQ0FFMEUxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5jcHAgKi8sCisJCQkJQzJGQ0FFMEYxN0E5QzI0RTAwMzRDNzM1IC8q
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oICovLAorCQkJCTBGNjY2RUJFMTgzNTY2RjkwMEQw
MTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8sCisJCQkJMEY4ODVF
MTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8sCisJCQkJMEY4MDIzRTkx
NjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovLAorCQkJCTBGMEI4M0FFMTRCQ0Y3MTQw
MDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwICovLAorCQkJCTBGMEI4M0FGMTRCQ0Y3MTQwMDg4
NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKKwkJCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYg
LyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAorCQkJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAv
KiBDYWxsTGlua1N0YXR1cy5oICovLAorCQkJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovLAorCQkJCTk2OUEwNzkwMEVEMUQz
QUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAorCQkJCTk2OUEwNzkxMEVEMUQzQUUwMEYx
RjY4MSAvKiBDb2RlQmxvY2suaCAqLywKKwkJCQkwRjhGOTQzRDE2Njc2MzJEMDBENjE5NzEgLyog
Q29kZUJsb2NrSGFzaC5jcHAgKi8sCisJCQkJMEY4Rjk0M0UxNjY3NjMyRDAwRDYxOTcxIC8qIENv
ZGVCbG9ja0hhc2guaCAqLywKKwkJCQkwRkM5N0YyRjE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJs
b2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCAqLywKKwkJCQkwRkM5N0YzMDE4MjAyMEQ3MDAy
QzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggKi8sCisJCQkJMEY5NkVC
QjExNjY3NkVGNDAwOEJBREUzIC8qIENvZGVCbG9ja1dpdGhKSVRUeXBlLmggKi8sCisJCQkJMEY4
Rjk0NDUxNjY3NjRFRTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwICovLAorCQkJCTBGQkQ3RTY3
MTQ0Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi8sCisJCQkJMEY4Rjk0M0YxNjY3NjMy
RDAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLywKKwkJCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVC
NEYgLyogQ29kZVR5cGUuaCAqLywKKwkJCQkwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0
YUZvcm1hdC5oICovLAorCQkJCTBGQzcxMkRDMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suY3BwICovLAorCQkJCTBGQzcxMkREMTdDRDg3NzgwMDhDQzkzQyAv
KiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQkwRkJDMEFFNDE0OTZDN0Mx
MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwICovLAorCQkJCTBGQkMwQUU1MTQ5NkM3QzEw
MEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovLAorCQkJCTk2OUEwNzkyMEVEMUQzQUUwMEYx
RjY4MSAvKiBFdmFsQ29kZUNhY2hlLmggKi8sCisJCQkJMEY1NkExRDQxNTAwMUNGMjAwMjk5MkIx
IC8qIEV4ZWN1dGlvbkNvdW50ZXIuY3BwICovLAorCQkJCTBGNTZBMUQxMTUwMDBGMzEwMDI5OTJC
MSAvKiBFeGVjdXRpb25Db3VudGVyLmggKi8sCisJCQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5NzlB
IC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKKwkJCQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAyOUYg
LyogRXhpdGluZ0pJVFR5cGUuaCAqLywKKwkJCQkwRkIxMDU4MjE2NzU0ODBDMDBGOEFCNkUgLyog
RXhpdEtpbmQuY3BwICovLAorCQkJCTBGQjEwNTgzMTY3NTQ4MEMwMEY4QUI2RSAvKiBFeGl0S2lu
ZC5oICovLAorCQkJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJ
bmZvLmggKi8sCisJCQkJMEY2NjZFQkYxODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxp
dmVuZXNzLmggKi8sCisJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0
dXMuY3BwICovLAorCQkJCTBGOTMzMjk2MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVz
LmggKi8sCisJCQkJMEYwMzMyQzExOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5SWRWYXJpYW50LmNw
cCAqLywKKwkJCQkwRjAzMzJDMjE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAq
LywKKwkJCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLywKKwkJ
CQkwRjI0RTU1MzE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmNwcCAqLywK
KwkJCQkwRjI0RTU1NDE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmggKi8s
CisJCQkJOTY5QTA3OTMwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggKi8sCisJCQkJ
QkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi8sCisJCQkJQkNGRDhD
OTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICovLAorCQkJCTBGQjU0Njc4MTRGNUM0
NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8sCisJCQkJMEZCNTQ2
NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8sCisJCQkJ
MEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCisJCQkJ
MEZCNTQ2N0MxNEY1Q0ZEMzAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwICovLAorCQkJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLmggKi8sCisJCQkJMTRDQTk1OEMxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlLmggKi8sCisJCQkJOTY5QTA3OTQwRUQxRDNBRTAwRjFGNjgxIC8q
IE9wY29kZS5jcHAgKi8sCisJCQkJOTY5QTA3OTUwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5o
ICovLAorCQkJCTBGMkJEQzJCMTUxRkRFOEIwMENEODkxMCAvKiBPcGVyYW5kcy5oICovLAorCQkJ
CUE3MDQ0N0U5MTdBMEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLywKKwkJCQkw
RjM0QjE0QjE2RDQzRTBDMDAxQ0RBNUEgLyogUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0
LmggKi8sCisJCQkJMEY0Q0VENUMxOENFQTdBQjAwODAyRkUwIC8qIFBvbHltb3JwaGljR2V0QnlJ
ZExpc3QuY3BwICovLAorCQkJCTBGNENFRDVEMThDRUE3QUIwMDgwMkZFMCAvKiBQb2x5bW9ycGhp
Y0dldEJ5SWRMaXN0LmggKi8sCisJCQkJMEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHlt
b3JwaGljUHV0QnlJZExpc3QuY3BwICovLAorCQkJCTBGOUZDOEMwMTRFMUI1RkIwMEQ1MkFFMCAv
KiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmggKi8sCisJCQkJMEY5ODIwNUQxNkJGRTM3RjAwMjQw
RDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgKi8sCisJCQkJMEY5ODIwNUUxNkJGRTM3RjAw
MjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5oICovLAorCQkJCTBGQzk3RjMxMTgyMDIwRDcw
MDJDOUIyNiAvKiBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgKi8s
CisJCQkJMEZDOTdGMzIxODIwMjBENzAwMkM5QjI2IC8qIFByb2ZpbGVkQ29kZUJsb2NrSmV0dGlz
b25pbmdXYXRjaHBvaW50LmggKi8sCisJCQkJMEY5MzMyOTkxNENBN0RDMTAwODVGM0M2IC8qIFB1
dEJ5SWRTdGF0dXMuY3BwICovLAorCQkJCTBGOTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRC
eUlkU3RhdHVzLmggKi8sCisJCQkJMEY5M0I0QTcxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRW
YXJpYW50LmNwcCAqLywKKwkJCQkwRjkzQjRBODE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZh
cmlhbnQuaCAqLywKKwkJCQkwRjlGQzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICov
LAorCQkJCTBGRjYwQUJGMTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmNwcCAq
LywKKwkJCQkwRkY2MEFDMDE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5oICov
LAorCQkJCTE0MjlEODgzMEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuY3BwICovLAor
CQkJCTE0MjlEODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCAqLywKKwkJCQkw
RjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwICovLAorCQkJCTBG
NTU0MUIwMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oICovLAorCQkJCTBGRDgy
RTg0MTQxRjNGREEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgKi8sCisJCQkJMEZEODJF
NEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggKi8sCisJCQkJMEY5MzMyOUIx
NENBN0RDMTAwODVGM0M2IC8qIFN0cnVjdHVyZVNldC5oICovLAorCQkJCTBGNzY2RDM2MTVBRTRB
MUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCAqLywKKwkJ
CQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5oICovLAorCQkJCUJDQ0YwRDBCMEVGMEI4QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHVi
SW5mby5jcHAgKi8sCisJCQkJQkNDRjBEMDcwRUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0
dWJJbmZvLmggKi8sCisJCQkJQTc5RTc4MUUxNUVFQ0JBODAwNDdDODU1IC8qIFVubGlua2VkQ29k
ZUJsb2NrLmNwcCAqLywKKwkJCQlBNzlFNzgxRjE1RUVDQkE4MDA0N0M4NTUgLyogVW5saW5rZWRD
b2RlQmxvY2suaCAqLywKKwkJCQlCNTlGODkzODE4OTFBREI1MDBENUNDREMgLyogVW5saW5rZWRJ
bnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCisJCQkJQjU5Rjg5MzcxODkxQUQzMzAwRDVDQ0RDIC8q
IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaCAqLywKKwkJCQkwRjk2M0IzNjEzRkM2RkRFMDAw
MkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8sCisJCQkJMEYyNEU1NTcxN0Y3NEVEQjAwQUJCMjE3
IC8qIFZhbHVlUmVjb3ZlcnkuY3BwICovLAorCQkJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAv
KiBWYWx1ZVJlY292ZXJ5LmggKi8sCisJCQkJMEY5MTgxQzYxODQxNUNBNTAwNTdCNjY5IC8qIFZh
cmlhYmxlV2F0Y2hwb2ludFNldC5oICovLAorCQkJCUZFNTI0OEY4MTkxNDQyRDkwMEI3RkRFNCAv
KiBWYXJpYWJsZVdhdGNocG9pbnRTZXRJbmxpbmVzLmggKi8sCisJCQkJMEY0MjZBNDYxNDYwQ0JB
QjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovLAorCQkJCTBGOTE5RDIyMTU4NTNDREUw
MDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCAqLywKKwkJCQkwRjkxOUQyMzE1ODUzQ0RFMDA0QTRF
N0QgLyogV2F0Y2hwb2ludC5oICovLAorCQkJKTsKKwkJCXBhdGggPSBieXRlY29kZTsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTk5RTQ1QTBDMThBMDFFOTMwMDI2RDg4RiAv
KiByZXBsYXkgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTk5RTQ1QTFDMThBMUIxQjgwMDI2RDg4RiAvKiBzY3JpcHRzICovLAorCQkJCTk5RTQ1QTFGMThB
MUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggKi8sCisJCQkJOTlFNDVBMjAxOEEx
QjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5jcHAgKi8sCisJCQkJOTlFNDVBMjExOEExQjI1
OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oICovLAorCQkJCTk5RTQ1QTIyMThBMUIyNTkwMDI2
RDg4RiAvKiBJbnB1dEN1cnNvci5oICovLAorCQkJCTk5MjhGRjNEMThBQzRCMUMwMEI4Q0YxMiAv
KiBKU0lucHV0cy5qc29uICovLAorCQkJCTk5RTQ1QTIzMThBMUIyNTkwMDI2RDg4RiAvKiBOb25k
ZXRlcm1pbmlzdGljSW5wdXQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gcmVwbGF5OworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJOTlFNDVBMUMxOEExQjFCODAwMjZEODhGIC8q
IHNjcmlwdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTk5RTQ1QTFEMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5
ICovLAorCQkJCTk5RTQ1QTFFMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5
SW5wdXRzVGVtcGxhdGVzLnB5ICovLAorCQkJKTsKKwkJCXBhdGggPSBzY3JpcHRzOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQTUxM0U1Q0MxODVGQjk5MjAwN0U5NUFEIC8q
IGFnZW50cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QTVDRUVFMTIxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCAqLywKKwkJCQlB
NUNFRUUxMzE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCAqLywKKwkJCQlBNUZE
MDA3RjE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCAqLywKKwkJ
CQlBNUZEMDA4MDE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmggKi8s
CisJCQkJQTU3RDIzRTMxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwICovLAorCQkJCUE1N0QyM0U0MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmggKi8sCisJCQkJMUNBQTlBMUMxOEY0OTk3RjAwMEEzNjlEIC8qIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQuY3BwICovLAorCQkJCTFDQUE5QTFEMThGNDk5N0YwMDBBMzY5RCAvKiBJbnNw
ZWN0b3JQcm9maWxlckFnZW50LmggKi8sCisJCQkJQTUwRTRCNUQxODgwOURENTAwNjhBNDZEIC8q
IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgKi8sCisJCQkJQTUwRTRCNUUxODgwOURENTAwNjhB
NDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovLAorCQkJCUE1RkQwMDgzMTg5QjFCN0Uw
MDYzMzIzMSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5jcHAgKi8sCisJCQkJQTVGRDAw
ODQxODlCMUI3RTAwNjMzMjMxIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50LmggKi8sCisJ
CQkJQTU3RDIzRTcxODkxQjA3NzAwMzFDN0ZBIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2Vu
dC5jcHAgKi8sCisJCQkJQTU3RDIzRTgxODkxQjA3NzAwMzFDN0ZBIC8qIEpTR2xvYmFsT2JqZWN0
RGVidWdnZXJBZ2VudC5oICovLAorCQkJCTFDQUE5QTIwMThGNEEyMjAwMDBBMzY5RCAvKiBKU0ds
b2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuY3BwICovLAorCQkJCTFDQUE5QTIxMThGNEEyMjAwMDBB
MzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuaCAqLywKKwkJCQlBNTBFNEI1RjE4
ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwICovLAorCQkJ
CUE1MEU0QjYwMTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5o
ICovLAorCQkJKTsKKwkJCXBhdGggPSBhZ2VudHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OworCQlBNTMyNDM4RTE4NTY5NkNFMDAyRUQ2OTIgLyogc2NyaXB0cyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTUzMjQzOEYxODU2OTZFNjAw
MkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgKi8sCisJCQkJQTUzMjQzOTAxODU2
OTZFNjAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5ICovLAorCQkJ
CUE1ODQwRTI2MTg3Qzk4MDcwMDg0M0IxMCAvKiBjc3NtaW4ucHkgKi8sCisJCQkJQTUzMjQzOTEx
ODU2OTZFNjAwMkVENjkyIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5ICov
LAorCQkJCUE1ODQwRTI4MTg3Q0E1QjgwMDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHls
ZXNoZWV0cy1hbmQtc2NyaXB0cy5weSAqLywKKwkJCQlBNTEzRTVDNDE4NUY5MkRDMDA3RTk1QUQg
LyoganNtaW4ucHkgKi8sCisJCQkJQTUxM0U1QzUxODVGOTJGMDAwN0U5NUFEIC8qIHh4ZC5wbCAq
LywKKwkJCSk7CisJCQlwYXRoID0gc2NyaXB0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTU1RDkzQTMxODUwMTJBODAw
NDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8sCisJCQkJQTU1RDkzQTQxODUwMTJB
ODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovLAorCQkJCUE1NENGMkY3MTg0RUFF
REEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwICovLAorCQkJCUE1NENGMkY4MTg0RUFFREEw
MDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCAqLywKKwkJCQlBNTRDRjJGMjE4NEVBQjI0MDAyMzdG
MTkgLyogU2NyaXB0VmFsdWUuY3BwICovLAorCQkJCUE1NENGMkYzMTg0RUFCMjQwMDIzN0YxOSAv
KiBTY3JpcHRWYWx1ZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBiaW5kaW5nczsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUE1QkExNURGMTgyMzQwOTIwMEE4MkU2OSAvKiBp
bnNwZWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CUE1MTNFNUNDMTg1RkI5OTIwMDdFOTVBRCAvKiBhZ2VudHMgKi8sCisJCQkJQTUzMjQzOEQxODU2
OTZDQTAwMkVENjkyIC8qIHByb3RvY29sICovLAorCQkJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2
OSAvKiByZW1vdGUgKi8sCisJCQkJQTUzMjQzOEUxODU2OTZDRTAwMkVENjkyIC8qIHNjcmlwdHMg
Ki8sCisJCQkJQTVGRDAwNzcxODlCMDUxMDAwNjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAq
LywKKwkJCQlBNUZEMDA3ODE4OUIwNTEwMDA2MzMyMzEgLyogQ29uc29sZU1lc3NhZ2UuaCAqLywK
KwkJCQlBNTdEMjNFRjE4OTFCNUI0MDAzMUM3RkEgLyogQ29udGVudFNlYXJjaFV0aWxpdGllcy5j
cHAgKi8sCisJCQkJQTU3RDIzRjAxODkxQjVCNDAwMzFDN0ZBIC8qIENvbnRlbnRTZWFyY2hVdGls
aXRpZXMuaCAqLywKKwkJCQlBNTQ5ODIwMTE4OTFEMEIwMDA4MUU1QjggLyogRXZlbnRMb29wLmNw
cCAqLywKKwkJCQlBNTQ5ODIwMjE4OTFEMEIwMDA4MUU1QjggLyogRXZlbnRMb29wLmggKi8sCisJ
CQkJQTVGRDAwNzIxODlCMDM4QzAwNjMzMjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5jcHAgKi8s
CisJCQkJQTVGRDAwNzMxODlCMDM4QzAwNjMzMjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5oICov
LAorCQkJCUE1MTNFNUI1MTg1QjhCRDMwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdC5jcHAgKi8s
CisJCQkJQTUxM0U1QjYxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmggKi8sCisJ
CQkJQTUxNEIyQzAxODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgKi8s
CisJCQkJQTUxNEIyQzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oICov
LAorCQkJCUE1OEUzNTkwMTg2MERFQzcwMDFGMjRGRSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
ICovLAorCQkJCUE1MTNFNUI5MTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
aCAqLywKKwkJCQlBNTEzRTVDODE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcCAqLywKKwkJCQlBNTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmggKi8sCisJCQkJQTU4NDBFMUUxODdCN0I4NjAwODQzQjEwIC8qIEluamVjdGVk
U2NyaXB0TW9kdWxlLmNwcCAqLywKKwkJCQlBNTg0MEUxRjE4N0I3Qjg2MDA4NDNCMTAgLyogSW5q
ZWN0ZWRTY3JpcHRNb2R1bGUuaCAqLywKKwkJCQlBNTEzRTVDMzE4NUY5MkM5MDA3RTk1QUQgLyog
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgKi8sCisJCQkJQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3
IC8qIEluc3BlY3RvckFnZW50QmFzZS5oICovLAorCQkJCUE1OTNDRjg0MTg0MDM4Q0EwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCAqLywKKwkJCQlBNTkzQ0Y4NTE4NDAzOENB
MDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovLAorCQkJCUE1OTNDRjdBMTg0
MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8sCisJCQkJ
QTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgg
Ki8sCisJCQkJQTVEMEExQkExODYyMzAxQjAwQzdCNDk2IC8qIEluc3BlY3RvckVudmlyb25tZW50
LmggKi8sCisJCQkJQTU5NDU1OTQxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbC5oICovLAorCQkJCUE1NUQ5M0FCMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JU
eXBlQnVpbGRlci5oICovLAorCQkJCUE1OTNDRjgwMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JWYWx1ZXMuY3BwICovLAorCQkJCUE1OTNDRjgxMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JWYWx1ZXMuaCAqLywKKwkJCQlBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgKi8sCisJCQkJQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFT
Y3JpcHRDYWxsRnJhbWUuaCAqLywKKwkJCQlBNUMzQTFBMzE4QzA0OTAyMDBDOTU5M0EgLyogSlND
b25zb2xlQ2xpZW50LmNwcCAqLywKKwkJCQlBNUMzQTFBNDE4QzA0OTAyMDBDOTU5M0EgLyogSlND
b25zb2xlQ2xpZW50LmggKi8sCisJCQkJQTUxMDA3QkUxODdDQzNDNjAwQjM4ODc5IC8qIEpTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8sCisJCQkJQTUxMDA3QkYxODdDQzND
NjAwQjM4ODc5IC8qIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oICovLAorCQkJ
CUE1MDNGQTI3MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2Vy
dmVyLmNwcCAqLywKKwkJCQlBNTAzRkEyODE4OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmpl
Y3RTY3JpcHREZWJ1Z1NlcnZlci5oICovLAorCQkJCUE1MTNFNUJBMTg1QkZBQ0MwMDdFOTVBRCAv
KiBKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCisJCQkJQTUxM0U1QkIxODVCRkFDQzAwN0U5
NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8sCisJCQkJQTUxM0U1QkMxODVCRkFDQzAw
N0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcCAqLywKKwkJCQlBNTEz
RTVCRDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCAq
LywKKwkJCQlBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcCAqLywKKwkJCQlBNTAzRkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmggKi8sCisJCQkJQTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTUwM0ZBMTgxODhFMEZCMDAwMTEwRjE0
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovLAorCQkJCUE1RkQwMDY1MTg5
QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICovLAorCQkJCUE1RkQwMDY2MTg5
QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLywKKwkJCQlBNTAzRkExRjE4OEVG
RjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovLAorCQkJCUE1RkQwMDY5MTg5QjAw
QTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovLAorCQkJCUE1RkQwMDZBMTg5QjAw
QTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLywKKwkJCQlBNUZEMDA2QjE4OUIwMEE5
MDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLywKKwkJCQlBNUZEMDA2QzE4OUIwMEFB
MDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8sCisJCQkJQTVGRDAwN0IxODlCMEI0QzAw
NjMzMjMxIC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwICovLAorCQkJCUE1RkQwMDdDMTg5
QjBCNEMwMDYzMzIzMSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggKi8sCisJCQkJQTUwM0ZB
MjAxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLywKKwkJCQlBNTAz
RkEyMzE4OEVGRkZEMDAxMTBGMTQgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovLAorCQkJCUE1
MDNGQTI0MTg4RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBpbnNwZWN0b3I7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owor
CQlBNUJBMTVFMDE4MjM0MDlEMDBBODJFNjkgLyogcmVtb3RlICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yLmggKi8sCisJCQkJQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3Rvci5tbSAqLywKKwkJCQlBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8sCisJCQkJQTU5NDU1OEUxODI0NUVERTAwQ0MzODQz
IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1QkExNUVGMTgyMzQ1
QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi8sCisJCQkJQTVCQTE1
RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
LmggKi8sCisJCQkJQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLm1tICovLAorCQkJCUE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAv
KiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi8sCisJCQkJQTVCQTE1RTcxODIzNDBC
MzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gKi8sCisJCQkpOwor
CQkJcGF0aCA9IHJlbW90ZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUE3
RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFy
cmF5LnByb3RvdHlwZS5qcyAqLywKKwkJCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcCAqLywKKwkJCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyog
QnVpbHRpbkV4ZWN1dGFibGVzLmggKi8sCisJCQkJQTc1RUU5QjAxOEFBQjdFMjAwQUFEMDQzIC8q
IEJ1aWx0aW5OYW1lcy5oICovLAorCQkJCTdDRkJBQzFDMThCNTM1RTUwMEQwMDc1MCAvKiBQcm9t
aXNlLnByb3RvdHlwZS5qcyAqLywKKwkJCQlBN0E5NzlDNDE4QkU4RDlFMDAyQzM3MzMgLyogRnVu
Y3Rpb24ucHJvdG90eXBlLmpzICovLAorCQkJKTsKKwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGQ0VGQUI0MTgw
NUQ2MTYwMDQ3MkNFNCAvKiBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkJMEZDRUZBREMxODA2NEExNDAwNDcyQ0U0IC8qIGNvbmZpZ19sbHZtLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkNFRkFEQTE4MDYyMERBMDA0NzJDRTQgLyogTExWTUFQSS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEZDRUZBRDExODA1RTc3OTAwNDcyQ0U0IC8qIExMVk1BUElGdW5jdGlvbnMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGQ0VGQUQ0MTgwNUVEQ0MwMDQ3MkNFNCAvKiBMTFZNSGVhZGVy
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CisJCTE0NDAwNUM3MEE1MzM4QzYwMDA1RjA2MSAvKiBIZWFkZXJz
ICovID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQTcyNzAxQjkwREFERTk0OTAwRTU0
OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0NDAwNUNCMEE1
MzM4RDEwMDA1RjA2MSAvKiBKU05vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0NDAwNzU3MEE1
MzcwRDIwMDA1RjA2MSAvKiBKU05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDQwMDVD
QzBBNTMzOEY4MDAwNUYwNjEgLyogTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ0MDA3NEEw
QTUzNkNDMjAwMDVGMDYxIC8qIE5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJNTU0MDc1NkMx
OERBNThBRDAwRUZGN0YyIC8qIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhIZWFkZXJzQnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCQk1NTQwNzU3MzE4REE1OEFEMDBFRkY3RjIgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1NTQwNzU3NDE4REE1OEFEMDBFRkY3RjIgLyogQXJndW1lbnRzSXRlcmF0b3JDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc1NzUxOERBNThBRDAwRUZGN0YyIC8q
IEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzU4
NjE4REE1OEFEMDBFRkY3RjIgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTU0MDc1ODgxOERBNThBRDAwRUZGN0YyIC8qIEFycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc1ODkxOERBNThBRDAwRUZGN0YyIC8qIEFycmF5SXRl
cmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NTkzMThEQTU4QUQwMEVG
RjdGMiAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTU0MDc1OTQxOERBNThBRDAwRUZGN0YyIC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU1NDA3NUJCMThEQTU4QUQwMEVGRjdGMiAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25z
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzVCRTE4REE1OEFEMDBFRkY3RjIgLyogSlNDb25z
b2xlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzVENjE4REE1OEFEMDBFRkY3RjIgLyogRGF0
ZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzVENzE4REE1OEFEMDBFRkY3
RjIgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NURBMThEQTU4
QUQwMEVGRjdGMiAvKiBEYXRlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzY3
MTE4REE1OEFEMDBFRkY3RjIgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTU0MDc2OTExOERBNThBRDAwRUZGN0YyIC8qIENvbnNvbGVQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU1NDA3NzE4MThEQTU4QUQwMEVGRjdGMiAvKiBKU0FjdGl2YXRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTU1NDA3NzFCMThEQTU4QUQwMEVGRjdGMiAvKiBKU0FyZ3VtZW50
c0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzcyMjE4REE1OEFEMDBFRkY3RjIg
LyogSlNBcnJheUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzcyNTE4REE1OEFE
MDBFRkY3RjIgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3NDgxOERBNThBRDAw
RUZGN0YyIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTU0MDc3NEExOERBNThBRDAwRUZGN0YyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1NTQwNzc1OTE4REE1OEFEMDBFRkY3RjIgLyogSlNNYXBJdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3NjMxOERBNThBRDAwRUZGN0YyIC8qIEpTUHJv
bWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzc2NjE4REE1OEFEMDBF
RkY3RjIgLyogSlNQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzc2
NzE4REE1OEFEMDBFRkY3RjIgLyogSlNQcm9taXNlUmVhY3Rpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTU1NDA3NzZGMThEQTU4QUQwMEVGRjdGMiAvKiBKU1NldEl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1NTQwNzc3MTE4REE1OEFEMDBFRkY3RjIgLyogSlNTdGFja0lubGluZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTU1NDA3NzczMThEQTU4QUQwMEVGRjdGMiAvKiBKU1N0cmluZ0J1
aWxkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3Nzc0MThEQTU4QUQwMEVGRjdGMiAvKiBK
U1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3ODgxOERBNThBRDAwRUZG
N0YyIC8qIEpTV2Vha01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3OTgxOERBNThBRDAw
RUZGN0YyIC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3N0I3MThE
QTU4QUQwMEVGRjdGMiAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0
MDc3QjkxOERBNThBRDAwRUZGN0YyIC8qIE1hcEl0ZXJhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU1NDA3N0JBMThEQTU4QUQwMEVGRjdGMiAvKiBNYXBJdGVyYXRvclByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3QkIxOERBNThBRDAwRUZGN0YyIC8qIE1h
cFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3QzcxOERBNThBRDAwRUZGN0Yy
IC8qIE5hbWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3QzgxOERBNThB
RDAwRUZGN0YyIC8qIE5hbWVJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3Qzkx
OERBNThBRDAwRUZGN0YyIC8qIE5hbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1
NDA3N0NBMThEQTU4QUQwMEVGRjdGMiAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1NTQwNzdDQjE4REE1OEFEMDBFRkY3RjIgLyogTmF0aXZlRXJyb3JQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3N0QxMThEQTU4QUQwMEVGRjdGMiAvKiBO
dW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc1N0MxOERBNThBRDAw
RUZGN0YyIC8qIFN0cnVjdHVyZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc1ODMx
OERBNThBRDAwRUZGN0YyIC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQw
NzU4NDE4REE1OEFEMDBFRkY3RjIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzU4NTE4REE1OEFEMDBFRkY3RjIgLyogQXJyYXlCdWZm
ZXJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzU4NzE4REE1OEFEMDBFRkY3RjIgLyog
QXJyYXlDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc1OEIxOERBNThBRDAw
RUZGN0YyIC8qIEFycmF5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzU4RDE4
REE1OEFEMDBFRkY3RjIgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTU0MDc1OEUxOERBNThBRDAwRUZGN0YyIC8qIEFycmF5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTU0MDc1OTYxOERBNThBRDAwRUZGN0YyIC8qIEJvb2xlYW5PYmplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU1NDA3NTlBMThEQTU4QUQwMEVGRjdGMiAvKiBCdXR0ZXJmbHkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTU1NDA3NTlCMThEQTU4QUQwMEVGRjdGMiAvKiBCdXR0ZXJmbHlJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzVBMzE4REE1OEFEMDBFRkY3RjIgLyogQ2Fs
bERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NUFCMThEQTU4QUQwMEVGRjdGMiAvKiBD
bGFzc0luZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NUIyMThEQTU4QUQwMEVGRjdGMiAv
KiBDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NUI3MThEQTU4QUQwMEVGRjdG
MiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzVC
OTE4REE1OEFEMDBFRkY3RjIgLyogQ29tbW9uSWRlbnRpZmllcnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU1NDA3NUJBMThEQTU4QUQwMEVGRjdGMiAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU1NDA3NUJEMThEQTU4QUQwMEVGRjdGMiAvKiBDb21waWxhdGlvblJlc3Vs
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc1QkYxOERBNThBRDAwRUZGN0YyIC8qIENvbXBs
ZXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NUMwMThEQTU4QUQwMEVGRjdGMiAvKiBD
b25jdXJyZW50SklUTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc1QzQxOERBNThBRDAw
RUZGN0YyIC8qIENvbnNvbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc1QzUxOERB
NThBRDAwRUZGN0YyIC8qIENvbnN0YW50TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc1
QzYxOERBNThBRDAwRUZGN0YyIC8qIENvbnN0cnVjdERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU1NDA3NUQ1MThEQTU4QUQwMEVGRjdGMiAvKiBEYXRhVmlldy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTU0MDc1RDgxOERBNThBRDAwRUZGN0YyIC8qIERhdGVJbnN0YW5jZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTU0MDc1RDkxOERBNThBRDAwRUZGN0YyIC8qIERhdGVJbnN0YW5jZUNhY2hlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzVEQzE4REE1OEFEMDBFRkY3RjIgLyogRGVidWdnZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NjZEMThEQTU4QUQwMEVGRjdGMiAvKiBEdW1wQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc2NzAxOERBNThBRDAwRUZGN0YyIC8qIEVy
cm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzY3MjE4REE1OEFEMDBFRkY3RjIgLyogRXJy
b3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzY3MzE4REE1OEFEMDBF
RkY3RjIgLyogRXJyb3JJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc2NzQxOERB
NThBRDAwRUZGN0YyIC8qIEVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQw
NzY3NzE4REE1OEFEMDBFRkY3RjIgLyogRXhjZXB0aW9uSGVscGVycy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTU0MDc2NzgxOERBNThBRDAwRUZGN0YyIC8qIEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTU1NDA3NjdFMThEQTU4QUQwMEVGRjdGMiAvKiBGbG9hdDMyQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTU1NDA3NjdGMThEQTU4QUQwMEVGRjdGMiAvKiBGbG9hdDY0QXJyYXku
aCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NjgzMThEQTU4QUQwMEVGRjdGMiAvKiBDb25zb2xl
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzZCNjE4REE1OEFEMDBFRkY3RjIgLyog
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc2QjcxOERBNThB
RDAwRUZGN0YyIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU1NDA3NkI4MThEQTU4QUQwMEVGRjdGMiAvKiBGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTU0MDc2QzIxOERBNThBRDAwRUZGN0YyIC8qIEdlbmVyaWNUeXBlZEFycmF5
Vmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc2QzMxOERBNThBRDAwRUZGN0YyIC8qIEdl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NkQ2
MThEQTU4QUQwMEVGRjdGMiAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQw
NzZEQTE4REE1OEFEMDBFRkY3RjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU1NDA3NkRCMThEQTU4QUQwMEVGRjdGMiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTU1NDA3NkRDMThEQTU4QUQwMEVGRjdGMiAvKiBJbmRleGluZ1R5
cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NkRGMThEQTU4QUQwMEVGRjdGMiAvKiBJbml0
aWFsaXplVGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzZGODE4REE1OEFEMDBF
RkY3RjIgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc2RjkxOERBNThB
RDAwRUZGN0YyIC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NkZBMThE
QTU4QUQwMEVGRjdGMiAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NkZC
MThEQTU4QUQwMEVGRjdGMiAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1NTQwNzZGQzE4REE1OEFEMDBFRkY3RjIgLyogSW50ZXJuYWxGdW5jdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTU0MDc2RkUxOERBNThBRDAwRUZGN0YyIC8qIEludHJpbnNpYy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3MTkxOERBNThBRDAwRUZGN0YyIC8qIEpTQVBJVmFs
dWVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzcxQzE4REE1OEFEMDBFRkY3RjIg
LyogSlNBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3MUQxOERBNThBRDAwRUZGN0Yy
IC8qIEpTQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzFFMThEQTU4QUQw
MEVGRjdGMiAvKiBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU1NDA3NzFGMThEQTU4QUQwMEVGRjdGMiAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1NTQwNzcyMDE4REE1OEFEMDBFRkY3RjIgLyogSlNBcnJheUJ1ZmZl
clZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzIxMThEQTU4QUQwMEVGRjdGMiAvKiBK
U0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzJCMThE
QTU4QUQwMEVGRjdGMiAvKiBKU0NlbGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzJDMThE
QTU4QUQwMEVGRjdGMiAvKiBKU0NlbGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQw
NzcyRDE4REE1OEFEMDBFRkY3RjIgLyogSlNDSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTU0MDc3MkUxOERBNThBRDAwRUZGN0YyIC8qIEpTQ0pTVmFsdWUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU1NDA3NzJGMThEQTU4QUQwMEVGRjdGMiAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTU0MDc3MzYxOERBNThBRDAwRUZGN0YyIC8qIEpTRGF0YVZpZXcuaCBp
biBIZWFkZXJzICovLAorCQkJCTU1NDA3NzM3MThEQTU4QUQwMEVGRjdGMiAvKiBKU0RhdGFWaWV3
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzczODE4REE1OEFEMDBFRkY3RjIg
LyogSlNEYXRlTWF0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3MzkxOERBNThBRDAwRUZG
N0YyIC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzcz
QjE4REE1OEFEMDBFRkY3RjIgLyogSlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU1NDA3NzNDMThEQTU4QUQwMEVGRjdGMiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTU0MDc3M0QxOERBNThBRDAwRUZGN0YyIC8qIEpTRmxvYXQ2NEFycmF5LmggaW4g
SGVhZGVycyAqLywKKwkJCQk1NTQwNzczRTE4REE1OEFEMDBFRkY3RjIgLyogSlNGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3M0YxOERBNThBRDAwRUZGN0YyIC8qIEpTRnVuY3Rp
b25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzc0MDE4REE1OEFEMDBFRkY3RjIg
LyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzQx
MThEQTU4QUQwMEVGRjdGMiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzc0MjE4REE1OEFEMDBFRkY3RjIgLyogSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1
NDA3NzQzMThEQTU4QUQwMEVGRjdGMiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzQ0MThEQTU4QUQwMEVGRjdGMiAvKiBKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3NDUx
OERBNThBRDAwRUZGN0YyIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3NDYxOERBNThBRDAwRUZGN0YyIC8qIEpTR2xv
YmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzc1MDE4REE1OEFEMDBFRkY3RjIg
LyogSlNJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzc1MTE4REE1OEFEMDBF
RkY3RjIgLyogSlNJbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzc1MjE4REE1
OEFEMDBFRkY3RjIgLyogSlNJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzU1
MThEQTU4QUQwMEVGRjdGMiAvKiBKU0xvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzU4
MThEQTU4QUQwMEVGRjdGMiAvKiBKU01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3NUIx
OERBNThBRDAwRUZGN0YyIC8qIEpTTmFtZVNjb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQw
Nzc1QzE4REE1OEFEMDBFRkY3RjIgLyogSlNPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1
NDA3NzVGMThEQTU4QUQwMEVGRjdGMiAvKiBKU09OT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NTQwNzc2MjE4REE1OEFEMDBFRkY3RjIgLyogSlNQcm9taXNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1NTQwNzc2NDE4REE1OEFEMDBFRkY3RjIgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTU1NDA3NzY1MThEQTU4QUQwMEVGRjdGMiAvKiBKU1Byb21pc2VGdW5j
dGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzY4MThEQTU4QUQwMEVGRjdGMiAvKiBK
U1Byb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzc2QjE4REE1OEFEMDBFRkY3RjIgLyog
SlNTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3NkQxOERBNThBRDAwRUZGN0YyIC8q
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzZF
MThEQTU4QUQwMEVGRjdGMiAvKiBKU1NldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3NzIx
OERBNThBRDAwRUZGN0YyIC8qIEpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzc3
ODE4REE1OEFEMDBFRkY3RjIgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTU0MDc3NzkxOERBNThBRDAwRUZGN0YyIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTU0MDc3N0ExOERBNThBRDAwRUZGN0YyIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9y
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3N0IxOERBNThBRDAwRUZGN0YyIC8qIEpTVHlw
ZWRBcnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzdDMThEQTU4QUQw
MEVGRjdGMiAvKiBKU1R5cGVkQXJyYXlzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzc3RDE4
REE1OEFEMDBFRkY3RjIgLyogSlNUeXBlSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3
N0UxOERBNThBRDAwRUZGN0YyIC8qIEpTVWludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU1NDA3NzdGMThEQTU4QUQwMEVGRjdGMiAvKiBKU1VpbnQzMkFycmF5LmggaW4gSGVhZGVycyAq
LywKKwkJCQk1NTQwNzc4MDE4REE1OEFEMDBFRkY3RjIgLyogSlNVaW50OEFycmF5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1NTQwNzc4MTE4REE1OEFEMDBFRkY3RjIgLyogSlNVaW50OENsYW1wZWRB
cnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3ODUxOERBNThBRDAwRUZGN0YyIC8qIEpT
VmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3NzhCMThEQTU4QUQwMEVG
RjdGMiAvKiBKU1dpdGhTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3OEQxOERBNThB
RDAwRUZGN0YyIC8qIEpTV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3
QTkxOERBNThBRDAwRUZGN0YyIC8qIExvb2t1cC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3
QjgxOERBNThBRDAwRUZGN0YyIC8qIE1hcERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3
N0MxMThEQTU4QUQwMEVGRjdGMiAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTU0MDc3QzIxOERBNThBRDAwRUZGN0YyIC8qIE1hdGhPYmplY3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU1NDA3N0MzMThEQTU4QUQwMEVGRjdGMiAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1NTQwNzdDNTE4REE1OEFEMDBFRkY3RjIgLyogTWljcm90YXNrLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1NTQwNzdEMzE4REE1OEFEMDBFRkY3RjIgLyogTnVtYmVyT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzdENDE4REE1OEFEMDBFRkY3RjIgLyogTnVtYmVy
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzdENjE4REE1OEFEMDBFRkY3RjIg
LyogTnVtZXJpY1N0cmluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3N0RBMThEQTU4QUQw
MEVGRjdGMiAvKiBPYmplY3RDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3
REIxOERBNThBRDAwRUZGN0YyIC8qIE9iamVjdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTU0MDc3RTAxOERBNThBRDAwRUZGN0YyIC8qIE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTU1NDA3N0UxMThEQTU4QUQwMEVGRjdGMiAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1NTQwNzdFQTE4REE1OEFEMDBFRkY3RjIgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU1NDA3N0ZEMThEQTU4QUQwMEVGRjdGMiAvKiBQcm9wZXJ0eURlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3N0ZFMThEQTU4QUQwMEVGRjdGMiAvKiBQcm9w
ZXJ0eU1hcEhhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc3RkYxOERBNThBRDAw
RUZGN0YyIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4MDAxOERB
NThBRDAwRUZGN0YyIC8qIFByb3BlcnR5TmFtZUFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1
NTQwNzgwMTE4REE1OEFEMDBFRkY3RjIgLyogUHJvcGVydHlPZmZzZXQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTU1NDA3ODAzMThEQTU4QUQwMEVGRjdGMiAvKiBQcm9wZXJ0eVNsb3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU1NDA3ODA0MThEQTU4QUQwMEVGRjdGMiAvKiBQcm9wZXJ0eVN0b3JhZ2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3ODA1MThEQTU4QUQwMEVGRjdGMiAvKiBQcm90ZWN0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzgwNjE4REE1OEFEMDBFRkY3RjIgLyogUHJvdG90
eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzgwODE4REE1OEFEMDBFRkY3RjIgLyog
UHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzgwQTE4REE1OEFE
MDBFRkY3RjIgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzgw
RTE4REE1OEFEMDBFRkY3RjIgLyogUmVnRXhwLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzgw
RjE4REE1OEFEMDBFRkY3RjIgLyogUmVnRXhwQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1
NDA3ODEyMThEQTU4QUQwMEVGRjdGMiAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU1NDA3ODEzMThEQTU4QUQwMEVGRjdGMiAvKiBSZWdFeHBPYmplY3QuaCBpbiBIZWFkZXJzICov
LAorCQkJCTU1NDA3ODE5MThEQTU4QUQwMEVGRjdGMiAvKiBSZWdpc3RlclByZXNlcnZhdGlvbk1v
ZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3ODFEMThEQTU4QUQwMEVGRjdGMiAvKiBSZWpl
Y3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3ODI2MThEQTU4QUQwMEVGRjdGMiAvKiBTYW1w
bGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3ODM4MThEQTU4QUQwMEVGRjdG
MiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0
MDc4M0MxOERBNThBRDAwRUZGN0YyIC8qIFNtYWxsU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTU0MDc4NDExOERBNThBRDAwRUZGN0YyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTU1NDA3ODQ1MThEQTU4QUQwMEVGRjdGMiAvKiBTdGFja0FsaWdubWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4NEIxOERBNThBRDAwRUZGN0YyIC8qIFN0cmlu
Z09iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4NEMxOERBNThBRDAwRUZGN0YyIC8q
IFN0cmluZ1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4NEYxOERBNThBRDAw
RUZGN0YyIC8qIFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4NTAxOERBNThB
RDAwRUZGN0YyIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzg1
MTE4REE1OEFEMDBFRkY3RjIgLyogU3RydWN0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTU0MDc4NTIxOERBNThBRDAwRUZGN0YyIC8qIFN0cnVjdHVyZVJhcmVEYXRhLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1NTQwNzg1MzE4REE1OEFEMDBFRkY3RjIgLyogU3RydWN0dXJlUmFyZURh
dGFJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzg1NzE4REE1OEFEMDBFRkY3RjIg
LyogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzg1
OTE4REE1OEFEMDBFRkY3RjIgLyogU3ltYm9sVGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1
NDA3ODVDMThEQTU4QUQwMEVGRjdGMiAvKiBUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTU1NDA3ODYwMThEQTU4QUQwMEVGRjdGMiAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4NjIxOERBNThBRDAwRUZGN0YyIC8qIFR5cGVkQXJyYXlB
ZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4NjMxOERBNThBRDAwRUZGN0YyIC8q
IFR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzg2NDE4REE1
OEFEMDBFRkY3RjIgLyogVHlwZWRBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1
NDA3ODY1MThEQTU4QUQwMEVGRjdGMiAvKiBUeXBlZEFycmF5cy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTU0MDc4NjYxOERBNThBRDAwRUZGN0YyIC8qIFR5cGVkQXJyYXlUeXBlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1NTQwNzg2RTE4REE1OEFEMDBFRkY3RjIgLyogVWludDE2QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTU1NDA3ODcwMThEQTU4QUQwMEVGRjdGMiAvKiBVaW50MzJBcnJheS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4NzExOERBNThBRDAwRUZGN0YyIC8qIFVpbnQ4QXJy
YXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3ODcyMThEQTU4QUQwMEVGRjdGMiAvKiBVaW50
OENsYW1wZWRBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4N0ExOERBNThBRDAwRUZG
N0YyIC8qIFZNLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzg3QjE4REE1OEFEMDBFRkY3RjIg
LyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzg3RDE4REE1OEFEMDBF
RkY3RjIgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3ODgxMThEQTU4QUQw
MEVGRjdGMiAvKiBXZWFrR0NNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3ODg4MThEQTU4
QUQwMEVGRjdGMiAvKiBXZWFrUmFuZG9tLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzg4RDE4
REE1OEFEMDBFRkY3RjIgLyogV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQw
Nzg4RjE4REE1OEFEMDBFRkY3RjIgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTU0MDc1NzcxOERBNThBRDAwRUZGN0YyIC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1NTQwNzU3MjE4REE1OEFEMDBFRkY3RjIgLyogQXJnTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTUxMDUwMjYxOEVCODI3NTAwMDAxRjNFIC8qIEpTQ2FsbGJhY2tG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4MTAxOERBNThBRDAwRUZGN0YyIC8q
IFJlZ0V4cENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzgxNTE4REE1OEFE
MDBFRkY3RjIgLyogUmVnRXhwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzgz
MzE4REE1OEFEMDBFRkY3RjIgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU1NDA3ODM0MThEQTU4QUQwMEVGRjdGMiAvKiBTZXRJdGVyYXRvckNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1NTQwNzgzNTE4REE1OEFEMDBFRkY3RjIgLyogU2V0SXRlcmF0b3JQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3ODM2MThEQTU4QUQwMEVGRjdGMiAv
KiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1NDA3ODQ5MThEQTU4QUQwMEVG
RjdGMiAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4
NEExOERBNThBRDAwRUZGN0YyIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1NTQwNzg2MTE4REE1OEFEMDBFRkY3RjIgLyogVHJhY2luZy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTU0MDc4NkYxOERBNThBRDAwRUZGN0YyIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4ODUxOERBNThBRDAwRUZGN0YyIC8qIFdlYWtNYXBDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU0MDc4ODYxOERBNThBRDAwRUZGN0YyIC8q
IFdlYWtNYXBEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTQwNzg4NzE4REE1OEFEMDBFRkY3
RjIgLyogV2Vha01hcFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCTkzMkY1QjNGMDgyMkEx
QzcwMDczNjk3NSAvKiBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJ
MEZGQTU0OTgxNkI4ODM1MzAwQjNBOTgyIC8qIEE2NERPcGNvZGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQ
Qy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNh
bGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDM0U1MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0Y2MDUxNDBFMjAzRUY4MDBC
OUE2NEQgLyogQXJnTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE4ODA2NzkxOTEwN0Q1NTAw
Q0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzI1
N0RFODBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NzYxNDBDRTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTc2MTQwRDAxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50
c0l0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjZCMUNDQTE4NjQxREY4
MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLywKKzw8PDw8PDwgSEVBRAorCQkJCTE0N0I4M0FDMEU2REI4Qzkw
MDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMkExMTEyNDYxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5oIGluIEhl
YWRlcnMgKi8sCis9PT09PT09CisJCQkJNTJGQURERUIxOTQ2N0EyNDAwQzhCQkU1IC8qIEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCis+Pj4+Pj4+IHJlZmFjdG9yZWQg
bWVyZ2UgY29kZSBpbnRvIHRoZSBWTSBjbGFzcywgVk0gd2lsbCBub3cgYWN0IG1haW50YWluIHBl
cnNpc3RlbnQgc3RhdGUgZm9yIGhpZ2ggZmlkZWxpdHkgdHlwZSB0cmFja2luZy4gQWxzbywgYWJz
dHJhY3RlZCBjb2RlIHRvIGZpbmQgYW4gZW5jbG9zaW5nIGJsb2NrIGdpdmVuIGEgdGV4dCByYW5n
ZQorCQkJCUE1ODQwMzIwMThCRkZCRTEwMDVBMDgxMSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkU1MjQ4RjkxOTE0NDJEOTAwQjdGREU0IC8qIFZhcmlhYmxlV2F0
Y2hwb2ludFNldElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyREE3NzgzMThFMjU5OTkw
MDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkFBQ0U2M0QxOENB
NUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJBODM2MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzgg
LyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTRFOEVCMTE4QkZGQkJF
MDA1NTZEMjggLyogR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTU0RThFQjAxOEJGRkJCQjAwNTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXkuaCBp
biBIZWFkZXJzICovLAorCQkJCTY1MTRGMjE5MThCM0UxNjcwMDk4RkY4QiAvKiBCeXRlY29kZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RP
cGNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzNTE3QURC
NUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRkM5OUQ1
MTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZp
ZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJh
eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI3RjM5NTE1RUQ4RTQ2MDBGMTY3
QjIgLyogQXJyYXlDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdCREFFQzcxN0Y0
RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTdCREFFQzkxN0Y0RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjM5NDU1MTVEMDcwNTcwMDZBNTk3QyAvKiBBcnJheVBy
b2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDM0U3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBB
cnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM1MjQwRTE2RkM4QTAwQjM0
NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkFGNzM4MkQx
OEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGQjdGMzk2MTVFRDhFNDYwMEYxNjdCMiAvKiBBcnJheVN0b3JhZ2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg2RDNCMkM1MTAxNTZCREUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZm
ZXJXaXRoQ29uc3RhbnRQb29sLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjI0RTU0MTE3RUE5RjU5
MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzg0QTI2
MTExRDE2NjIyMDA1Nzc2QUMgLyogQVNUQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY2
NzM5RDIxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkMxOEMzRUMwRTE2RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3QuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4
ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzVFRTlCMjE4QUFCN0UyMDBBQUQwNDMg
LyogQnVpbHRpbk5hbWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI3RjM5NzE1RUQ4RTQ2MDBG
MTY3QjIgLyogQnV0dGVyZmx5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI3RjM5ODE1RUQ4RTQ2
MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJGQ0FF
MTExN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBp
biBIZWFkZXJzICovLAorCQkJCTk2OUEwNzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJGQ0FFMTMxN0E5QzI0RTAwMzRDNzM1IC8q
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2NjZFQzAx
ODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGODg1RTExMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURl
Zi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFs
SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEMzRUQwRTE2RjVDRDAwQjM0NDYwIC8qIENh
bGxEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDI5RDhERTBFRDIyMDVCMDBCODk2MTkgLyog
Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0MxRUFFRjE3OTg3QUI2MDAyOTlEQjIg
LyogQ2FsbEZyYW1lSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTVFM0JDMDUwRTFBRTY4
MjAwQjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODNC
MTE0QkNGNzE4MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjkzMzI5RTE0Q0E3REM1MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyNEU1NDIxN0VBOUY1OTAwQUJCMjE3
IC8qIENDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM2QUFBRTUwRTFGNDI2NTAw
QUQ4N0Q4IC8qIENsYXNzSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3M0Q3QUYxNjVBMTQz
MDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk2OUEwNzk3MEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGOEY5NDQxMTY2NzYzMzIwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkM5N0YzNDE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkQ4QTMxNDE3RDQzMjZDMDBDQTJD
NDAgLyogQ29kZUJsb2NrU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjk2RUJCMzE2Njc2RUY2
MDA4QkFERTMgLyogQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
N0YxODIyMTY0MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGlu
IEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTMxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0
b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJODZFMTE2QjEwRkU3NUFD
ODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCRDdFNjkx
NDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFD
MjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb21tb25JZGVudGlmaWVy
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1v
blNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU1M0EzMzIxN0ExRjFFRTAwOENGNkYz
IC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRDgy
RTM5MTQxQUIxNEQwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTdFNUEzQTgxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNTNDRTA4ODE4QkMxQTU2MDBCRURGNzYgLyogSlNDb25zb2xlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzNGNDBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tcGxldGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEQjJDRUExNzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1
cnJlbnRKSVRMb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzNGNTBFMTZGNUNEMDBCMzQ0
NjAgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDQ4MzZFNzEzMkRBN0JFMDA1QkU3
ODUgLyogQ29uc2VydmF0aXZlUm9vdHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1RkQwMDdBMTg5
QjA1MTAwMDYzMzIzMSAvKiBDb25zb2xlTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVG
RDAwNzQxODlCMDM4QzAwNjMzMjMxIC8qIENvbnNvbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZGQzk5RDExODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkMxOEMzRjYwRTE2RjVDRDAwQjM0NDYwIC8qIENvbnN0cnVjdERhdGEuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE1N0QyM0YyMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNo
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkVBRDJGQzE0RjAyNDk4MDBBNEIxNTkg
LyogQ29waWVkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkM4RDAzMDE0QTNDRUZD
MDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUMyRkM5QkQzMTY2
NDRERkIwMDgxMEQzMyAvKiBDb3BpZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUMyRUFBM0ZBMTQ5QTgzNUUwMEZDRTExMiAvKiBDb3BpZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQzJDOEQwMkQxNEEzQzZFMDAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY1QTUyRDAxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tlbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzIyMzlEMTgxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNp
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjIzOUQxOTE2MjYyQkREMDA1QUM1RkQgLyogQ29w
eVZpc2l0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjE4RDE0MDE2NTVDRkQ1MDA2
MkJCODEgLyogQ29weVdvcmtMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTY4Mjk1QjE4NzVG
ODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNURF
NkU1QjMwRTE3MjhFQzAwMTgwNDA3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlIGluIEhlYWRlcnMgKi8s
CisJCQkJQTU4NDBFMjcxODdDOTgxRTAwODQzQjEwIC8qIGNzc21pbi5weSBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjJCNjZERjE3QjZCNUFCMDBBN0FFM0YgLyogRGF0YVZpZXcuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUJDRDIwMzRBMEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29u
dmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxMTY2MDIwRTE5OTdCNDAwODA2NkREIC8q
IERhdGVJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRBMTU2MzIxMDk2NjM2NTAwNkZB
MjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0QyMDM0QzBF
MTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNE
MjAzRTgwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LywKKwkJCQlCQzE4QzNGQTBFMTZGNUNEMDBCMzQ0NjAgLyogRGVidWdnZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUJDMzEzNTY0MEYzMDJGQTMwMDNERkQzQSAvKiBEZWJ1Z2dlckFjdGl2YXRpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDM0ZCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBEZWJ1Z2dl
ckNhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVBMDg2MjExODJCN0EwNDAwRjZEODUx
IC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxMzZENEQxNzRB
RDY5RTAwNzVCMzU0IC8qIERlZmVyR0MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzcxMkRGMTdD
RDg3N0MwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLAorCQkJCTJBMjgyNUQwMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3Bl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzdBNDIzRTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJz
dHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQg
LyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcwNEQ5MDQx
N0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjYyMDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0Fk
amFjZW5jeUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRkI5MjE4MTZEMDJFQjIwMDU1QTVE
QiAvKiBERkdBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Mzc4MTBDMTc5OUVBMkUw
MDgxNzUzMyAvKiBERkdBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxRTNBNDYxNTM0
Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1QzNBMUE2MThDMDQ5MDIwMEM5NTkzQSAvKiBKU0NvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlm
aWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2
ODcgLyogREZHQXJpdGhNb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjA1QzNCNDE2ODNDRjky
MDBCQUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY2Mzk0ODUxNUU0ODExQjAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTdEOUEyOTUxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0F0VGFpbEFic3RyYWN0
U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjY2RUM3MTgzNTY3MkIwMEQwMTdGMSAvKiBE
RkdBdmFpbGFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNzE0Q0E1MTZFQTkyRjIwMEYz
RUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjYyMDE3NjE0M0ZDRDNCMDA2OEI3N0MgLyogREZHQmFzaWNCbG9jay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEZGQjkyMUExNkQwMkVDNTAwNTVBNURCIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzBCMDgzMzE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmlu
YXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGODM2NEI3MTY0
QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9j
YXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdCMjk0QjE0QzND
RDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkZG
Qzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGM0IzQTI4MTU0NEM5OTcwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNzdBNDI0MDE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJl
cml6ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc3QTQyNDIxN0EwQkJGRDAwQThEQjgxIC8qIERG
R0Nsb2JiZXJTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0IyOTREMTRDM0NENEMwMDdDM0RC
MSAvKiBERkdDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUEwQTMyMTcwRDQwQkYwMEJC
NzIyQyAvKiBERkdDb21tb25EYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjM4QjAxODE3Q0ZF
NzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
MzhCMDFBMTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbk1vZGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGM0IzQTFCMTUzRTY4RjQwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCRTBGNzMxNkMxREIwNTAwODJDNUU4IC8qIERG
R0NQU1JldGhyZWFkaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDg5Q0Y2MTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMkZDNzczMTZFMTJGNzQwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY4RjJCOUExNzJGMDUwMTAwN0RCREE1IC8qIERGR0Rlc2lyZWRJ
ZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTczRTEzMzExNzk2MjRDRDAwRTRERUE4
IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyQzBG
N0NFMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGRTg1MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2lu
dHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdE
ZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyOTgxRkREMTdCQUZG
NDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZEODFBRDMxNTRGQjRGMDAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMUUzQTQ3MTUzNENCQjkwMDBGOTQ1NiAvKiBERkdEb3VibGVG
b3JtYXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEM0M4MjgxNDExNUQ0RjAwRkQ4MUNC
IC8qIERGR0RyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2NkUxNkMxNERGM0YxNjAwQjdC
MkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDlBMjk2MTdBMEJDNzQwMEVF
MjYxOCAvKiBERkdFZGdlRG9taW5hdGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzk4NkQ1NzE3
QTBCQjFFMDBBOTVERDAgLyogREZHRWRnZVVzZXNTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGQkMwQUU4MTQ5NkM3QzcwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTc4QTk3NzUxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXpl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdCRkYzQzAxNzk4Njg5NDAwMDJGNDYyIC8qIERGR0Zp
bHRyYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3OEE5Nzc3MTc5NzM4QjgwMDlE
Rjc0NCAvKiBERkdGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkJEQzE2MTUxQzVE
NEYwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlEMzM5
NzE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmggaW4gSGVhZGVycyAqLywKKwkJCQlB
N0Q4OUNGODE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTg2RUM5REM2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODZFQzlEQzgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjJGQ0NGQTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhT
YWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjE0RTIxMTgxMjU3MEIwMDlCNkI0RCAv
KiBERkdJbmxpbmVDYWNoZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjE0RTIzMTgx
MzA5NTUwMDlCNkI0RCAvKiBERkdJbmxpbmVDYWNoZVdyYXBwZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBNzA0RDkwNjE3QTBCQUE4MDA2QkE1NTQgLyogREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkJEQzIxMTUxRTgwM0IwMENEODkxMCAvKiBE
RkdJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzAwQjdDMThBQjFCMTQwMEE2
RDcyRSAvKiBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZDOTdGM0UxODIwMjExOTAwMkM5QjI2IC8qIERGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUEwQTM0MTcwRDQwQkYwMEJCNzIyQyAv
KiBERkdKSVRDb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkVDOURDQzEzMjhERjgyMDAyQjJB
RDcgLyogREZHSklUQ29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3OEE5Nzc5MTc5NzM4
QjgwMDlERjc0NCAvKiBERkdKSVRGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzk3
RjQwMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdKdW1wUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3M0E1MzVCMTc5OUNENUQwMDE3MEMxOSAvKiBERkdMYXp5SlNWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQTdEOUEyOTgxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0xJQ01QaGFzZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODlDRkMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0xpdmVu
ZXNzQW5hbHlzaXNQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGMEYxOUIxNkI3MjlGQTAw
NURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzY3QjVC
NjE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE3MDREOTA3MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdNZXJnZU1vZGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkJEQzQ1MTUyMjgwMUIwMENEODkxMCAvKiBERkdNaW5p
ZmllZEdyYXBoLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJFODkyRDE2RDAyQkFGMDA5RTRGRDIg
LyogREZHTWluaWZpZWRJRC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQkRDNDYxNTIyODAyMDAw
Q0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTczNzgxMEUx
Nzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdp
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05v
ZGVUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkVDOUREMDEzMjhERjgyMDAyQjJBRDcgLyog
REZHT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODlDRkUxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGRDgyRTU3MTQxREFGMTAwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVh
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIg
LyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkw
QzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkZCOTIxQzE2RDAy
RjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRD
b21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3
RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
NENFRDVGMThDRUE3QUIwMDgwMkZFMCAvKiBQb2x5bW9ycGhpY0dldEJ5SWRMaXN0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjIzNUJFRTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdFByZXBh
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkZGQzk1QzE0RUY5MEFGMDBDNzI1MzIgLyog
REZHUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3OEE5NzdCMTc5NzM4QjgwMDlERjc0NCAv
KiBERkdQbGFuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkJFMEY3NTE2QzFEQjBCMDA4MkM1RTgg
LyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkZG
Qzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTg2RUM5REQxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3Rl
ckJhbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjY2RUNEMTgzNkIzN0UwMEQwMTdGMSAvKiBE
RkdSZXN1cnJlY3Rpb25Gb3JWYWxpZGF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
MkZDQ0ZDMThBNjAwNzAwMDFBMjdGOCAvKiBERkdTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE3N0E0MjQzMTdBMEJCRkQwMEE4REI4MSAvKiBERkdTYWZlVG9FeGVjdXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBNzQxMDE3RjE3OURBRjgwMDAyRUI4QkEgLyogREZHU2FuZVN0cmluZ0dl
dEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkZDQ0ZEMThB
NjAwNzAwMDFBMjdGOCAvKiBERkdTY2FubmFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2RUNB
M0ZBMTMyREYyNUEwMDJCMkFENyAvKiBERkdTY29yZUJvYXJkLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjFFM0E2NzE1M0EyMUUyMDAwRjk0NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEZGQjkyMUQxNkQwMkYzMDAwNTVBNURCIC8qIERGR1Nsb3dQ
YXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkVDOUREMzEzMjhERjgyMDAyQjJB
RDcgLyogREZHU3BlY3VsYXRpdmVKSVQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDg5RDAwMTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGQzIwQ0JBMTg1NTZBMzUwMEM5RTk1NCAvKiBERkdTU0FMb3dlcmluZ1BoYXNlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjlGQjRGNTE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlv
dXRQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0RjI5RTAxOEI2QUQxQzAwNTdCQzE1IC8q
IERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyQUNDRjNERjE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkMyMENCNjE4NTJFMkM2MDBDOUU5NTQgLyogREZH
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2Mzk0NzgxNURD
RTM0QjAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGMkZDQ0ZGMThBNjAwNzAwMDFBMjdGOCAvKiBERkdUaHJlYWREYXRhLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRkQ4QTMyODE3RDUxRjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEOEEzMkExN0Q1MUY1NzAw
Q0EyQzQwIC8qIERGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkQ4QTMyQzE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExGb3JPU1JFbnRy
eURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2Mzk0
M0YxNUM3NUYxOTAwNkE1OTdDIC8qIERGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGQkUwRjc3MTZDMURCMTIwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjM0QjE0QTE2RDQyMDEzMDAxQ0RBNUEgLyogREZH
VXNlS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZGIC8q
IERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCREM0NzE1MjI4MDI1MDBDRDg5
MTAgLyogREZHVmFsdWVSZWNvdmVyeU92ZXJyaWRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJC
REM0ODE1MjI4MDI5MDBDRDg5MTAgLyogREZHVmFsdWVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNjIwMTc0MTQzRkNEMzMwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJpYWJs
ZUFjY2Vzc0RhdGFEdW1wLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCREM0OTE1MjI4MDk2MDBD
RDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQkRDNEIx
NTIyODA5RDAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGRkZDOTYwMTRFRjkwQkQwMEM3MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxv
Y2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzk3RjQyMTgyMDIxMTkwMDJDOUIy
NiAvKiBERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RkRCMkNFODE3NDgzMEEyMDA3QjNDMUIgLyogREZHV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGRjQyNzMxMTU4RUJENTQwMDRDQjlGRiAvKiBEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTlFNDVBMjQxOEExQjI1OTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJz
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5RTQ1QTI2MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNv
ZGVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMzA0NjA3MEUxRjQ5N0YwMDMyMzJDRiAv
KiBFcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMwMkU5MEQwRTE4MzlEQjAwMEY5Mjk3IC8q
IEVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQjU4QzE1MTg3QjhCMTYw
MDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMDJF
OThEMEUxODNFMzgwMDBGOTI5NyAvKiBFcnJvckluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzAyRTkwRjBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk2OUEwNzk4MEVEMUQzQUUwMEYxRjY4MSAvKiBFdmFsQ29kZUNhY2hlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNTQ5ODIwNDE4OTFEMEIwMDA4MUU1QjggLyogRXZlbnRMb29wLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQwMDBFMTZGNUNEMDBCMzQ0NjAgLyogRXhjZXB0aW9u
SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZDQUZFRTMxMDM1RERFNjAwMjhBNjA5IC8q
IEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NjZCNDRGMEVFOERDRDEwMDk1MThD
QSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjU2QTFEMzE1
MDAwRjM1MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYzQUM3NTQxODhFNUVDODAwMzIwMjlGIC8qIEV4aXRpbmdKSVRUeXBlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkIxMDU4NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhpdEtpbmQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZv
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQz
MkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyog
RmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjI0RTU0MzE3RUE5RjU5MDBBQkIy
MTcgLyogRlBSSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEQjJDQzkxNzNEQTUyMDAwN0Iz
QzFCIC8qIEZUTEFiYnJldmlhdGVkVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUEwQTA4
MTcwNTEzREIwMEJCNzIyQyAvKiBGVExBYmJyZXZpYXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNTNDRTA4QTE4QkMyMUMzMDBCRURGNzYgLyogQ29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDg1MzI4MTg3REZERUMwMDgz
QjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQTBB
MEExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZFQTBBMEMxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRTk1RjdBMThCNTY5NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkFDOTIyQkMxOEExNjE4MjAwM0NFMEZCIC8qIEZUTERX
QVJGRGVidWdMaW5lSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMzVCRDQxNzE3OEUxQzAw
NjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMzVCRDYx
NzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMjM1QkQ3MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRMaXN0
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIzNUJEOTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhp
dFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIzNUJEQjE3MTc4RTFDMDA2
OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTNDRTA4NjE4QkMx
QTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdG
Mjk5NkMxN0EwQkI2NzAwMTA0MTdBIC8qIEZUTEZhaWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
RUEwQTJDMTcwQjY2MTkwMEJCNzIyQyAvKiBGVExGb3JtYXR0ZWRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEZEOEEzMUExN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29k
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc4QTk3N0YxNzk3MzhENTAwOURGNzQ0IC8qIEZUTEdl
bmVyYXRlZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjI1RjFBRTE4MTYzNUYzMDA1
MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjI1RjFCMDE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkVBMEEyNDE3MDk2MDY5MDBCQjcyMkMgLyogRlRMSW50cmluc2ljUmVwb3Np
dG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQTBBMEUxNzA1MTNEQjAwQkI3MjJDIC8qIEZU
TEpJVENvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3OEE5NzgxMTc5NzM4RDUwMDlERjc0NCAv
KiBGVExKSVRGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNkIxQ0I2MTg1RkM5RTkw
MDg0NUQ5NyAvKiBGVExKU0NhbGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOEYyQjk2MTcyRTA0
QTMwMDdEQkRBNSAvKiBGVExMaW5rLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkNFRkFFMDE4MDcz
OEMwMDA0NzJDRTQgLyogRlRMTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUEwQTEw
MTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvTExWTS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTdEODlEMDIxN0EwQjkwNDAwNzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRDhBMzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4
aXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjM1QkRFMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExP
U1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIzNUJFMDE3MTc4
RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RkVBMEExMTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMT3V0cHV0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNkIxQ0M0MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zm
c2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkNFRkFBQzE4MDRDMTNFMDA0NzJDRTQgLyogRlRM
U2F2ZVJlc3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjVGMUIyMTgxNjM1RjMwMDUyMkYz
OSAvKiBGVExTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjVGMUI0MTgxNjM1
RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
OUQzMzlCMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGRUEwQTEyMTcwNTEzREIwMEJCNzIyQyAvKiBGVExTdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTdGQ0MyNkQxN0EwQjZBQTAwNzg2RDFBIC8qIEZUTFN3aXRjaENhc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMjM1QkUyMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRUEwQTIwMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExUeXBlZFBvaW50
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNkIxQ0M2MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExV
bndpbmRJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIzNUJFNDE3MTc4RTFDMDA2OTBDN0Yg
LyogRlRMVmFsdWVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGREIyQ0NBMTczREE1MjMw
MDdCM0MxQiAvKiBGVExWYWx1ZUZyb21CbG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1QTYy
ODQxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMDMzMkM2MThCNTNGQTkwMDVGOTc5QSAvKiBGVExXZWlnaHQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMDMzMkM4MThCNTQ2RUMwMDVGOTc5QSAvKiBGVExXZWlnaHRlZFRhcmdldC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY2NjZFQzExODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxp
dmVuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQwNDBFMTZGNUNEMDBCMzQ0NjAgLyog
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGMEYxQTAxNkI3MkEx
QTAwNURGOTVCIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMThDNDA1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRT
dHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2QUMxN0I2QjUzRjAwQTdBRTNG
IC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZBRDE3
QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50
ZWRTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NkFGMTdCNkI1NDUwMEE3QUUzRiAvKiBH
Q0luY29taW5nUmVmQ291bnRlZFNldElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyMjM5
RDFCMTYyNjJCREQwMDVBQzVGRCAvKiBHQ1RocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzIx
MTIyRTIxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTUzMjQzOTQxODU2OTcwOTAwMkVENjkyIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWlu
c3BlY3Rvci1qc29uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RTAxN0I2QjVBQjAwQTdB
RTNGIC8qIEdlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxRkU1
MUMxOTIyQTNCQzAwNjk4N0M1IC8qIEFib3J0UmVhc29uLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjJCNjZFMTE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY5MzMyQTAxNENBN0RDRDAwODVGM0M2IC8qIEdldEJ5SWRT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMDMzMkM0MThCMDE3NjMwMDVGOTc5QSAvKiBH
ZXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyNEU1NDQxN0VBOUY1OTAwQUJC
MjE3IC8qIEdQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MkUzMTM0MTM0RkYwQTYwMEFG
QURCNSAvKiBIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyODMxOTAwMTZGRTRCN0QwMDE1
N0JGRCAvKiBIYW5kbGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzI4MzE5MDIxNkZFNTMz
RTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYw
QjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxNDJFMzEzNjEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU2V0LmggaW4gSGVhZGVycyAqLywK
KwkJCQkxNDJFMzEzODEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suaCBpbiBIZWFkZXJz
ICovLAorCQkJCTE0NzgyOTdCMTM3OUU4QTgwMEE3QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMTRCQTdBOTgxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUMyQzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9u
U2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5OCAvKiBI
ZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFD
NjcgLyogSGVhcFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjREMzFFMzE2MUNE
Njk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyRTUy
NkJFMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
NDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQTVGRDAwNzYxODlCMDM4QzAwNjMzMjMxIC8qIElkZW50aWZpZXJzRmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk2MjMxRTkxOEQxODA0MjAwQzAzRkRBIC8qIElu
c3BlY3RvckpTQmFja2VuZENvbW1hbmRzLmpzIGluIEhlYWRlcnMgKi8sCisJCQkJQzI1RjhCQ0Ux
NTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZCN0YzOTkxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5k
ZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQg
LyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQ0VGQUNDMTgwNUU3NTUw
MDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTVBPU0lYLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4
QzQxMDBFMTZGNUNEMDBCMzQ0NjAgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTUxM0U1QjgxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNTE0QjJDMzE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3Jp
cHRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTEzRTVCRTE4NUJGQUNDMDA3RTk1QUQgLyog
SW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTEzRTVDQjE4NUY5NjI0
MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NTg0MEUyMTE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE1MTNFNUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU4NDBFMjkxODdDQTVFNjAwODQzQjEwIC8qIGlu
bGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5IGluIEhlYWRlcnMgKi8s
CisJCQkJMEYyNEU1NTYxN0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTlFNDVBMjcxOEExQjI1OTAwMjZEODhGIC8qIElucHV0Q3Vyc29y
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y3RjE4NDAzNjJDMDBCRkNFMjcgLyogSW5zcGVj
dG9yQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNF
MjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NG
N0QxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBNUZEMDA4MjE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTdEMjNFNjE4OTBDRUJGMDAzMUM3RkEgLyog
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVEMEExQkIxODYy
MzAxQjAwQzdCNDk2IC8qIEluc3BlY3RvckVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNTk0NTU5NTE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9y
SlMuanNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzg4MTg1NjgzMzUwMDJFRDY5MiAvKiBJ
bnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQz
OEExODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODYwNkRERUExOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM4QzE4NTY4MzM1MDAyRUQ2OTIgLyog
SW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1MEU0QjYyMTg4
MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZh
bHVlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIElu
c3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzQjE3QURCNUYzMDA1QUIxNzQg
LyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGM0MxN0FEQjVGMzAwNUFC
MTc0IC8qIEludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjNBMTdBREI1RjMw
MDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3ODg1M0ZBMTc5NzI2
MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzExNjY3QjBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMTQyOUQ3N0MwRUQyMEQ3MzAwQjg5NjE5IC8qIEludGVycHJldGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk4NjBCRDgwMTE0OEVBNkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQxMzBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlw
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFT
Y3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0MTUwRTE2
RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxNDI5RDkzMDBFRDIyRDcwMDBCODk2MTkgLyogSklULmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYwNzc2QkYxNEZGMDAyQjAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkFGN0VGRTE2NUJBOTFGMDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2QjREIC8q
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkNDODVBMTBF
RTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyNEU1
NEQxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNzY2RDMxMTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxNEM1MjQyQjBGNTM1NUU5MDBCQTNEMDQgLyogSklUU3R1YnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjY4MzVFMTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVi
c0FSTS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNjgzNUYxNzQzNDNDQzAwQTMyRTI1IC8qIEpJ
VFN0dWJzQVJNdjcuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjY4MzYxMTc0MzQzQ0MwMEEzMkUy
NSAvKiBKSVRTdHVic1g4Ni5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNjgzNjAxNzQzNDNDQzAw
QTMyRTI1IC8qIEpJVFN0dWJzWDg2XzY0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBRERCMUY2MzE4
RDc3REJFMDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdB
NEFFMTAxNzk3M0I0RDAwNTYxMkIxIC8qIEpJVFN0dWJzWDg2Q29tbW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjVFRjkxRjE2ODc4RjdEMDAzRTVDMjUgLyogSklUVGh1bmtzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkM3MTJFMzE3Q0Q4NzkzMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NkY1NEEzMTNCMjhBQUIw
MEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDE2
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTg0
MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTc2MTQwRDIxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1l
bnRzSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDE3MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKU0FycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZFMzE3QjZCNUFCMDBBN0FF
M0YgLyogSlNBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUNBQTlBMjMxOEY0QTIy
MDAwMEEzNjlEIC8qIEpTR2xvYmFsT2JqZWN0UHJvZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYyQjY2RTUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RTcxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJy
YXlCdWZmZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NkU5MTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2
RUExN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTdCREFFQ0IxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0MTgwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQmFzZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMTQwRDE3RDcwRThBRDRBOTAwMENEMTdEIC8qIEpTQmFzZVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2RkE5RTkyMTQyQkJCMkUwMDE3NzNCNyAvKiBK
U0JvdW5kRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDE5MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThD
NDFBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDMThDNDFCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQzE4QzQxQzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTkxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzExNjdEQTBFMTlCQ0M5
MDA4MDY2REQgLyogSlNDZWxsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjk3NDk3MTE2ODdBREU0
MDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxREQ4NEEx
OEE5NDVCRTAwMjZGM0ZBIC8qIEpTQ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThD
NDJCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NKU1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NjVBMzBGMTEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUJDMThDNDFEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NsYXNzUmVmLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4NkUzQzYxMzE2N0JBQkQ3MDA2RDc2MEEgLyogSlNDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk4NkUzQzYxNzE2N0JBQkVFMDA2RDc2MEEgLyogSlNDb250ZXh0SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDFFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBK
U0NvbnRleHRSZWYuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0OENEMUQ4MTA4Q0Y5MDIwMDgxNjND
NiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzIwMjhCODE3
OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjc1NzZEMzE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NkVDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFW
aWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQ0FBOUExRjE4RjQ5OTdGMDAwQTM2OUQgLyogSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RUUxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3
ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFj
cm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNG
bG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NkYwMTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0MUYwRTE2RjVD
RDAwQjM0NDYwIC8qIEpTRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MjAyOEJBMTc5
NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYyQjY2RjExN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjJCNjZGMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RjMxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZGNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZGNTE3
QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMkI2NkY2MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDIx
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0dsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTVGRDAwODYxODlCMUI3RTAwNjMzMjMxIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTdEMjNFQTE4OTFCMDc3MDAz
MUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzc1NkZDOTBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCBp
biBIZWFkZXJzICovLAorCQkJCUE1MTAwN0MxMTg3Q0MzQzYwMEIzODg3OSAvKiBKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1MEU0QjY0MTg4
MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0
RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVB
RCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUxM0U1QzIx
ODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjJCNjZGODE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQxNkFycmF5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZGOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQzMkFy
cmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZGNzE3QjZCNUFCMDBBN0FFM0YgLyogSlNJ
bnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NkM1MTc2MTE4Mjc0OEQwMDcxNUIwNSAv
KiBKU0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUwM0ZBMUUxODhFMEZCMDAw
MTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQzI1RDcwOUMxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyQTRCQjdGMzE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcwMDg3NDIxN0NCRThFQjAwQzNFNjQzIC8q
IEpTTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzRERUY5NjE4MkQ5OTE0MDA1MjJDMjIgLyog
SlNNYXBJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU4NDBFMkIxODdDQTc1QjAwODQz
QjEwIC8qIGpzbWluLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJMTQ4NzRBRTQxNUVCREU0QTAwMkUz
NTg3IC8qIEpTTmFtZVNjb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQyNDBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDI1MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU09iamVjdFJlZi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcyODBBMjgx
MTU1N0UzMDAwRDU2OTU3IC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTdGOTkzNUYwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDODdDREI5MTA3MTJBRDQwMDA2MTRDRiAvKiBKU09OT2JqZWN0Lmx1dC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTUzNEFBRkIwRTVCN0E5NjAwQjhBNDVCIC8qIEpTUHJvZmlsZXJQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzE4NEUxQjE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQ
cm9taXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzE4NEUyMzE3QkVFMjQwMDA3Q0I2M0EgLyog
SlNQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMDA4Q0RCMTg3MTI0
QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0Mw
MDhDRDMxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0MxODRFMUYxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MwMDhDREYxODcxMjU4RDAwOTU1QzI0IC8qIEpTUHJvbWlz
ZVJlYWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjI1NTNEMjE2MTM2RTFBMDA5RjE3RDAg
LyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEy
IC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQyNjBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0ODc0QUU2MTVF
QkRFNEEwMDJFMzU4NyAvKiBKU1Njb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0MwQzRBQzE2
ODEwMzAyMDAxNzAxMUQgLyogSlNTY3JpcHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjkxOUQxMTE1N0YzMzJDMDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTcyOTlEOUUxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNzkwREQ3MDE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0NUUwRTE2RjVDRDAwQjM0NDYwIC8qIEpT
U3RhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QzFFQUYwMTc5ODdBQjYwMDI5OURCMiAvKiBK
U1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0MjcwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkU4NTUzOTExMUI5OTY4MDAx
QUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyNjAwQjVBNzE1
MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
MThDNDI4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJv
bFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQyQTBFMTZGNUNEMDBCMzQ0
NjAgLyogSlNUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZGQjE3QjZCNUFCMDBBN0FF
M0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJC
NjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQjY2RkYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTY1MDdEMjlFMEU4NzFFNUUwMEQ3RDg5NiAvKiBKU1R5cGVJbmZv
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjcwMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50
MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY3MDMxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NzAwMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU1VpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NzAxMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NkUzQzYxMjE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODZFM0M2MUIxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkMxOEM0MkMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFsdWVSZWYuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUJDMThDNDJEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1ZhcmlhYmxlT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkUzQzYxNTE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWaXJ0
dWFsTWFjaGluZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZFM0M2MUQxNjdCQUJFRTAwNkQ3NjBB
IC8qIEpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdDQTNB
RTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc0
ODJFOTMxMTZBN0NBRDAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNzQ4MkI5MzExNjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0
TWFwUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ0MjU2NjIxNUVERTk4RDAwNjZB
NDlCIC8qIEpTV2l0aFNjb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkUzQzYxOTE2N0JBQkVF
MDA2RDc2MEEgLyogSlNXcmFwcGVyTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQyRTBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNXcmFwcGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlC
Q0ZEOEM5MzBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNzJGRkQ2NDEzOTk4NUE4MDBFNTM2NUEgLyogS2V5d29yZExvb2t1cC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTY5QTA3MkEwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5NjAwOTdBNjBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ1MjBFMTZGNUNEMDBCMzQ0NjAgLyog
TGVnYWN5UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDMxMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBMZXhlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0
NDYwIC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZEM0IzQzMxMDE1OUQ3RjAw
Mjg2NUU3IC8qIExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDMxNzM4MTQ2QkFD
NjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTJF
QTZCMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZFMjBDRTlFMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERh
dGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzhCMDEyMTdDRjA3ODMwMEIxNDREMyAvKiBMTElu
dEVudHJ5cG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENCMTRCQkIx
NzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFRDI4N0IyMTVFQzlBNTcwMERBODE2MSAvKiBMTEludE9wY29kZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGQ0VGQUNFMTgwNUU3NTUwMDQ3MkNFNCAvKiBMTFZNQVBJLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRkNFRkFDRjE4MDVFNzU1MDA0NzJDRTQgLyogTExWTUFQSUZ1
bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdFNUFCMzgxNzk5RTRCMjAwRDI4MzNEIC8q
IExMVk1EaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQ0VGQUQzMTgwNUVEQ0Mw
MDQ3MkNFNCAvKiBMTFZNSGVhZGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQyRTMxMzkxMzRG
RjBBNjAwQUZBREI1IC8qIExvY2FsLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDJFMzEzQTEzNEZG
MEE2MDBBRkFEQjUgLyogTG9jYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0Mzcw
RTE2RjVDRDAwQjM0NDYwIC8qIExvb2t1cC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0Qx
NEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTE0QjcyM0I4MTJEN0RBNkYwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZEM0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3Jv
QXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3
MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZBREQxNDYw
RkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg2M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCBp
biBIZWFkZXJzICovLAorCQkJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2QUU2NEE5MTM1RTVFMUMwMDk2MzAxMiAv
KiBNYWNyb0Fzc2VtYmxlclNINC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYwMTYxRTQwRjNBODND
MTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjAx
NjFFNTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg2MDE2MUU2MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5M0I0QUExOEI5MkM0RDAwMTc4QTNGIC8qIFB1
dEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzAwODczQTE3Q0JFODUzMDBDM0U2
NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3ODUwN0Q3MTdDQkM2
RkQwMDExRjZFNyAvKiBNYXBEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzRERUY5MjE4MkQ5
OTE0MDA1MjJDMjIgLyogTWFwSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTc0REVGOTQxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNzAwODczRTE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFya2Vk
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDJENkYwOTEzNTM5QTI4MDBCMDJFODYg
LyogTWFya2VkQmxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MTQ0OENCMTNBMTc2RUMwMEY1
QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTREMkYzREIxMzlG
NEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDJENkYx
MjEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjEy
RTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMThDNDNDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk5MDIxM0UzRTEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEZCNTQ2N0IxNEY1QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1
NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLAorCQkJCTg2QzU2OEUyMTFBMjEzRUUw
MDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkVCRjMwMDE1
NjBGMDZBMDA4RTkyMjIgLyogTmFtZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NkVCRjMwMjE1NjBGMDZBMDA4RTkyMjIgLyogTmFtZUluc3RhbmNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NkVCRjMwNDE1NjBGMDZBMDA4RTkyMjIgLyogTmFtZVByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkMwMkU5MTEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMDJFOTEzMEUxODM5REIwMDBGOTI5NyAvKiBO
YXRpdmVFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlDQzBCNjMxOEJFOTk1
MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVycyAqLywK
KwkJCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0cnVjdG9ycy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0VGRjAwNjQwRUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQzE4QzQzRjBFMTZGNUNEMDBCMzQ0NjAgLyogTm9kZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk5RTQ1QTI4MThBMUIyNTkwMDI2RDg4RiAvKiBOb25kZXRlcm1pbmlz
dGljSW5wdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDQxMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBOdW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1NzgwQTIxOEZFMUU5
ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDQyMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMThDNDQzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJPYmplY3QuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDMThDNDQ0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk5Q0MwQjYyMThCRTk5NDYwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9y
UmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJMTQyRDM5MzkxMDNF
NDU2MDAwN0RDQjUyIC8qIE51bWVyaWNTdHJpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkYz
RUVCRDE2OENERTkzMDA3N0I5MkEgLyogT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg2RjNFRUJGMTY4Q0RFOTMwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMTRDQTk1OEQxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ0NTBFMTZGNUNEMDBC
MzQ0NjAgLyogT2JqZWN0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDQ2
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPYmplY3RQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTY5QTA3OUIwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYyQkRDMkMxNTFGREU5MTAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBNzA0NDdFQTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ0ODBFMTZGNUNEMDBCMzQ0NjAgLyogT3BlcmF0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDRCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBQYXJz
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzMDUyQzM1MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJz
ZXJBcmVuYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDQ0FFNDUxNkQwQ0Y3NDAwRDBDNjVCIC8q
IFBhcnNlckVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzdGMTgyNTE2NDE5MkM3MDA2NDBB
NDcgLyogUGFyc2VyTW9kZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1MzAzRDY0MTQ0N0I5RTEw
MEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzRCMTRDMTZE
NDNFMEQwMDFDREE1QSAvKiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGOUZDOEM0MTRFMUI2MDAwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5
SWRMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjk4MjA2MTE2QkZFMzgzMDAyNDBEMDIgLyog
UHJlY2lzZUp1bXBUYXJnZXRzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4Njg5MTZCMDE1NUYyODYz
MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDUwMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkM5N0YzNjE4
MjAyMEQ3MDAyQzlCMjYgLyogUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk1Q0Q0NTc3MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxl
R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ1MTBFMTZGNUNEMDBCMzQ0NjAg
LyogUHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUE1MTY2QUQzNTEwMDBG
NUJBMyAvKiBQcm9maWxlckJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCOTE2
NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMTM5MTJBMTY3NzFDMzYwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJBMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckNv
bXBpbGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCQjE2NkFEMzYwMDAwRjVCQTMg
LyogUHJvZmlsZXJDb21waWxhdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjcyOUJD
MTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGRjcyOUJEMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckRhdGFiYXNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCRTE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJF
eGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjE5MENBRDE4OUQ4MkY2MDAw
QUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZG
NzI5QkYxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkY3MjlDMDE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW5TdGFjay5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZCMTA1OEMxNjc1NDgzMzAwRjhBQjZFIC8qIFByb2ZpbGVyT1NS
RXhpdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCMTA1OEUxNjc1NDgzQTAwRjhBQjZFIC8qIFBy
b2ZpbGVyT1NSRXhpdFNpdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMTM5MTJDMTY3NzFDM0Qw
MDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNo
VGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2MTU4QUIzMTU1QzhCNDAwMEI0NUM5QyAvKiBQ
cm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDU0MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzE2OEMxNUEz
QjIzNTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzg1
RjZCQzE4QzU1M0ZFMDBGMTA2MjYgLyogU3BpbGxSZWdpc3RlcnNNb2RlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCQzE4QzQ1NTBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvcGVydHlTbG90LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkI3RjM5QzE1RUQ4RTQ2MDBGMTY3QjIgLyogUHJvcGVydHlTdG9yYWdl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvdGVj
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3Rv
dHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8q
IFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMENENEMyMTVGMUE2MDcwMDMy
RjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOUZDOEM1
MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDdCODQ2
MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkyQUFEOTY0QTE4NTY5NDE3MDAxRjkzQkUgLyogUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRkY2MEFDMjE2NzQwRjgzMDAwMjk3NzkgLyogUmVkdWNlV2hp
dGVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZBN0E4RUMxOEI0MTNDODAwNTIzNzFEIC8q
IFJlZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0NUEwRTE2RjVDRDAwQjM0NDYwIC8qIFJl
Z0V4cC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJl
Z0V4cENhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0QyMDJDMjBFMTcwNkE3MDAyQzdFODIg
LyogUmVnRXhwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDRDIwMkQ2MEUxNzA3
MDgwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExNzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovLAor
CQkJCUJDMThDNDVCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUJDMThDNTJDMEUxNkZDRDIwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QubHV0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQ0QyMDJDNDBFMTcwNkE3MDAyQzdFODIgLyogUmVnRXhwUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjBCMjU5OTE3MDY1MzYyMDBDMjFGNEUgLyog
UmVnaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ1RDBFMTZGNUNEMDBCMzQ0NjAgLyog
UmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk2OUEwNzJCMEVEMUNFNjkwMEYxRjY4MSAv
KiBSZWdpc3RlcklELmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjZCMUNCQTE4NjEyNDRDMDA4NDVE
OTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjZC
MUNCRTE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkMzMTQxMjE4MTQ1NTkxMDAwMzMyMzIgLyogUmVn
aXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1N0QyM0VFMTg5MUI1NTQwMDMxQzdGQSAv
KiBSZWd1bGFyRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCN0YzOUQxNUVEOEU0
NjAwRjE2N0IyIC8qIFJlamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RTgxODIzNDBC
MzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1
RUExODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1QkExNUVCMTgyMzQwQjQwMEE4MkU2OSAv
KiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTVCQTE1RUQxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjRFNTUxMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBh
dGNoLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkQzQjNDNDEwMTU5RDdGMDAyODY1RTcgLyogUmVw
YXRjaEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY5RUJDQjcwRThDNkQ0QTAwODcyMkND
IC8qIFJlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyMkIzMUI5MTQwNTc3RDcwMERC
NDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MjlEODg2MEVE
MjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjRF
NTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRC
cmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUZEMDA2RTE4OUIwMEFBMDA2MzMyMzEg
LyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUZEMDA3MDE4OUIwMEFB
MDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNThDMDI0
MjE4RTRBNDFBMDAwMzJCQzUgLyogSlNDb250ZXh0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTVGRDAwN0UxODlCMEI0QzAwNjMzMjMxIC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBp
biBIZWFkZXJzICovLAorCQkJCUE1MDNGQTIyMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHREZWJ1
Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTAzRkEyNjE4OEVGRkZEMDAxMTBGMTQg
LyogU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NUQ5M0E2MTg1MDEy
QTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1
NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNzkwREQ2QzE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JD
b25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3
IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzI5OURBMjE3
RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkFF
NjRBQTEzNUU1RTFDMDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjJCNjcwNTE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTE0QkE3OEYxMTNBQUI4OEYwMDVCN0MyQyAvKiBTbG90Vmlz
aXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzIxNjBGRTcxNUY3RTk1RTAwOTQyREZDIC8qIFNs
b3RWaXNpdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcwOUYyRjAxN0EwQUMwNDAw
NTEyRTk4IC8qIFNsb3dQYXRoQ2FsbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTMzMDQwMDQwRTZB
NzQ5NDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0
NjQwRTE2RjVDRDAwQjM0NDYwIC8qIFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
MThDNDYzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCBp
biBIZWFkZXJzICovLAorCQkJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92
aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2
N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Mzg2NTU0
MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFsaXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQUM3NTIxODNFQTEwNDAwMzIwMjlGIC8qIFN0YWNrQWxp
Z25tZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0MxRUFGMjE3OTg3QUI2MDAyOTlEQjIgLyog
U3RhY2tWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNERGMDREQTE2QjM5OTZEMDAxNkE1
MTMgLyogU3RhdGljUHJvcGVydHlBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRDQTk1
OEIxNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE3MzBCNjEyMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmlu
Z0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ2ODBFMTZGNUNEMDBCMzQ0
NjAgLyogU3RyaW5nT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ2QTBFMTZGNUNE
MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDJFMzEz
QjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDU3MjI4
NjE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkQyQzkyNDE2RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzJGRTE4QTQxNkJBRUM0MDAwQUYzMDYxIC8qIFN0cnVjdHVy
ZVJhcmVEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjBCQTkyRDE2QkIxQzE1MDBCM0FFQTIg
LyogU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjkzMzJB
NTE0Q0E3REREMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkw
Rjc2NkQzOTE1QUU0QTFGMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2lu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNDRjBEMDgwRUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVj
dHVyZVN0dWJJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzkwNDE0ODBFQjkyNTA5MDBGRTI2
RkEgLyogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkRG
NDQzMDE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMThDNDZCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTeW1ib2xUYWJsZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTc4NEEyNjQxMUQxNjYyMjAwNTc3NkFDIC8qIFN5bnRheENoZWNrZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMjRFNTRGMTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTJDMTdDMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVu
bmVyVXRpbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNTcyRDRGMTY4NzlGREQwMEU1N0ZCRCAv
KiBUaHVua0dlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTczODY1NTYxMTg2OTdCNDAw
NTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQxNDQ4Q0Qx
M0ExNzgzNzAwRjVCQTFBIC8qIFRpbnlCbG9vbUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQjY3MDYxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlBZGFwdG9y
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY3MDgxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVk
QXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjRCOTREQzE3QjlGMDc1MDBE
RDAzQTQgLyogVHlwZWRBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NzA5
MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYy
QjY3MEIxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkY0Mjc0QjE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkY0Mjc0MTE1OEVCRThEMDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZGNDI3NDIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9leHRlcm4uaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRjQyNzQ0MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfaW5w
dXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjQyNzQ4MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlz
ODZfc3luLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY0Mjc0OTE1OEVCRTkxMDA0Q0I5RkYgLyog
dWRpczg2X3R5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0U1QUIzOTE3OTlFNEIyMDBEMjgz
M0QgLyogVURpczg2RGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUY0MTE3
QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2Njcz
OUQzMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3QThBRjQyMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTdBOEFGM0YxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE3QThBRjQwMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRB
cnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QjYwMTgyMTYzOUZE
MkEwMDM3MkJBMyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYy
RTg5MkMxNkQwMjhBRDAwOUU0RkQyIC8qIFVudXNlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjkxODFDNzE4NDE1Q0E1MDA1N0I2NjkgLyogVmFyaWFibGVXYXRj
aHBvaW50U2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlDNUU1RjE4RTM1RjVFMDBENDMxQzMg
LyogRlRMRFdBUkZSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0MjZBNDkxNDYwQ0JC
NzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0
MjAwRTE2RjVDRDAwQjM0NDYwIC8qIFZNLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTU5MzJBODE4
M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTRB
MzMyMDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTE0MkUzMTNDMTM0RkYwQTYwMEFGQURCNSAvKiBXZWFrLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxNEU4NEY5RjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0Jsb2NrLmggaW4gSGVhZGVycyAq
LywKKwkJCQkxNEJGQ0U2OTEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxNEY3MjU2NjE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxNEU4NEZBMjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0ltcGwu
aCBpbiBIZWFkZXJzICovLAorCQkJCTE0QkU3RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdDQTNBRTQxN0RBNDFBRTAwNjUzOEFGIC8qIFdl
YWtNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdDQTNBRUMxN0RBNTE2ODAw
NjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0NBM0FFNjE3REE0
MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQy
MEJFN0IxMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxNEU4NEZBMTE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMTQxNTAxMzMxNTRCQjEzRjAwNUQ4Qzk4IC8qIFdlYWtTZXRJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ3QTBFMTZGNUNEMDBCMzQ0NjAgLyogV2Vi
S2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0RDQjk3MzEyRTUxOTNGMDA5
MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTRFQzkwQzE4NjBE
NkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlD
MkI2RDc1MzE4QTMzNzkzMDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBv
cnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAv
KiB4eGQucGwgaW4gSGVhZGVycyAqLywKKwkJCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyog
WWFyci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3MDRCODUxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3MDRCODcxMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5
RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjcwNEI4QTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAorCQkJCTg2NzA0QjQzMTJE
QjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBF
bmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVU
YXJnZXQgc2VjdGlvbiAqLworCQkwRkNFRkFCNTE4MDVENjE2MDA0NzJDRTQgLyogbGx2bUZvckpT
QyAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlv
bkxpc3QgPSAwRkNFRkFCNzE4MDVENjE2MDA0NzJDRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxsdm1Gb3JKU0MiICovOworCQkJYnVpbGRQaGFzZXMg
PSAoCisJCQkJMEZDRUZBQjIxODA1RDYxNjAwNDcyQ0U0IC8qIFNvdXJjZXMgKi8sCisJCQkJMEZD
RUZBQjMxODA1RDYxNjAwNDcyQ0U0IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMEZDRUZBQjQxODA1
RDYxNjAwNDcyQ0U0IC8qIEhlYWRlcnMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJ
CSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IGxsdm1Gb3JKU0M7CisJ
CQlwcm9kdWN0TmFtZSA9IGxsdm1Gb3JKU0M7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEZDRUZB
QjYxODA1RDYxNjAwNDcyQ0U0IC8qIGxpYmxsdm1Gb3JKU0MuZHlsaWIgKi87CisJCQlwcm9kdWN0
VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuZHluYW1pYyI7CisJCX07CisJ
CTBGRjkyMkMzMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8g
PSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gMEZGOTIyQ0ExNEY0NkIxMzAwNDFBMjRFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovOworCQkJYnVp
bGRQaGFzZXMgPSAoCisJCQkJMEZGOTIyQzQxNEY0NkIxMzAwNDFBMjRFIC8qIFNvdXJjZXMgKi8s
CisJCQkJMEZGOTIyQzYxNEY0NkIxMzAwNDFBMjRFIC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOwor
CQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJNjU3ODhB
QUIxOEI0MEEzQjAwQzE4OUZGIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkJMEZGOTIy
RDMxNEY0NkIyRjAwNDFBMjRFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJ
bmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RJbnN0YWxsUGF0aCA9
IC91c3IvbG9jYWwvYmluOworCQkJcHJvZHVjdE5hbWUgPSBqc2M7CisJCQlwcm9kdWN0UmVmZXJl
bmNlID0gMEZGOTIyQ0YxNEY0NkIxMzAwNDFBMjRFIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJ
CX07CisJCTE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0geworCQkJaXNh
ID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5
MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAibWluaWRvbSIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxNDEyMTExRDBB
NDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLywKKwkJCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAy
NTUgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkxNDQwMDVDNzBBNTMzOEM2MDAwNUYwNjEgLyogSGVh
ZGVycyAqLywKKwkJCQk1REJCMTUyNDEzMUQwQkExMDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNj
cmlwdCAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2ll
cyA9ICgKKwkJCSk7CisJCQluYW1lID0gbWluaWRvbTsKKwkJCXByb2R1Y3ROYW1lID0gbWluaWRv
bTsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWlu
aWRvbSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7
CisJCX07CisJCTE0QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovID0geworCQkJ
aXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0QkQ1
OUQ2MEEzRThGQzkwMEJBRjU5QyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5h
dGl2ZVRhcmdldCAidGVzdGFwaSIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxNEJENTlC
QzBBM0U4RjkwMDBCQUY1OUMgLyogU291cmNlcyAqLywKKwkJCQkxNEJENTlCRDBBM0U4RjkwMDBC
QUY1OUMgLyogRnJhbWV3b3JrcyAqLywKKwkJCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyog
Q29weSBTdXBwb3J0IFNjcmlwdCAqLywKKwkJCQk1REFGRDZDRDE0NkI2QjZFMDBGQkVGQjQgLyog
SW5zdGFsbCBTdXBwb3J0IFNjcmlwdCAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJ
KTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gdGVzdGFwaTsKKwkJCXBy
b2R1Y3ROYW1lID0gdGVzdGFwaTsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNEJENTlCRjBBM0U4
RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5w
cm9kdWN0LXR5cGUudG9vbCI7CisJCX07CisJCTU1NDA3NTYyMThEQTU4QUQwMEVGRjdGMiAvKiBD
b21waWxlIFJ1bnRpbWUgdG8gTExWTSBJUiAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdl
dDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA1NTQwN0FDMzE4REE1OEFEMDBFRkY3RjIg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkNvbXBpbGUg
UnVudGltZSB0byBMTFZNIElSIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTU1NDA3NTZD
MThEQTU4QUQwMEVGRjdGMiAvKiBIZWFkZXJzICovLAorCQkJCTU1NDA3ODlBMThEQTU4QUQwMEVG
RjdGMiAvKiBTb3VyY2VzICovLAorCQkJCTU1OUNEMDZBMThGNDg3QTgwMEY5QURDMCAvKiBDb3B5
IExMVk0gSVIgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRl
bmNpZXMgPSAoCisJCQkJNTU0MDc1NjMxOERBNThBRDAwRUZGN0YyIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCisJCQkJNTU0MDc1NjUxOERBNThBRDAwRUZGN0YyIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCisJCQkJNTU0MDc1NjcxOERBNThBRDAwRUZGN0YyIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9ICJDb21waWxlIFJ1bnRpbWUgdG8gTExWTSBJUiI7
CisJCQlwcm9kdWN0TmFtZSA9IEphdmFTY3JpcHRDb3JlOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9
IDU1NDA3QUM4MThEQTU4QUQwMEVGRjdGMiAvKiBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmEg
Ki87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3Rh
dGljIjsKKwkJfTsKKwkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8g
PSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gNjUxMTIzMDAxNDA0NkE0QzAwMkIxMDFEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJ0ZXN0UmVnRXhwIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAor
CQkJCTY1MTEyMkZBMTQwNDZBNEMwMDJCMTAxRCAvKiBTb3VyY2VzICovLAorCQkJCTY1MTEyMkZD
MTQwNDZBNEMwMDJCMTAxRCAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMg
PSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSB0ZXN0UmVn
RXhwOworCQkJcHJvZHVjdEluc3RhbGxQYXRoID0gL3Vzci9sb2NhbC9iaW47CisJCQlwcm9kdWN0
TmFtZSA9IHRlc3RSZWdFeHA7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gNjUxMTIzMDUxNDA0NkE0
QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUu
cHJvZHVjdC10eXBlLnRvb2wiOworCQl9OworCQk5MzJGNUIzRTA4MjJBMUM3MDA3MzY5NzUgLyog
SmF2YVNjcmlwdENvcmUgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI3NUQwODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKYXZhU2NyaXB0Q29yZSIgKi87
CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk1RDJGN0NGOTBDNjg3NUJCMDBCNUI3MkIgLyogVXBk
YXRlIEluZm8ucGxpc3Qgd2l0aCB2ZXJzaW9uIGluZm9ybWF0aW9uICovLAorCQkJCUE1M0YxQUJG
MThDOTBGOEIwMDcyRUI2RCAvKiBSZXNvdXJjZXMgKi8sCisJCQkJOTMyRjVCM0YwODIyQTFDNzAw
NzM2OTc1IC8qIEhlYWRlcnMgKi8sCisJCQkJMzczMjgxMUExN0ZDRDIzNTAwNEFENTE5IC8qIFBv
c3Rwcm9jZXNzIEhlYWRlcnMgKi8sCisJCQkJOTMyRjVCOTEwODIyQTFDNzAwNzM2OTc1IC8qIFNv
dXJjZXMgKi8sCisJCQkJOTMyRjVCRDIwODIyQTFDNzAwNzM2OTc1IC8qIEZyYW1ld29ya3MgKi8s
CisJCQkJMEZDRUZBRDkxODA2MTkxODAwNDcyQ0U0IC8qIENvcHkgTExWTSBMaWJyYXJ5IEludG8g
RnJhbWV3b3JrICovLAorCQkJCTVEMjlEOEJFMEU5ODYwQjQwMEMzRDJEMCAvKiBDaGVjayBGb3Ig
V2VhayBWVGFibGVzIGFuZCBFeHRlcm5hbHMgKi8sCisJCQkJMzcxM0YwMTQxNDI5MDUyNDAwMzYz
ODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICov
LAorCQkJCUE1NURFQUE0MTY3MDNERjcwMDNEQjg0MSAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0
ZSBNYWNyb3MgaW4gRXh0ZXJuYWwgSGVhZGVycyAqLywKKwkJCQk1NTg1MENBMTE4RjQ4NDIwMDBG
ODE4MjkgLyogQnVpbGQgU3ltYm9sIEluZGV4IFRhYmxlICovLAorCQkJKTsKKwkJCWJ1aWxkUnVs
ZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTU1RjhGQzJDMThFQjkzN0Iw
MDc4M0U2RSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTBGQ0VGQUJEMTgwNUQ2NjMw
MDQ3MkNFNCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTY1Nzg4QUFEMThCNDBBN0Iw
MEMxODlGRiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTY1RkIzRjdFMDlEMTFFRjMw
MEY0OURFQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKYXZh
U2NyaXB0Q29yZTsKKwkJCXByb2R1Y3RJbnN0YWxsUGF0aCA9ICIke1NZU1RFTV9MSUJSQVJZX0RJ
Un0vRnJhbWV3b3Jrcy9XZWJLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3JrcyI7CisJ
CQlwcm9kdWN0TmFtZSA9IEphdmFTY3JpcHRDb3JlOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDkz
MkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87CisJ
CQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmZyYW1ld29yayI7CisJCX07
CisJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8gPSB7CisJCQlpc2EgPSBQQlhO
YXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI3NjcwODkwMkFG
RTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJqc2MiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJOTMyRjVCREMwODIyQTFDNzAwNzM2
OTc1IC8qIFNvdXJjZXMgKi8sCisJCQkJOTMyRjVCREUwODIyQTFDNzAwNzM2OTc1IC8qIEZyYW1l
d29ya3MgKi8sCisJCQkJNUQ1RDhBQkYwRTBEMEIwMzAwRjlDNjkyIC8qIENyZWF0ZSAvdXNyL2xv
Y2FsL2Jpbi9qc2Mgc3ltbGluayAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsK
KwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0ganNjOworCQkJcHJvZHVjdElu
c3RhbGxQYXRoID0gL3Vzci9sb2NhbC9iaW47CisJCQlwcm9kdWN0TmFtZSA9IGpzYzsKKwkJCXBy
b2R1Y3RSZWZlcmVuY2UgPSA5MzJGNUJFMTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovOworCQkJ
cHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKy8qIEVu
ZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rp
b24gKi8KKwkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0g
eworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJQnVpbGRJbmRl
cGVuZGVudFRhcmdldHNJblBhcmFsbGVsID0gWUVTOworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAw
NTAwOworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjc3MTA4OTAyQUZF
MDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJKYXZh
U2NyaXB0Q29yZSIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOwor
CQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5n
cyA9IDE7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJRW5nbGlzaCwKKwkJCQlKYXBhbmVzZSwK
KwkJCQlGcmVuY2gsCisJCQkJR2VybWFuLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDA4NjdENjkx
RkU4NDAyOEZDMDJBQUMwNyAvKiBKYXZhU2NyaXB0Q29yZSAqLzsKKwkJCXByb2R1Y3RSZWZHcm91
cCA9IDAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3RE
aXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQk5
MzJGNUJFMzA4MjJBMUM3MDA3MzY5NzUgLyogQWxsICovLAorCQkJCTU1NDA3NTYyMThEQTU4QUQw
MEVGRjdGMiAvKiBDb21waWxlIFJ1bnRpbWUgdG8gTExWTSBJUiAqLywKKwkJCQk5MzJGNUIzRTA4
MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUgKi8sCisJCQkJMEZDRUZBQjUxODA1RDYx
NjAwNDcyQ0U0IC8qIGxsdm1Gb3JKU0MgKi8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcy
IC8qIExMSW50IE9mZnNldHMgKi8sCisJCQkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERl
cml2ZWQgU291cmNlcyAqLywKKwkJCQkwRkY5MjJDMzE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yICovLAorCQkJCTY1Nzg4QTlEMThCNDA5RUIwMEMxODlGRiAvKiBP
ZmZsaW5lIEFzc2VtYmxlciAqLywKKwkJCQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWlu
aWRvbSAqLywKKwkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKKwkJ
CQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAorCQkJCTY1MTEyMkY3MTQwNDZB
NEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTVENkIyQTQ3MTUyQjlFMTcwMDUyMzFE
RSAvKiBUZXN0IFRvb2xzICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rp
b24gKi8KKworLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCUE1
M0YxQUJGMThDOTBGOEIwMDcyRUI2RCAvKiBSZXNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhS
ZXNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJCUE1M0YxQUMwMThDOTBGOEYwMDcyRUI2RCAvKiBmcmFtZXdvcmsuc2Ig
aW4gUmVzb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCisvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2
ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0gewor
CQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJ
IiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1l
ID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQki
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgi
LAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJ
c2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gInNldCAtZVxuXG5ta2RpciAt
cCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvXCJcblxuL3Vzci9iaW4vZW52
IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5y
YlwiIFwiLUkke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmVcIiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiBcIiR7QlVJ
TFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oXCJcbiI7
CisJCX07CisJCTBGQ0VGQUQ5MTgwNjE5MTgwMDQ3MkNFNCAvKiBDb3B5IExMVk0gTGlicmFyeSBJ
bnRvIEZyYW1ld29yayAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvbGlibGx2bUZvckpT
Qy5keWxpYiIsCisJCQkpOworCQkJbmFtZSA9ICJDb3B5IExMVk0gTGlicmFyeSBJbnRvIEZyYW1l
d29yayI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNj
cmlwdCA9ICJzZXQgLWVcblxuaWYgW1sgJEVOQUJMRV9GVExfSklUICE9IFwiRU5BQkxFX0ZUTF9K
SVRcIiBdXVxudGhlblxuICAgIGV4aXQgMFxuZmlcblxuaWYgW1sgJHtDT05GSUdVUkFUSU9OOj1E
ZWJ1Z30gIT0gXCJQcm9kdWN0aW9uXCIgXV1cbnRoZW5cbiAgICAjIENvcHkgdGhlIGxsdm1Gb3JK
U0MgbGlicmFyeSBpbnRvIHRoZSBmcmFtZXdvcmsuXG4gICAgZGl0dG8gXCIke0JVSUxUX1BST0RV
Q1RTX0RJUn0vbGlibGx2bUZvckpTQy5keWxpYlwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9LyR7
Q09OVEVOVFNfRk9MREVSX1BBVEh9L0xpYnJhcmllcy9saWJsbHZtRm9ySlNDLmR5bGliXCJcbmZp
XG5cbmlmIFtbICRQTEFURk9STV9OQU1FICE9IFwibWFjb3N4XCIgXV1cbnRoZW5cbiAgICBleGl0
IDBcbmZpXG5cbmlmIFsgISAtZSBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS8ke1dSQVBQRVJfTkFN
RX0vTGlicmFyaWVzXCIgXVxudGhlblxuICAgIGxuIC1mcyBcIlZlcnNpb25zL0N1cnJlbnQvTGli
cmFyaWVzXCIgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vJHtXUkFQUEVSX05BTUV9L0xpYnJhcmll
c1wiXG5maSI7CisJCX07CisJCTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBGb3Ig
SW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFRBUkdFVF9C
VUlMRF9ESVIpLyQoRVhFQ1VUQUJMRV9QQVRIKSIsCisJCQkpOworCQkJbmFtZSA9ICJDaGVjayBG
b3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyI7CisJCQlvdXRwdXRQYXRo
cyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuaWYg
WyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRyc1wiIF07IHRoZW5cbiAgICBleGl0IDA7XG5m
aVxuXG5pZiBbIC1mIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUt
b2JqYy1jbGFzcy1uYW1lcyBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1m
b3ItaW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzIEpTXG5maSI7CisJCX07CisJCTM3MzI4
MTFBMTdGQ0QyMzUwMDRBRDUxOSAvKiBQb3N0cHJvY2VzcyBIZWFkZXJzICovID0geworCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoVEFS
R0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFUSCkvSlNCYXNlLmgiLAor
CQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0pT
Q29udGV4dC5oIiwKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZP
TERFUl9QQVRIKS9KU01hbmFnZWRWYWx1ZS5oIiwKKwkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8k
KFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIKS9KU1ZhbHVlLmgiLAorCQkJCSIkKFRBUkdFVF9C
VUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0pTVmlydHVhbE1hY2hpbmUu
aCIsCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SCkvV2ViS2l0QXZhaWxhYmlsaXR5LmgiLAorCQkJKTsKKwkJCW5hbWUgPSAiUG9zdHByb2Nlc3Mg
SGVhZGVycyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVs
bFNjcmlwdCA9ICJleGVjICR7U1JDUk9PVH0vcG9zdHByb2Nlc3MtaGVhZGVycy5zaCI7CisJCX07
CisJCTU1ODUwQ0ExMThGNDg0MjAwMEY4MTgyOSAvKiBCdWlsZCBTeW1ib2wgSW5kZXggVGFibGUg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9
ICgKKwkJCSk7CisJCQluYW1lID0gIkJ1aWxkIFN5bWJvbCBJbmRleCBUYWJsZSI7CisJCQlvdXRw
dXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpLyQoSkFWQVNDUklQVENPUkVf
UkVTT1VSQ0VTX0RJUikvUnVudGltZS5zeW10YmwiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gIiR7U1JDUk9PVH0vYnVpbGQtc3ltYm9sLXRhYmxlLWluZGV4LnNoIjsKKwkJ
fTsKKwkJNTU5Q0QwNkExOEY0ODdBODAwRjlBREMwIC8qIENvcHkgTExWTSBJUiAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsK
KwkJCW5hbWUgPSAiQ29weSBMTFZNIElSIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0g
L2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIiR7U1JDUk9PVH0vY29weS1sbHZtLWlyLXRvLWRl
cml2ZWQtc291cmNlcy5zaCI7CisJCX07CisJCTVEMjlEOEJFMEU5ODYwQjQwMEMzRDJEMCAvKiBD
aGVjayBGb3IgV2VhayBWVGFibGVzIGFuZCBFeHRlcm5hbHMgKi8gPSB7CisJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChUQVJHRVRfQlVJ
TERfRElSKS8kKEVYRUNVVEFCTEVfUEFUSCkiLAorCQkJKTsKKwkJCW5hbWUgPSAiQ2hlY2sgRm9y
IFdlYWsgVlRhYmxlcyBhbmQgRXh0ZXJuYWxzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gInNldCAtZVxuXG5pZiBbIC1mIC4uLy4uL1Rv
b2xzL1NjcmlwdHMvY2hlY2stZm9yLXdlYWstdnRhYmxlcy1hbmQtZXh0ZXJuYWxzIF07IHRoZW5c
biAgICAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJsZXMtYW5kLWV4dGVy
bmFsc1xuZmkiOworCQl9OworCQk1RDJGN0NGOTBDNjg3NUJCMDBCNUI3MkIgLyogVXBkYXRlIElu
Zm8ucGxpc3Qgd2l0aCB2ZXJzaW9uIGluZm9ybWF0aW9uICovID0geworCQkJaXNhID0gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvQ29u
ZmlndXJhdGlvbnMvVmVyc2lvbi54Y2NvbmZpZyIsCisJCQkpOworCQkJbmFtZSA9ICJVcGRhdGUg
SW5mby5wbGlzdCB3aXRoIHZlcnNpb24gaW5mb3JtYXRpb24iOworCQkJb3V0cHV0UGF0aHMgPSAo
CisJCQkJIiQoU1JDUk9PVCkvSW5mby5wbGlzdCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hl
bGxTY3JpcHQgPSAiIyBUb3VjaCBJbmZvLnBsaXN0IHRvIGxldCBYY29kZSBrbm93IGl0IG5lZWRz
IHRvIGNvcHkgaXQgaW50byB0aGUgYnVpbHQgcHJvZHVjdFxuaWYgW1sgXCIke0NPTkZJR1VSQVRJ
T059XCIgIT0gXCJQcm9kdWN0aW9uXCIgXV07IHRoZW5cbiAgICB0b3VjaCBcIiRTUkNST09UL0lu
Zm8ucGxpc3RcIjtcbmZpO1xuIjsKKwkJfTsKKwkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIyIC8q
IEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9ydW50aW1lL1RyYWNp
bmcuZCIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyIjsKKwkJCW91
dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvVHJhY2luZ0R0cmFjZS5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlz
aGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuVFJBQ0lOR19EPVwiJFNSQ1JPT1QvcnVudGltZS9UcmFj
aW5nLmRcIjtcblRSQUNJTkdfSD1cIiRCVUlMVF9QUk9EVUNUU19ESVIvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvVHJhY2luZ0R0cmFjZS5oXCI7XG5cbmlmIFtbIFwiJEhBVkVfRFRSQUNF
XCIgPSBcIjFcIiAmJiBcIiRUUkFDSU5HX0RcIiAtbnQgXCIkVFJBQ0lOR19IXCIgXV07XG50aGVu
XG5cdGR0cmFjZSAtaCAtbyBcIiRUUkFDSU5HX0hcIiAtcyBcIiRUUkFDSU5HX0RcIjtcbmZpO1xu
IjsKKwkJfTsKKwkJNUQ1RDhBQkYwRTBEMEIwMzAwRjlDNjkyIC8qIENyZWF0ZSAvdXNyL2xvY2Fs
L2Jpbi9qc2Mgc3ltbGluayAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7
CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKERTVFJPT1QpJChJTlNUQUxMX1BBVEgpL2pzYyIs
CisJCQkpOworCQkJbmFtZSA9ICJDcmVhdGUgL3Vzci9sb2NhbC9iaW4vanNjIHN5bWxpbmsiOwor
CQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoRFNUUk9PVCkkKElOU1RBTExfUEFUSF9QUkVGSVgp
L3Vzci9sb2NhbC9iaW4vanNjIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMTsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJpZiBbWyBcIiR7U0tJUF9JTlNUQUxMfVwiID09IFwiTk9cIiBdXTsgdGhlblxuICAgIG1rZGly
IC1wIFwiJHtEU1RST09UfSR7SU5TVEFMTF9QQVRIX1BSRUZJWH0vdXNyL2xvY2FsL2JpblwiXG4g
ICAgY2QgXCIke0RTVFJPT1R9JHtJTlNUQUxMX1BBVEhfUFJFRklYfS91c3IvbG9jYWwvYmluXCJc
biAgICBpZiBbIC1MIGpzYyBdOyB0aGVuXG4gICAgICAgIHJtIC1mIGpzY1xuICAgIGZpXG4gICAg
bG4gLXMgXCIuLi8uLi8uLiR7SU5TVEFMTF9QQVRIX0FDVFVBTH0vanNjXCIganNjXG4gICAgZXhp
dFxuZmlcbiI7CisJCX07CisJCTVEQUZENkNEMTQ2QjZCNkUwMEZCRUZCNCAvKiBJbnN0YWxsIFN1
cHBvcnQgU2NyaXB0ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gODsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0
aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvQVBJL3Rlc3RzL3Rlc3RhcGkuanMiLAorCQkJKTsKKwkJ
CW5hbWUgPSAiSW5zdGFsbCBTdXBwb3J0IFNjcmlwdCI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJ
CQkiJChEU1RST09UKSQoSU5TVEFMTF9QQVRIKS90ZXN0YXBpLmpzIiwKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7CisJCQlzaGVsbFNjcmlwdCA9ICJpZiBbWyBcIiR7U0tJUF9JTlNUQUxMfVwiID09IFwiTk9c
IiBdXTsgdGhlblxuICAgIGNwIFwiJHtTUkNST09UfS9BUEkvdGVzdHMvdGVzdGFwaS5qc1wiIFwi
JHtEU1RST09UfSR7SU5TVEFMTF9QQVRIfS90ZXN0YXBpLmpzXCJcbmZpXG4iOworCQl9OworCQk1
REY3RTFDQzE4OEU2Qjg3MDAzRjlBNDYgLyogQ29weSBqc2MgaW50byBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5w
dXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL2pzYyIsCisJCQkpOworCQkJ
bmFtZSA9ICJDb3B5IGpzYyBpbnRvIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayI7CisJCQlvdXRw
dXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpLyQoSkFWQVNDUklQVENPUkVf
UkVTT1VSQ0VTX0RJUikvanNjIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJzZXQgLWVcblxuIyBTa2lwIGZvciBQcm9kdWN0aW9uIGJ1aWxkcy5cbmlmIFtbICR7Q09ORklH
VVJBVElPTjo9RGVidWd9ID09IFwiUHJvZHVjdGlvblwiIF1dOyB0aGVuXG4gICAgZXhpdFxuZmlc
blxuIyBDb3B5IGFuZCB1cGRhdGUgdGhlIGpzYyBiaW5hcnkgdG8gcmVmZXIgdG8gSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIGl0cyBsb2NhdGlvbi5cbmRpdHRvIFwiJHtCVUlM
VF9QUk9EVUNUU19ESVJ9L2pzY1wiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9LyR7SkFWQVNDUklQ
VENPUkVfUkVTT1VSQ0VTX0RJUn0vanNjXCJcbmluc3RhbGxfbmFtZV90b29sIC1jaGFuZ2UgXCIk
e0pBVkFTQ1JJUFRDT1JFX0ZSQU1FV09SS1NfRElSfS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9KYXZhU2NyaXB0Q29yZVwiIFwiQGxvYWRlcl9wYXRoLy4uL0phdmFTY3JpcHRD
b3JlXCIgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vJHtKQVZBU0NSSVBUQ09SRV9SRVNPVVJDRVNf
RElSfS9qc2NcIlxuIjsKKwkJfTsKKwkJNjU3ODhBQTAxOEI0MDlFQjAwQzE4OUZGIC8qIE9mZmxp
bmUgQXNzZW1ibGUgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
aW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIk9mZmxpbmUgQXNzZW1ibGUiOworCQkJ
b3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiaWYg
W1sgXCIke0FDVElPTn1cIiA9PSBcImluc3RhbGxoZHJzXCIgXV07IHRoZW5cbiAgICBleGl0IDBc
bmZpXG5cbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c20ucmIgLUkke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUgSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJHtCVUlMVF9Q
Uk9EVUNUU19ESVJ9L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciBMTEludEFzc2VtYmx5LmggfHwg
ZXhpdCAxIjsKKwkJfTsKKwkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3Vy
Y2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2Ny
aXB0ID0gInNldCAtZVxuXG5ta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1c
IiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVc
IlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0
aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91
c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCX07CisJCUE1NURFQUE0MTY3MDNERjcw
MDNEQjg0MSAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBNYWNyb3MgaW4gRXh0ZXJuYWwgSGVh
ZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBh
dGhzID0gKAorCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIpLyQoRVhFQ1VUQUJMRV9QQVRIKSIsCisJ
CQkpOworCQkJbmFtZSA9ICJDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBNYWNyb3MgaW4gRXh0ZXJu
YWwgSGVhZGVycyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlz
aGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRy
c1wiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4uLy4uL1Rvb2xzL1Njcmlw
dHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtbWFjcm9zLWluLWV4dGVybmFsLWhlYWRlcnMgXTsg
dGhlblxuICAgIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtbWFj
cm9zLWluLWV4dGVybmFsLWhlYWRlcnMgSGVhZGVycyBQcml2YXRlSGVhZGVycy9KU0Jhc2VQcml2
YXRlLmhcbmZpIjsKKwkJfTsKKy8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGQ0VG
QUIyMTgwNUQ2MTYwMDQ3MkNFNCAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNl
c0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMg
PSAoCisJCQkJMEZDRUZBRDcxODA2MTc0NjAwNDcyQ0U0IC8qIExMVk1BbmNob3IuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEZDRUZBQzMxODA1RTc0MDAwNDcyQ0U0IC8qIExMVk1FeHBvcnRzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGQ0VGQUMxMTgwNUQ5NEUwMDQ3MkNFNCAvKiBMTFZNT3Zl
cnJpZGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQkwRkY5MjJDNDE0RjQ2QjEzMDA0MUEyNEUgLyog
U291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGRjkyMkQ0MTRGNDZC
NDEwMDQxQTI0RSAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJ
CTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJY
U291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkJMTQ0MDA1N0YwQTUzMzU2NDAwMDVGMDYxIC8qIEpTTm9kZS5jIGluIFNv
dXJjZXMgKi8sCisJCQkJMTQ0MDA3NTgwQTUzNzBEMjAwMDVGMDYxIC8qIEpTTm9kZUxpc3QuYyBp
biBTb3VyY2VzICovLAorCQkJCTE0MTIxMTM0MEE0ODc5NTgwMDQ4MDI1NSAvKiBtaW5pZG9tLmMg
aW4gU291cmNlcyAqLywKKwkJCQkxNDQwMDYzRjBBNTM1OThBMDAwNUYwNjEgLyogTm9kZS5jIGlu
IFNvdXJjZXMgKi8sCisJCQkJMTQ0MDA3NEIwQTUzNkNDMjAwMDVGMDYxIC8qIE5vZGVMaXN0LmMg
aW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKKwkJMTRCRDU5QkMwQTNFOEY5MDAwQkFGNTlDIC8qIFNvdXJjZXMgKi8g
PSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlDMjlFQ0IwMzE4MDREMEVEMDBEMkNCQjQg
LyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlDMjg4QjJERTE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJQzIxODFGQzIxOEE5NDhGQjAwMjVBMjM1IC8qIEpTRXhwb3J0VGVzdHMubW0gaW4gU291
cmNlcyAqLywKKwkJCQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYwNjEgLyogdGVzdGFwaS5jIGluIFNv
dXJjZXMgKi8sCisJCQkJODZEMjIyMUExNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gaW4g
U291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKKwkJfTsKKwkJNTU0MDc4OUExOERBNThBRDAwRUZGN0YyIC8qIFNvdXJjZXMgKi8gPSB7
CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk1NTQwNzhBQjE4REE1OEFEMDBFRkY3RjIgLyog
QXJyYXlDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NTQwNzhBRjE4REE1OEFE
MDBFRkY3RjIgLyogQXJyYXlQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTU0MDdB
MzgxOERBNThBRDAwRUZGN0YyIC8qIE51bWJlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTU1NDA3QTNBMThEQTU4QUQwMEVGRjdGMiAvKiBOdW1iZXJQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCX07CisJCTY1MTEyMkZBMTQwNDZBNEMwMDJCMTAxRCAvKiBTb3VyY2VzICovID0g
eworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNjUxMTIzMDcxNDA0NkIwQTAwMkIxMDFEIC8q
IHRlc3RSZWdFeHAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCTkzMkY1QjkxMDgyMkExQzcwMDczNjk3
NSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNTJGQURERUQx
OTQ2N0E3QTAwQzhCQkU1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDdGMzlCRTEwN0VDMzc2MDA0MjdBNDggLyogQXJn
dW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3NjE0MENEMTgyOTgyQ0IwMDc1MDYyNCAv
KiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3
NjE0MENGMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjZCMUNDOTE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVj
a0ZhaWxSZXR1cm5UaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY3NDNCQUExNkI4ODI0
OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2
RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTc0REUxRDAxMjBCODc1NjAwRDQwRDVCIC8qIEFSTXY3QXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFFMzUgLyog
QVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGODMzNUI3MTYzOUMxRTYwMDE0
NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3
QThBRjM0MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRkZDOTlENDE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3QThBRjM2MTdBREI1RjMwMDVBQjE3NCAv
KiBBcnJheUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ3RjM5QkYxMDdFQzM3
NjAwNDI3QTQ4IC8qIEFycmF5Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdC
REFFQzYxN0Y0RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBN0JEQUVDODE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjYzOTQ1NDE1RDA3MDU1MDA2QTU5
N0MgLyogQXJyYXlQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0N0YzOUMwMTA3RUMz
NzYwMDQyN0E0OCAvKiBBcnJheVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjI0
RTU0MDE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTE0ODE2RTFCMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxNDI4MDg2MzEwN0VDMTFBMDAxM0U3QjIgLyogQm9vbGVhbkNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0MjgwODY0MTA3RUMxMUEwMDEzRTdCMiAv
KiBCb29sZWFuT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0MjgwODY1MTA3RUMxMUEw
MDEzRTdCMiAvKiBCb29sZWFuUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgw
MUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQzJGQ0FFMTAxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDhGMjFBQTEwN0VDNTNBMDA0MkVDMkMgLyogQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJGQ0FFMTIxN0E5QzI0RTAwMzRD
NzM1IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkx
NDI4MDgyRDEwN0VDMDU3MDAxM0U3QjIgLyogQ2FsbERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMTQyOUQ4REQwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjczRDdBRTE2NUExNDJEMDBBQ0FCNzEgLyogQ2xv
c3VyZUNhbGxTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NjlBMDc5NjBFRDFE
M0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOEY5NDQw
MTY2NzYzMzAwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGQzk3RjMzMTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9p
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZEOEEzMTMxN0Q0MzI2QzAwQ0EyQzQwIC8qIENv
ZGVCbG9ja1NldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzdGMTgyMTE2NDA4OEIyMDA2NDBB
NDcgLyogQ29kZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOEY5NDQ2MTY2NzY0RjEw
MEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2QjU4MjY3MTRE
Mjc5NkMwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NkI1
ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjhGOTQzQzE2Njc2MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ3RjM5QzExMDdFQzM3NjAwNDI3QTQ4IC8qIENv
bW1vbklkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOUM1RTVFMThFMzVGNUUw
MEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3MDlG
MkYyMTdBMEFDMkEwMDUxMkU5OCAvKiBDb21tb25TbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNjU1M0EzMzExN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdFNUEzQTcxNzk3NDMyRDAwRTg5M0MwIC8qIENv
bXBpbGF0aW9uUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0N0YzOUMyMTA3RUMzNzYw
MDQyN0E0OCAvKiBDb21wbGV0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0NkIxNkQ4MTJF
QjVCNTkwMDFCRUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBNUZEMDA3OTE4OUIwNTEwMDA2MzMyMzEgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMkE4MzYzODUxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQyODA4MkUxMDdFQzA1NzAwMTNFN0IyIC8q
IENvbnN0cnVjdERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU3RDIzRjExODkxQjVCNDAw
MzFDN0ZBIC8qIENvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTJBQUNFNjNDMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQzIyMzlEMTcxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNp
dG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMkI2NkRFMTdCNkI1QUIwMEE3QUUzRiAvKiBE
YXRhVmlldy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDdGMzlDMzEwN0VDMzc2MDA0MjdBNDgg
LyogRGF0ZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0N0YzOUM0MTA3RUMz
NzYwMDQyN0E0OCAvKiBEYXRlQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDdG
MzlDNTEwN0VDMzc2MDA0MjdBNDggLyogRGF0ZUluc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTE0N0YzOUM2MTA3RUMzNzYwMDQyN0E0OCAvKiBEYXRlUHJvdG90eXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTE0MjgwODIzMTA3RUMwMkMwMDEzRTdCMiAvKiBEZWJ1Z2dlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlCQzMxMzU2NTBGMzAyRkEzMDAzREZEM0EgLyogRGVidWdnZXJBY3Rp
dmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0OTU1OUVFMEREQ0RERjcwMDY0ODA4NyAv
KiBEZWJ1Z2dlckNhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyQTdBNThFRjE4MDhB
NEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkM3MTJERTE3
Q0Q4Nzc5MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE3N0E0MjNEMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY1NUMxOTQxNzI3NkU0NjAwQ0VBQkZEIC8qIERGR0Fi
c3RyYWN0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYxNjAxNUQxNTYxOThDOTAwQzI1
ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEY0ODUzMjExODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9kZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjYzOTQ4NDE1RTQ4MTE4MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDlBMjk0MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdBdFRh
aWxBYnN0cmFjdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNjY2RUM2MTgzNTY3MkIw
MEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY3MTRD
QTQxNkVBOTJGMDAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxv
Y2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcwQjA4MzIxN0EwQjc5QjAwREFGMTRCIC8qIERG
R0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyQTg4MDY3ODE5MTA3RDU1MDBD
QjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdE
ODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZH
Q2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3
MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjNCM0EyNzE1NDRD
OTk1MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBNzdBNDIzRjE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlcml6ZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBNzdBNDI0MTE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlclNl
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkYwRjE5RDE2QjcyQTA4MDA1REY5NUIgLyogREZH
Q29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUEwQTMxMTcwRDQwQkYwMEJCNzIyQyAv
KiBERkdDb21tb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMzhCMDE3MTdDRkU3NTUw
MEIxNDREMyAvKiBERkdDb21waWxhdGlvbktleS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjM4
QjAxOTE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGM0IzQTFBMTUzRTY4RjIwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkJFMEY3MjE2QzFEQjAzMDA4MkM1RTggLyog
REZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4OUNGNTE3
QTBCOENDMDA3NzNBRDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEYyRkM3NzIxNkUxMkY3MTAwMzhEOTc2IC8qIERGR0RDRVBo
YXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRBNSAvKiBE
RkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTczRTEzMzAxNzk2
MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkU4NTM0QjE3MjNDREE1MDBCNjE4RjUgLyogREZH
RGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyOTgxRkQ4MTdCQUVF
NEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQzI5ODFGREMxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRjQyNzY0MTU5MUExQ0MwMDRDQjlGRiAvKiBERkdE
aXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZEODFBRDIxNTRGQjRFRTAwOTgz
RTcyIC8qIERGR0RvbWluYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZEM0M4MjYxNDEx
NUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkYwRjE5
RTE2QjcyQTBCMDA1REY5NUIgLyogREZHRWRnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkJD
MEFFNzE0OTZDN0M0MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBNzhBOTc3NjE3OTczOEI4MDA5REY3NDQgLyogREZHRmluYWxp
emVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMkJEQzE1MTUxQzVENEQwMENEODkxMCAvKiBE
RkdGaXh1cFBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOUQzMzk2MTdGRkM0RTYwMDcz
QzJCQyAvKiBERkdGbHVzaGVkQXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODlDRjcxN0Ew
QjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2
RUM5REM3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRjJGQ0NGOTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTcwNEQ5MDUxN0EwQkFBODAwNkJBNTU0IC8qIERGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMzAwQjdCMThBQjFCMTQwMEE2RDcy
RSAvKiBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRkM5N0YzRDE4MjAyMTE5MDAyQzlCMjYgLyogREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rp
b25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUMzQTFBNTE4QzA0OTAyMDBDOTU5M0Eg
LyogSlNDb25zb2xlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUEwQTMzMTcwRDQw
QkYwMEJCNzIyQyAvKiBERkdKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2RUM5RENC
MTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBNzhBOTc3ODE3OTczOEI4MDA5REY3NDQgLyogREZHSklURmluYWxpemVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGQzk3RjNGMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdKdW1wUmVwbGFjZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTczQTUzNUExNzk5Q0Q1RDAwMTcwQzE5IC8qIERG
R0xhenlKU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDlBMjk3MTdBMEJDNzQwMEVF
MjYxOCAvKiBERkdMSUNNUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODlDRkIxN0Ew
QjhDQzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRkYwRjE5OTE2QjcyOUY2MDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQTc2N0I1QjUxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQ
cmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMkJEQzREMTUy
MjgxODYwMENEODkxMCAvKiBERkdNaW5pZmllZE5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTczNzgxMEQxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRkYwRjE5QzE2QjcyQTAzMDA1REY5NUIgLyogREZHTm9kZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRkE1ODFCQTE1MEU5NTJDMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTg2RUM5RENGMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVy
YXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDg5Q0ZEMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGRDgyRTU2MTQxREFGMDgwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRkQ4QTMyNTE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZDMDk3OTExNDZBNkY3MTAwQ0YyNDQy
IC8qIERGR09TUkV4aXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyMzVCRUIxNzE3OEU3MzAw
NjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzA5Nzky
MTQ2QTZGNzMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEZDMDk3NzYxNDY5NDNCMDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdP
U1JFeGl0Q29tcGlsZXI2NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjcwMjVBOTE3MTRCMEZB
MDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMjM1QkVEMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdP
U1JFeGl0UHJlcGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGRkM5NUIxNEVGOTBB
RDAwQzcyNTMyIC8qIERGR1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBMTExMjQ1MTky
RkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTc4QTk3N0ExNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEZCRTBGNzQxNkMxREIwOTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25Q
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyog
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY2
NjZFQ0MxODM2QjM3RTAwRDAxN0YxIC8qIERGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJGQ0NGQjE4QTYwMDcwMDAxQTI3RjggLyogREZH
U2FmZXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2RUM5REQyMTMyOERGODIwMDJCMkFE
NyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4Njg4MEYxRjE0
MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk4Njg4MEY0RDE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4OUNGRjE3QTBCOENDMDA3NzNBRDggLyogREZHU1NB
Q29udmVyc2lvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzIwQ0I5MTg1NTZBMzUw
MEM5RTk1NCAvKiBERkdTU0FMb3dlcmluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
OUZCNEY0MTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGNEYyOURGMThCNkFEMUMwMDU3QkMxNSAvKiBERkdTdGF0aWNFeGVjdXRp
b25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyQUNDRjNERTE4
NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGQzIwQ0I1MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMkZDQ0ZFMThBNjAwNzAwMDFBMjdG
OCAvKiBERkdUaHJlYWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzA5N0ExMTQ2QjI4
Q0EwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5M0I0QTkx
OEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGRDhBMzI3MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRDhBMzI5MTdENTFGNTcwMENBMkM0MCAvKiBERkdU
b0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RkQ4QTMyQjE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjYzOTQ0MDE1Qzc1RjFE
MDA2QTU5N0MgLyogREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRkJFMEY3NjE2QzFEQjBGMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjM0QjE0OTE2RDQyMDEwMDAxQ0RBNUEgLyogREZHVXNlS2lu
ZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZH
VmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQkRDNEYxNTIyOEJGMzAwQ0Q4OTEw
IC8qIERGR1ZhbHVlU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRERCRkI1MTY2NkVF
RDgwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGMkJEQzUxMTUyMjhGRkQwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGMkJEQzRBMTUyMjgwOUEwMENEODkxMCAvKiBERkdWYXJpYWJs
ZUV2ZW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRkZDOTVGMTRFRjkwQkIwMEM3
MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEZDOTdGNDExODIwMjExOTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZEQjJDRTcxNzQ4MzBBMjAwN0IzQzFC
IC8qIERGR1dvcmtsaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOUQzMzcwMTY1REJCOTAw
MDVBRDM4NyAvKiBEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcwNDQ3RUQx
N0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk5
RTQ1QTI1MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMTQ3RjM5QzcxMDdFQzM3NjAwNDI3QTQ4IC8qIEVycm9yLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTE0N0YzOUM4MTA3RUMzNzYwMDQyN0E0OCAvKiBFcnJvckNvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZFQjU4QzE0MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRs
aW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ3RjM5QzkxMDdFQzM3NjAwNDI3QTQ4
IC8qIEVycm9ySW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ3RjM5Q0ExMDdFQzM3
NjAwNDI3QTQ4IC8qIEVycm9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1NDk4
MjAzMTg5MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3AuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MTQyOUQ4NzgwRUQyMUFDRDAwQjg5NjE5IC8qIEV4Y2VwdGlvbkhlbHBlcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJODZDQTAzMkUxMDM4RTg0NDAwMjhBNjA5IC8qIEV4ZWN1dGFibGUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTdCNDhGNDkwRUU4OTM2RjAwRENCREI2IC8qIEV4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODZEQjY0NjQwRjk1QzZGQzAwRDdEOTIx
IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRjU2QTFENTE1MDAxQ0Y0MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjAzMzJDMDE4QURGQUUxMDA1Rjk3OUEgLyogRXhpdGluZ0pJVFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZCMTA1ODUxNjc1NDgwRjAwRjhBQjZFIC8qIEV4aXRL
aW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBG
VExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFQTBBMUUxNzA4QjAwNzAw
QkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEY0ODUzMjcxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGRUEwQTA5MTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmls
aXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFQTBBMjcxNzA5NjIzQjAwQkI3MjJDIC8q
IEZUTENvbW1vblZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkVBMEEwQjE3MDUxM0RC
MDBCQjcyMkMgLyogRlRMQ29tcGlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkU5NUY3OTE4
QjU2OTQ3MDBCNTMxRkIgLyogRlRMRGF0YVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MkFDOTIyQkIxOEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjIzNUJEMzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3Vt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMjM1QkQ1MTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMjM1QkQ4
MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYyMzVCREExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBN0YyOTk2QjE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRkQ4QTMxOTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9yT1NS
RW50cnlKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMjVGMUFGMTgxNjM1RjMwMDUy
MkYzOSAvKiBGVExJbmxpbmVDYWNoZVNpemUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFQTBB
MjgxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTEludHJpbnNpY1JlcG9zaXRvcnkuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEZFQTBBMEQxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEpJVENvZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTc4QTk3ODAxNzk3MzhENTAwOURGNzQ0IC8qIEZUTEpJVEZpbmFs
aXplci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjZCMUNCNTE4NUZDOUU5MDA4NDVEOTcgLyog
RlRMSlNDYWxsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOEYyQjk1MTcyRTA0QTAwMDdEQkRB
NSAvKiBGVExMaW5rLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQ0VGQURGMTgwNzM4QzAwMDQ3
MkNFNCAvKiBGVExMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkVBMEEwRjE3MDUx
M0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdUb0xMVk0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEZEOEEzMUIxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGMjM1QkRDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGMjM1QkRGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGls
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFQTBBMkExNzA5NjI5NjAwQkI3MjJDIC8qIEZU
TE91dHB1dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ4NTMyOTE4N0RGREVDMDA4M0I2ODcg
LyogRlRMUmVjb3ZlcnlPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY2QjFDQzMxODYy
QzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEZDRUZBQUIxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTFDQUE5QTIyMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFBy
b2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyNUYxQjExODE2MzVGMzAwNTIy
RjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjI1RjFCMzE4
MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2lu
ZEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyMzVCRTMxNzE3OEUxQzAwNjkwQzdGIC8q
IEZUTFZhbHVlRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1M0NFMDg3MThCQzFBNTYw
MEJFREY3NiAvKiBKU0NvbnNvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY1QTYyODMxODhD
OThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ3
RjM5Q0IxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEZGMEYxOUYxNkI3MkExNzAwNURGOTVCIC8qIEZ1bmN0aW9uRXhlY3V0YWJs
ZUR1bXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ3RjM5Q0MxMDdFQzM3NjAwNDI3QTQ4IC8q
IEZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNzY2RDJGMTVBOERD
RTAwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQzIyMzlEMUExNjI2MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUMyMTEyMkUxMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEY5MzMyOUYxNENBN0RDQTAwODVGM0M2IC8qIEdldEJ5SWRT
dGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwMzMyQzMxOEIwMTc2MzAwNUY5NzlBIC8q
IEdldEJ5SWRWYXJpYW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0MjgwODU1MTA3RUMwRTcw
MDEzRTdCMiAvKiBHZXR0ZXJTZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQyRTMxMzUx
MzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDJF
MzEzNzEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMTRCQTdBOTcxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQzI0RDMxRTIxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUMyRTUyNkJEMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ3RjM5Q0UxMDdFQzM3NjAwNDI3QTQ4
IC8qIElkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTVGRDAwNzUxODlCMDM4QzAw
NjMzMjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMjVG
OEJDRDE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGMTNFMDRFMTYxNjRBMUYwMERDOERFNyAvKiBJbmRleGluZ1R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEZDRUZBQ0ExODA1RTc1NTAwNDcyQ0U0IC8qIEluaXRpYWxpemVM
TFZNLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQ0VGQUIxMTgwNUNBNkQwMDQ3MkNFNCAvKiBJ
bml0aWFsaXplTExWTU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTBGQ0VGQUNCMTgwNUU3NTUw
MDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTVBPU0lYLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUx
Nzg2MzZEMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE1MTNFNUI3MTg1QjhCRDMwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTE0QjJDMjE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0
ZWRTY3JpcHRCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OEUzNTkxMTg2MERFQ0YwMDFG
MjRGRSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTUxM0U1
Q0ExODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBNTg0MEUyMDE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1
bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyNEU1NTUxN0YwQjcxQzAwQUJCMjE3IC8qIElu
bGluZUNhbGxGcmFtZVNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUNFRUUxNDE4N0YzQkFE
MDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU5M0NG
ODYxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBRjczODJDMThCQkJGOTIwMDhBNUEz
NyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1RkQwMDgxMTg5
QjE5MUEwMDYzMzIzMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTU3RDIzRTUxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTUzMjQzODcxODU2ODMzNTAwMkVENjkyIC8qIEluc3Bl
Y3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1MzI0Mzg5
MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTUzMjQzOEIxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpT
VHlwZUJ1aWxkZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1MEU0QjYxMTg4MDlERDUwMDY4
QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU5
M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBNzg4NTNGOTE3OTcyNjI5MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFp
bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50
ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDI5RDdENDBFRDIxMjgyMDBC
ODk2MTkgLyogSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTUwM0ZBMTkxODhF
MEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMTQyOUQ5MkYwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk4NkE5MEVEMDBFRTdENTFGMDBBQjM1MEQgLyogSklUQXJpdGhtZXRpYy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBNzU3MDZERTExOEEyQkNGMDA1N0Y4OEYgLyogSklUQXJpdGhtZXRpYzMyXzY0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2Q0M4NUEzMEVFNzlCNzQwMDI4ODY4MiAvKiBKSVRD
YWxsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0NkZFNTEyMTFBNzEwNDMwMDg3QUU2NiAvKiBK
SVRDYWxsMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY4Rjk0NDQxNjY3NjM1NDAwRDYx
OTcxIC8qIEpJVENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZBRjdFRkQxNjVCQTkxQjAw
MEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODA4
MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRkIxNEUxRTE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQkNERDUxRUIwRkI4REY3NDAwNEE4QkRDIC8qIEpJVE9wY29k
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJ
VE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjZFODQ1QTE5MDMwQkVGMDA1
NjI3NDEgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
MjRFNTRDMTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTg2Q0M4NUM0MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBN0MxRThFNDExMkU3MkVGMDBBMzdGOTggLyogSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjc2NkQyODE1QThDQzFFMDA4
RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY3NjZEMkIx
NUE4Q0MzODAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTE0QTIzRDc1MEY0RTFBQkIwMDIzQ0RBRCAvKiBKSVRTdHVicy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRjVFRjkxRTE2ODc4RjdBMDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGQzcxMkUyMTdDRDg3OTEwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDBCN0QxRDBEQzY5
QUY3MDA5QzQyQjggLyogSlNBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0MDU2
NkM0MTA3RUMyNTUwMDVEQkM4RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlDMkNGMzlDMTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJQTc2MTQwRDExODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1l
bnRzSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ3RjM5RDAxMDdFQzM3NjAwNDI3
QTQ4IC8qIEpTQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQjY2RTIxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQjY2RTQx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjJCNjZFNjE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJCNjZFODE3QjZCNUFCMDBBN0FFM0YgLyog
SlNBcnJheUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdCREFFQ0ExN0Y0RUEx
NDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDIx
MzU5QjBBNjc3RjRGMDBBODE5NUUgLyogSlNCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2
RkE5RTkxMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMTQ0MEY4QUYwQTUwOEQyMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDQwRjg5MjBBNTA4QjEwMDAwNUYwNjEgLyogSlND
YWxsYmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0QUJERjYwMEE0MzdGRUYw
MEVDQ0EwMSAvKiBKU0NhbGxiYWNrT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgw
MUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkxNDdGMzlEMTEwN0VDMzc2MDA0MjdBNDggLyogSlNDZWxsLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTE0N0YzOUQ2MTA3RUMzNzYwMDQyN0E0OCAvKiBKU0NKU1ZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTE0NDBGQ0U0MEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVmLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTg2RTNDNjE2MTY3QkFCRUUwMDZENzYwQSAvKiBKU0NvbnRleHQubW0g
aW4gU291cmNlcyAqLywKKwkJCQkxNEJENUEzMDBBM0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0
UmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3MjAyOEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBK
U0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQjY2RUIxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQjY2RUQx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJOTc4ODAxNDAxNDcxQUQ5MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMTQwNTY2RDYxMDdFQzI3MTAwNURCQzhEIC8qIEpTRnVuY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMTQ3RjM5RDIxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTR2xvYmFsT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1RkQwMDg1MTg5QjFCN0UwMDYzMzIzMSAvKiBK
U0dsb2JhbE9iamVjdENvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTk0NTU5
MjE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE1N0QyM0U5MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTRFOUQxN0IxMDdFQzQ2OTAwNERE
QTIxIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1
MTAwN0MwMTg3Q0MzQzYwMEIzODg3OSAvKiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTUwRTRCNjMxODgwOURENTAwNjhBNDZEIC8qIEpT
R2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1MDNGQTI5
MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGQTdBOEVFMThDRTRGRDgwMDUyMzcxRCAvKiBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTUxM0U1QkYxODVCRkFDQzAw
N0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1
MTNFNUMxMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTAzRkExQjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1MDNGQTFEMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMTQyODA4NzUxMDdFQzEzRTAwMTNFN0IyIC8qIEpTTG9jay5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0g
aW4gU291cmNlcyAqLywKKwkJCQlBNzAwODc0MTE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQTc0REVGOTUxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRl
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ4NzRBRTMxNUVCREU0QTAwMkUzNTg3IC8q
IEpTTmFtZVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3MjcwMDkwMERBQzZCQkMwMEU1
NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0N0YzOUQ0MTA3
RUMzNzYwMDQyN0E0OCAvKiBKU09iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDgyQjdF
NDBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTdGOTkzNjAwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJOTVGNkU2OTUwRTVCNUY5NzAwOTFFODYwIC8qIEpTUHJvZmlsZXJQcml2YXRlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdDMTg0RTFBMTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MxODRFMjIxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMDA4Q0RBMTg3MTI0QkIw
MDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzAw
OENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTdDMTg0RTFFMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MwMDhDREUxODcxMjU4RDAwOTU1QzI0IC8qIEpTUHJv
bWlzZVJlYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3MjdGRjZCMERBMzA5MjIwMEU1
NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2
MjU1M0QxMTYxMzZEQTkwMDlGMTdEMCAvKiBKU1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTk5MjhGRjNCMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkxNDg3NEFFNTE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBN0MwQzRBRDE2ODEwNjdFMDAxNzAxMUQgLyogSlNTY3JpcHRSZWYuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcyOTlEOUQxN0QxMjgz
NzAwNUY1RkY5IC8qIEpTU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3OTBERDZGMTgyRjQ5
OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2
Mzg5MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdK
b2luZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ4MkI3NEUwQTQzMDMyODAwNTE3Q0ZDIC8q
IEpTU3RyaW5nUmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0NkFBQjM4MEI2NkE5NDQwMEU1
NUYxNiAvKiBKU1N0cmluZ1JlZkNGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOTE5RDBDMTU3
RUUwOUYwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGMkI2NkZBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQjY2RkMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlw
ZWRBcnJheVByb3RvdHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQjY2RkUxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODZFM0M2
MUExNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWUubW0gaW4gU291cmNlcyAqLywKKwkJCQkxNEJE
NUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkxNDdGMzlENzEwN0VDMzc2MDA0MjdBNDggLyogSlNWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk4NkUzQzYxQzE2N0JBQkVFMDA2RDc2MEEgLyogSlNWaXJ0dWFsTWFjaGlu
ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE3Q0EzQUU3MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dl
YWtNYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTc0ODJCOTQxMTY3MTE0NzAwM0IwNzEyIC8q
IEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ0MjU2
NjExNUVERTk4RDAwNjZBNDlCIC8qIEpTV2l0aFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTg2RTNDNjE4MTY3QkFCRUUwMDZENzYwQSAvKiBKU1dyYXBwZXJNYXAubW0gaW4gU291cmNlcyAq
LywKKwkJCQkxNDI4MDg3MDEwN0VDMTM0MDAxM0U3QjIgLyogSlNXcmFwcGVyT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk1QUI4MzQyMERBNDMy
MjUwMEJDODNGMyAvKiBMZWdhY3lQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDhG
MjFCMDEwN0VDNTQxMDA0MkVDMkMgLyogTGV4ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZG
NDI3NTcxNTkxNEEyMDAwNENCOUZGIC8qIExpbmtCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTdFMkVBNkMwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRF
bnRyeXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
MEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRkNFRkFDRDE4MDVFNzU1MDA0NzJDRTQgLyogTExWTUFQSS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBN0U1QUIzNzE3OTlFNEIyMDBEMjgzM0QgLyogTExWTURpc2Fzc2VtYmxlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjRDRUQ1RTE4Q0VBN0FCMDA4MDJGRTAgLyogUG9seW1vcnBo
aWNHZXRCeUlkTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDQ2OURERTEwN0VDN0U3MDA2
NTA0NDYgLyogTG9va3VwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0Ew
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0
QjcyM0IyMTJEN0RBNDYwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEZFQjNFQ0YxNjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzI5MDA5QzE3OTc2QzYwMDAzMTcy
OTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTNDRTA4
NTE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBN0E0QUUwODE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTVCNkE3NEQxOEM2REJBNjAwRjExRTkxIC8qIENvbnNv
bGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQz
IC8qIE1hcENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3ODUwN0Q2MTdDQkM2
RkQwMDExRjZFNyAvKiBNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3NERFRjkxMTgy
RDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUE3NERFRjkzMTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyQjkxNkM1MTREQTA0MEMwMENCQUM4NiAv
KiBNYXJrZWRBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQyRDZGMDgxMzUzOUEy
ODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0RDJGM0RB
MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkx
NDJENkYxMTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTE0NDY5RERGMTA3RUM3RTcwMDY1MDQ0NiAvKiBNYXRoT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTkwMjEzRTNEMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGQjU0NjdEMTRGNUNGRDYwMDJDMjk4OSAvKiBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2RUJGMkZGMTU2
MEYwNkEwMDhFOTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
ODZFQkYzMDExNTYwRjA2QTAwOEU5MjIyIC8qIE5hbWVJbnN0YW5jZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk4NkVCRjMwMzE1NjBGMDZBMDA4RTkyMjIgLyogTmFtZVByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxNDQ2OURFMDEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDQ2OURFMTEwN0VDN0U3MDA2NTA0
NDYgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ4RjIx
QjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1NUVC
MjlCMTBDRTI1ODEwMDFBOTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMTQ0NjlERTIxMDdFQzdFNzAwNjUwNDQ2IC8qIE51bWJlckNvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTE0NDY5REUzMTA3RUM3RTcwMDY1MDQ0NiAvKiBOdW1iZXJPYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ0NjlERTQxMDdFQzdFNzAwNjUwNDQ2IC8qIE51bWJl
clByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NkYzRUVCRTE2OENERTkzMDA3N0I5
MkEgLyogT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQkxNDQ2OURF
NTEwN0VDN0U3MDA2NTA0NDYgLyogT2JqZWN0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMTQ0NjlERTYxMDdFQzdFNzAwNjUwNDQ2IC8qIE9iamVjdFByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlFMTI0QThGODBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTY5QTA3OUEwRUQxRDNBRTAwRjFGNjgxIC8qIE9w
Y29kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDI4MDg1MDEwN0VDMEQ3MDAxM0U3QjIgLyog
T3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZD
NDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDhGMjFCQzEwN0VDNTREMDA0
MkVDMkMgLyogUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzMDUyQzM0MEZCNzkyMTkw
MDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjlGQzhDMzE0
RTFCNUZFMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRjk4MjA2MDE2QkZFMzgxMDAyNDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTk1NzQyRjY1MEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzk3RjM1MTgyMDIwRDcwMDJDOUIyNiAvKiBQcm9m
aWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5NUNENDU3NjBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk5NUFCODM1NjBEQTQzQzMwMDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QUQxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVy
Qnl0ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEz
IC8qIFByb2ZpbGVyQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMTM5MTI5MTY3
NzFDMzMwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEZGNzI5QUYxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUNBQTlBMUUxOEY0OTk3RjAwMEEzNjlEIC8qIEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjAxNjZBRDM1
QzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGRjcyOUIxMTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNzI5QjIxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2Zp
bGVyRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYxOTBDQUMxODlEODJGNjAwMEFF
NUYwIC8qIFByb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZG
NzI5QjMxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGRjcyOUI0MTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGQjEwNThCMTY3NTQ4MzEwMEY4QUI2RSAvKiBQcm9maWxl
ck9TUkV4aXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZCMTA1OEQxNjc1NDgzNzAwRjhBQjZF
IC8qIFByb2ZpbGVyT1NSRXhpdFNpdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYxMzkxMkIx
Njc3MUMzQTAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTdGQjYwQTQxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDQ2OURFNzEwN0VDN0U3MDA2NTA0NDYgLyogUHJv
cGVydHlOYW1lQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ0NjlERTgxMDdFQzdFNzAw
NjUwNDQ2IC8qIFByb3BlcnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBREUzOUZGRjE2
REQxNDRCMDAwM0NENEEgLyogUHJvcGVydHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2
NUZCNTExNzE4NEVFRTcwMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMTQ3NEMzM0MxNkFBMkQ5QjAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjkzMzJBMzE0Q0E3REQ3MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY2MEFDMzE2NzQwRjg4MDAwMjk3NzkgLyogUmVk
dWNlV2hpdGVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkE3QThFQjE4QjQxM0M4MDA1
MjM3MUQgLyogUmVnLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0MjgwODQxMTA3RUMwOTMwMDEz
RTdCMiAvKiBSZWdFeHAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE3MTJCM0IxMUM3QjIxMjAw
N0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg2NDJDNTEwMTUx
QzA2QTkwMDQ2RDRFRiAvKiBSZWdFeHBDYWNoZWRSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMTQyODA4NDIxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTg2NDJDNTEyMTUxQzA4M0QwMDQ2RDRFRiAvKiBSZWdFeHBNYXRjaGVz
QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQyODA4NDMxMDdFQzA5MzAwMTNFN0IyIC8q
IFJlZ0V4cE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDI4MDg0NDEwN0VDMDkzMDAx
M0U3QjIgLyogUmVnRXhwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNkIxQ0JE
MTg2MTI0NkEwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lz
dGVyU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1N0QyM0VEMTg5MUI1NTQwMDMxQzdGQSAv
KiBSZWd1bGFyRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFOTE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkFE
RkEyNjMxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQlBNUJB
MTVFRTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBp
biBTb3VyY2VzICovLAorCQkJCTBGMjRFNTUwMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGlu
Z0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQyOUQ4ODUwRUQyMUMzRDAwQjg5NjE5
IC8qIFNhbXBsaW5nVG9vbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUZEMDA2NzE4OUFGRTlD
MDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1RkQw
MDZEMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTVGRDAwNkYxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBNUZEMDA3RDE4OUIwQjRDMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTAzRkEyNTE4OEVGRkZEMDAxMTBG
MTQgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU1RDkzQTUx
ODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBNTRDRjJGOTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE1NENGMkY1MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBNzI5OURBNTE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTc5MERENkIxODJGNDk5NzAwNTg4ODA3IC8q
IFNldEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTc5MERENkQx
ODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUE3Mjk5REExMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEYyQjY3MDQxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJy
YXlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyMjU0OTQzMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5MzMwNDAyQzBFNkE3
NjQwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOEYy
QjlFMTczMDZDOEQwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNo
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBDRDRDNDE1RjZCNkJCMDAzMkYxQzAgLyogU3Bh
cnNlQXJyYXlWYWx1ZU1hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjU1NDFCMTE2MTNDMUZC
MDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZEODJF
ODYxNDFGM0ZGMTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUE3QzFFQUYxMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTczMEI2MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0NDY5REVCMTA3RUM3RTcwMDY1MDQ0NiAvKiBT
dHJpbmdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDQ2OURFQzEwN0VDN0U3
MDA2NTA0NDYgLyogU3RyaW5nT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0NDY5REVE
MTA3RUM3RTcwMDY1MDQ0NiAvKiBTdHJpbmdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTMzNUYyNEQxMkU2NzY1QjAwMkI1NTUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQkNERTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8qIFN0cnVjdHVy
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3Ry
dWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJGMEYyRDExNkJBRUVFOTAwMTg3
QzE5IC8qIFN0cnVjdHVyZVJhcmVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNzY2RDM4
MTVBRTRBMUMwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJDQ0YwRDBDMEVGMEI4QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVT
dHViSW5mby5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkRGNDQyRjE3MDdBQzAxMDBBNUNBOTYg
LyogU3VwZXJSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5MTlEMjgxNTg1Njc3MzAw
NEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzMxNDEzMTgx
NDU1OTEwMDAzMzIzMiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEZBMkMxN0IxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUyREM5QzEyMTkzOTMwQjEwMEZBNzQ2MyAvKiBUeXBlU2V0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMkI2NzA3MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBl
ZEFycmF5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjJCNjcwQTE3QjZCNUFC
MDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNDI3
NEExNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5jIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNDI3
NDAxNThFQkU4QjAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuYyBpbiBTb3VyY2VzICovLAorCQkJ
CTBGRjQyNzQzMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfaW5wdXQuYyBpbiBTb3VyY2VzICov
LAorCQkJCTBGRjQyNzREMTU4RUJGRTYwMDRDQjlGRiAvKiB1ZGlzODZfaXRhYl9ob2xkZXIuYyBp
biBTb3VyY2VzICovLAorCQkJCTBGRjQyNzQ1MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3lu
LWF0dC5jIGluIFNvdXJjZXMgKi8sCisJCQkJMEZGNDI3NDYxNThFQkU5MTAwNENCOUZGIC8qIHVk
aXM4Nl9zeW4taW50ZWwuYyBpbiBTb3VyY2VzICovLAorCQkJCTBGRjQyNzQ3MTU4RUJFOTEwMDRD
QjlGRiAvKiB1ZGlzODZfc3luLmMgaW4gU291cmNlcyAqLywKKwkJCQkwRkY0MjczMjE1OEVCRDU4
MDA0Q0I5RkYgLyogVURpczg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3
NkYyNzk0MTVGMTNDOTYwMDUxN0Q2NyAvKiBVbmxpbmtlZENvZGVCbG9jay5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlCNTlGODkzOTE4OTFGMjlGMDBENUNDREMgLyogVW5saW5rZWRJbnN0cnVjdGlv
blN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjc1NzZEMjE4RTFGRUU5MDAyRUY0Q0Qg
LyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYy
NEU1NTgxN0Y3NEVEQjAwQUJCMjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRkU0QTMzMUYxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGRUQ5NEYzMDE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hk
b2dNYWMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5MTlEMjUxNTg1M0NFMDAwNEE0RTdEIC8q
IFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUFDRjczNzcxNzFDQTZGQjAwQzlC
QjFFIC8qIFdlYWsuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTRFODRGOUUxNEVFMUFDQzAwRDZE
NUQ0IC8qIFdlYWtCbG9jay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNEY3MjU2NTE0RUUyNjVF
MDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3Q0Ez
QUUzMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTdDQTNBRUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUE3Q0EzQUU1MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0RTg0RkEwMTRFRTFBQ0MwMEQ2RDVENCAvKiBX
ZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBNEVDOTBCMTg2MEQ2QzIwMDk0Rjc4MiAv
KiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZDODE1MEIxNDA0
M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTdFNUFCM0ExNzk5RTRCMjAwRDI4MzNEIC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk4NjNDNkQ5QzE1MjExMTFBMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6
ZVVDUzIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NjcwNEI4NjEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NjcwNEI4OTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODY3MDRC
NDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9
OworCQk5MzJGNUJEQzA4MjJBMUM3MDA3MzY5NzUgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJCTkzMkY1QkREMDgyMkExQzcwMDczNjk3NSAvKiBqc2MuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisv
KiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KKwkJMEZDRUZBQkQxODA1RDY2
MzAwNDcyQ0U0IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJn
ZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEZDRUZBQjUxODA1RDYxNjAwNDcyQ0U0IC8qIGxs
dm1Gb3JKU0MgKi87CisJCQl0YXJnZXRQcm94eSA9IDBGQ0VGQUJDMTgwNUQ2NjMwMDQ3MkNFNCAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTBGRjkyMkQzMTRGNDZCMkYwMDQx
QTI0RSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBP
ZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRkY5MjJEMjE0RjQ2QjJGMDA0MUEyNEUgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQk1NTQwNzU2MzE4REE1OEFEMDBFRkY3
RjIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVu
ZGVuY3k7CisJCQl0YXJnZXQgPSAwRkNFRkFCNTE4MDVENjE2MDA0NzJDRTQgLyogbGx2bUZvckpT
QyAqLzsKKwkJCXRhcmdldFByb3h5ID0gNTU0MDc1NjQxOERBNThBRDAwRUZGN0YyIC8qIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNTU0MDc1NjUxOERBNThBRDAwRUZGN0YyIC8q
IFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5
OworCQkJdGFyZ2V0ID0gNjU3ODhBOUQxOEI0MDlFQjAwQzE4OUZGIC8qIE9mZmxpbmUgQXNzZW1i
bGVyICovOworCQkJdGFyZ2V0UHJveHkgPSA1NTQwNzU2NjE4REE1OEFEMDBFRkY3RjIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQk1NTQwNzU2NzE4REE1OEFEMDBFRkY3RjIg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSA2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3Vy
Y2VzICovOworCQkJdGFyZ2V0UHJveHkgPSA1NTQwNzU2ODE4REE1OEFEMDBFRkY3RjIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQk1NUY4RkMyQzE4RUI5MzdCMDA3ODNFNkUg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSA1NTQwNzU2MjE4REE1OEFEMDBFRkY3RjIgLyogQ29tcGlsZSBSdW50
aW1lIHRvIExMVk0gSVIgKi87CisJCQl0YXJnZXRQcm94eSA9IDU1RjhGQzJCMThFQjkzN0IwMDc4
M0U2RSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTVENjlFOTEyMTUyQkU1
NDcwMDI4RDcyMCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFy
Z2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBq
c2MgKi87CisJCQl0YXJnZXRQcm94eSA9IDVENjlFOTExMTUyQkU1NDcwMDI4RDcyMCAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTVENkIyQTRGMTUyQjlFMjMwMDUyMzFERSAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5j
eTsKKwkJCXRhcmdldCA9IDE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwor
CQkJdGFyZ2V0UHJveHkgPSA1RDZCMkE0RTE1MkI5RTIzMDA1MjMxREUgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OworCQk1RDZCMkE1MTE1MkI5RTIzMDA1MjMxREUgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0
YXJnZXQgPSAxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLzsKKwkJCXRhcmdl
dFByb3h5ID0gNUQ2QjJBNTAxNTJCOUUyMzAwNTIzMURFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLzsKKwkJfTsKKwkJNUQ2QjJBNTUxNTJCOUUyMzAwNTIzMURFIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0g
NjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi87CisJCQl0YXJnZXRQcm94
eSA9IDVENkIyQTU0MTUyQjlFMjMwMDUyMzFERSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87
CisJCX07CisJCTVENkIyQTU3MTUyQjlFMkUwMDUyMzFERSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDVENkIy
QTQ3MTUyQjlFMTcwMDUyMzFERSAvKiBUZXN0IFRvb2xzICovOworCQkJdGFyZ2V0UHJveHkgPSA1
RDZCMkE1NjE1MkI5RTJFMDA1MjMxREUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9
OworCQk2NTI0NEJEMzE4RUNCNTAwMDAxMEI3MDggLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA2NUZCM0Y2NjA5
RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovOworCQkJdGFyZ2V0UHJveHkgPSA2
NTI0NEJEMjE4RUNCNTAwMDAxMEI3MDggLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9
OworCQk2NTQ0MkQ1MDE4RUJCNzQ0MDA3QUY5MkYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA2NUZCM0Y2NjA5
RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovOworCQkJdGFyZ2V0UHJveHkgPSA2
NTQ0MkQ0RjE4RUJCNzQ0MDA3QUY5MkYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9
OworCQk2NTc4OEE5RTE4QjQwOUVCMDBDMTg5RkYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRkY5MjJDMzE0
RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0
UHJveHkgPSA2NTc4OEE5RjE4QjQwOUVCMDBDMTg5RkYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovOworCQl9OworCQk2NTc4OEFBQjE4QjQwQTNCMDBDMTg5RkYgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA2
NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovOworCQkJdGFyZ2V0
UHJveHkgPSA2NTc4OEFBQTE4QjQwQTNCMDBDMTg5RkYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovOworCQl9OworCQk2NTc4OEFBRDE4QjQwQTdCMDBDMTg5RkYgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA2
NTc4OEE5RDE4QjQwOUVCMDBDMTg5RkYgLyogT2ZmbGluZSBBc3NlbWJsZXIgKi87CisJCQl0YXJn
ZXRQcm94eSA9IDY1Nzg4QUFDMThCNDBBN0IwMEMxODlGRiAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi87CisJCX07CisJCTY1RkIzRjdFMDlEMTFFRjMwMEY0OURFQiAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9
IDY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi87CisJCQl0YXJn
ZXRQcm94eSA9IDY1RkIzRjdEMDlEMTFFRjMwMEY0OURFQiAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi87CisJCX07CisJCTkzMkY1QkU3MDgyMkExQzcwMDczNjk3NSAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9
IDkzMkY1QjNFMDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZSAqLzsKKwkJCXRhcmdl
dFByb3h5ID0gOTMyRjVCRTYwODIyQTFDNzAwNzM2OTc1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLzsKKwkJfTsKKy8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KKworLyog
QmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODBBRDE0QkE3RkQ5
MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNl
cyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MEFFMTRCQTdG
RDkwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNv
dXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MEFG
MTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRl
cml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9Owor
CQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNU
X05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0
aW9uOworCQl9OworCQkwRkNFRkFCODE4MDVENjE2MDA0NzJDRTQgLyogRGVidWcgKi8gPSB7CisJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gMEZDRUZBQkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JKU0MueGNjb25maWcgKi87
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJ
MEZDRUZBQjkxODA1RDYxNjAwNDcyQ0U0IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMEZDRUZB
QkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JKU0MueGNjb25maWcgKi87CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRkNFRkFCQTE4
MDVENjE2MDA0NzJDRTQgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4
NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRkNFRkFCQjE4MDVENjE2
MDA0NzJDRTQgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4MDVEODY5MDA0
NzJDRTQgLyogTExWTUZvckpTQy54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGRjkyMkNCMTRGNDZCMTMwMDQx
QTI0RSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyog
VG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsK
KwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEZGOTIyQ0MxNEY0NkIxMzAwNDFBMjRFIC8qIFJl
bGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVj
dXRhYmxlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1l
ID0gUmVsZWFzZTsKKwkJfTsKKwkJMEZGOTIyQ0QxNEY0NkIxMzAwNDFBMjRFIC8qIFByb2ZpbGlu
ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFi
bGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQ
cm9maWxpbmc7CisJCX07CisJCTBGRjkyMkNFMTRGNDZCMTMwMDQxQTI0RSAvKiBQcm9kdWN0aW9u
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJs
ZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFBy
b2R1Y3Rpb247CisJCX07CisJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNj
b25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsK
KwkJfTsKKwkJMTQxMjExM0IwQTQ4Nzk4NDAwNDgwMjU1IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICov
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsK
KwkJMTQxMjExM0MwQTQ4Nzk4NDAwNDgwMjU1IC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
QkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsK
KwkJMTQ5QzI3NUUwODkwMkFGRTAwOEE5RUZDIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1
MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJSU5TVEFMTF9QQVRIID0gIiQoQlVJTFRfUFJPRFVDVFNfRElS
KSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDlDMjc1RjA4OTAyQUZFMDA4
QTlFRkMgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAg
LyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUlOU1RBTExfUEFUSCA9ICIkKEJVSUxUX1BST0RVQ1RTX0RJUikiOworCQkJfTsKKwkJCW5hbWUg
PSBSZWxlYXNlOworCQl9OworCQkxNDlDMjc2MTA4OTAyQUZFMDA4QTlFRkMgLyogUHJvZHVjdGlv
biAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENv
cmUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUJVSUxEX1ZBUklBTlRT
ID0gbm9ybWFsOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkxNDlDMjc2
ODA4OTAyQUZFMDA4QTlFRkMgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2
MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9
OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDlDMjc2OTA4OTAyQUZFMDA4QTlFRkMgLyog
UmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhj
Y29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJMTQ5QzI3NkIwODkwMkFGRTAwOEE5RUZDIC8qIFByb2R1Y3Rpb24gKi8gPSB7
CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVm
ZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJ
CTE0OUMyNzZEMDg5MDJBRkUwMDhBOUVGQyAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUg
PSBBbGw7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDlDMjc2RTA4OTAyQUZF
MDA4QTlFRkMgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSBBbGw7CisJCQl9Owor
CQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0OUMyNzcwMDg5MDJBRkUwMDhBOUVGQyAvKiBQ
cm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9IEFsbDsKKwkJCX07CisJCQluYW1lID0g
UHJvZHVjdGlvbjsKKwkJfTsKKwkJMTQ5QzI3NzIwODkwMkFGRTAwOEE5RUZDIC8qIERlYnVnICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDFDOTA1MTQ0MEJBOUU4QTcwMDgxRTlEMCAvKiBEZWJ1Z1JlbGVhc2UueGNj
b25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCURFQURfQ09ERV9TVFJJUFBJTkcg
PSAiJChERUFEX0NPREVfU1RSSVBQSU5HX2RlYnVnKSI7CisJCQkJREVCVUdfREVGSU5FUyA9ICIk
KERFQlVHX0RFRklORVNfZGVidWcpIjsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gIiQo
R0NDX09QVElNSVpBVElPTl9MRVZFTF9kZWJ1ZykiOworCQkJCVNUUklQX0lOU1RBTExFRF9QUk9E
VUNUID0gIiQoU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1RfZGVidWcpIjsKKwkJCX07CisJCQluYW1l
ID0gRGVidWc7CisJCX07CisJCTE0OUMyNzczMDg5MDJBRkUwMDhBOUVGQyAvKiBSZWxlYXNlICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDFDOTA1MTQ0MEJBOUU4QTcwMDgxRTlEMCAvKiBEZWJ1Z1JlbGVhc2UueGNj
b25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVNUUklQX0lOU1RBTExFRF9QUk9E
VUNUID0gTk87CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0OUMyNzc1MDg5
MDJBRkUwMDhBOUVGQyAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQ1MEJBOUU4
QTcwMDgxRTlEMCAvKiBCYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMTRCRDU5RDcwQTNFOEZDOTAwQkFG
NTlDIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBU
b29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9Owor
CQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNEJENTlEODBBM0U4RkM5MDBCQUY1OUMgLyogUmVs
ZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1
dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUg
PSBSZWxlYXNlOworCQl9OworCQkxNEJENTlEOTBBM0U4RkM5MDBCQUY1OUMgLyogUHJvZHVjdGlv
biAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFi
bGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQ
cm9kdWN0aW9uOworCQl9OworCQk1NTQwN0FDNDE4REE1OEFEMDBFRkY3RjIgLyogRGVidWcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gNTU0MDc1ODQxOEY0QTM3NTAwNjAyQTVEIC8qIENvbXBpbGVSdW50aW1lVG9M
TFZNSVIueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUg
PSBEZWJ1ZzsKKwkJfTsKKwkJNTU0MDdBQzUxOERBNThBRDAwRUZGN0YyIC8qIFJlbGVhc2UgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gNTU0MDc1ODQxOEY0QTM3NTAwNjAyQTVEIC8qIENvbXBpbGVSdW50aW1lVG9M
TFZNSVIueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUg
PSBSZWxlYXNlOworCQl9OworCQk1NTQwN0FDNjE4REE1OEFEMDBFRkY3RjIgLyogUHJvZmlsaW5n
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDU1NDA3NTg0MThGNEEzNzUwMDYwMkE1RCAvKiBDb21waWxlUnVudGlt
ZVRvTExWTUlSLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQlu
YW1lID0gUHJvZmlsaW5nOworCQl9OworCQk1NTQwN0FDNzE4REE1OEFEMDBFRkY3RjIgLyogUHJv
ZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA1NTQwNzU4NDE4RjRBMzc1MDA2MDJBNUQgLyogQ29tcGls
ZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9
OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTVENkIyQTQ4MTUyQjlFMTcwMDUyMzFE
RSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNUQ2QjJBNDkxNTJCOUUxNzAwNTIzMURFIC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07
CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJNUQ2QjJBNEExNTJCOUUxNzAwNTIzMURFIC8q
IFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJ
fTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTVENkIyQTRCMTUyQjlFMTcwMDUyMzFE
RSAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7
CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTY1MTEyMzAxMTQwNDZBNEMw
MDJCMTAxRCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0Njcg
LyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNjUxMTIzMDIxNDA0NkE0QzAwMkIxMDFEIC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xF
eGVjdXRhYmxlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQlu
YW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJNjUxMTIzMDMxNDA0NkE0QzAwMkIxMDFEIC8qIFByb2Zp
bGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1
dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUg
PSBQcm9maWxpbmc7CisJCX07CisJCTY1MTEyMzA0MTQwNDZBNEMwMDJCMTAxRCAvKiBQcm9kdWN0
aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0
YWJsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9
IFByb2R1Y3Rpb247CisJCX07CisJCTY1Nzg4QUEzMThCNDA5RUIwMEMxODlGRiAvKiBEZWJ1ZyAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUu
eGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUlORk9QTElTVF9GSUxFID0g
IkRlcml2ZWQgU291cmNlcyBjb3B5LUluZm8ucGxpc3QiOworCQkJCVBST0RVQ1RfTkFNRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk2
NTc4OEFBNDE4QjQwOUVCMDBDMTg5RkYgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0
MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUlORk9QTElTVF9GSUxFID0gIkRlcml2ZWQgU291cmNlcyBjb3B5
LUluZm8ucGxpc3QiOworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7
CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTY1Nzg4QUE1MThCNDA5RUIwMEMx
ODlGRiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQw
IC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlJTkZPUExJU1RfRklMRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0IjsKKwkJ
CQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9maWxpbmc7CisJCX07CisJCTY1Nzg4QUE2MThCNDA5RUIwMEMxODlGRiAvKiBQcm9kdWN0
aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0
Q29yZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSU5GT1BMSVNUX0ZJ
TEUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHktSW5mby5wbGlzdCI7CisJCQkJUFJPRFVDVF9OQU1F
ID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsK
KwkJfTsKKwkJNjVGQjNGNzgwOUQxMUVCRDAwRjQ5REVCIC8qIERlYnVnICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9
IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2
ZWQgU291cmNlcyI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk2NUZCM0Y3OTA5
RDExRUJEMDBGNDlERUIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3
MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOworCQkJ
fTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQk2NUZCM0Y3QTA5RDExRUJEMDBGNDlERUIg
LyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyog
SmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBS
T0RVQ1RfTkFNRSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9kdWN0aW9uOworCQl9OworCQlBNzYxNDgzRDBFNjQwMkY3MDBFMzU3RkEgLyogUHJvZmls
aW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQ0MEJBOUU4QTcwMDgxRTlEMCAvKiBEZWJ1Z1JlbGVh
c2UueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVNUUklQX0lOU1RBTExF
RF9QUk9EVUNUID0gTk87CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJQTc2
MTQ4M0UwRTY0MDJGNzAwRTM1N0ZBIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUg
PSBBbGw7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJQTc2MTQ4M0YwRTY0
MDJGNzAwRTM1N0ZBIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3
MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUlOU1RBTExfUEFUSCA9ICIkKEJVSUxUX1BST0RVQ1RTX0RJUikiOworCQkJfTsK
KwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCUE3NjE0ODQwMEU2NDAyRjcwMEUzNTdGQSAv
KiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEph
dmFTY3JpcHRDb3JlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9E
VUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJCX07CisJCQluYW1lID0g
UHJvZmlsaW5nOworCQl9OworCQlBNzYxNDg0MTBFNjQwMkY3MDBFMzU3RkEgLyogUHJvZmlsaW5n
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJs
ZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFBy
b2ZpbGluZzsKKwkJfTsKKwkJQTc2MTQ4NDIwRTY0MDJGNzAwRTM1N0ZBIC8qIFByb2ZpbGluZyAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUu
eGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9m
aWxpbmc7CisJCX07CisJCUE3NjE0ODQzMEU2NDAyRjcwMEUzNTdGQSAvKiBQcm9maWxpbmcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsK
Ky8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29u
ZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9m
ZnNldHMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICov
LAorCQkJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4
MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwQjAxNEJBN0ZE
OTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlv
bjsKKwkJfTsKKwkJMEZDRUZBQjcxODA1RDYxNjAwNDcyQ0U0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsbHZtRm9ySlNDIiAqLyA9IHsKKwkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBG
Q0VGQUI4MTgwNUQ2MTYwMDQ3MkNFNCAvKiBEZWJ1ZyAqLywKKwkJCQkwRkNFRkFCOTE4MDVENjE2
MDA0NzJDRTQgLyogUmVsZWFzZSAqLywKKwkJCQkwRkNFRkFCQTE4MDVENjE2MDA0NzJDRTQgLyog
UHJvZmlsaW5nICovLAorCQkJCTBGQ0VGQUJCMTgwNUQ2MTYwMDQ3MkNFNCAvKiBQcm9kdWN0aW9u
ICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGRjkyMkNBMTRG
NDZCMTMwMDQxQTI0RSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRh
cmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmln
dXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGRjkyMkNCMTRG
NDZCMTMwMDQxQTI0RSAvKiBEZWJ1ZyAqLywKKwkJCQkwRkY5MjJDQzE0RjQ2QjEzMDA0MUEyNEUg
LyogUmVsZWFzZSAqLywKKwkJCQkwRkY5MjJDRDE0RjQ2QjEzMDA0MUEyNEUgLyogUHJvZmlsaW5n
ICovLAorCQkJCTBGRjkyMkNFMTRGNDZCMTMwMDQxQTI0RSAvKiBQcm9kdWN0aW9uICovLAorCQkJ
KTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4
MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWlu
aWRvbSIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25m
aWd1cmF0aW9ucyA9ICgKKwkJCQkxNDEyMTEzQTBBNDg3OTg0MDA0ODAyNTUgLyogRGVidWcgKi8s
CisJCQkJMTQxMjExM0IwQTQ4Nzk4NDAwNDgwMjU1IC8qIFJlbGVhc2UgKi8sCisJCQkJQTc2MTQ4
NDEwRTY0MDJGNzAwRTM1N0ZBIC8qIFByb2ZpbGluZyAqLywKKwkJCQkxNDEyMTEzQzBBNDg3OTg0
MDA0ODAyNTUgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9u
OworCQl9OworCQkxNDlDMjc1RDA4OTAyQUZFMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkphdmFTY3JpcHRDb3JlIiAqLyA9IHsKKwkJCWlz
YSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJ
CTE0OUMyNzVFMDg5MDJBRkUwMDhBOUVGQyAvKiBEZWJ1ZyAqLywKKwkJCQkxNDlDMjc1RjA4OTAy
QUZFMDA4QTlFRkMgLyogUmVsZWFzZSAqLywKKwkJCQlBNzYxNDgzRjBFNjQwMkY3MDBFMzU3RkEg
LyogUHJvZmlsaW5nICovLAorCQkJCTE0OUMyNzYxMDg5MDJBRkUwMDhBOUVGQyAvKiBQcm9kdWN0
aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTE0OUMyNzY3
MDg5MDJBRkUwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAianNjIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0OUMyNzY4MDg5MDJBRkUwMDhBOUVGQyAvKiBE
ZWJ1ZyAqLywKKwkJCQkxNDlDMjc2OTA4OTAyQUZFMDA4QTlFRkMgLyogUmVsZWFzZSAqLywKKwkJ
CQlBNzYxNDg0MzBFNjQwMkY3MDBFMzU3RkEgLyogUHJvZmlsaW5nICovLAorCQkJCTE0OUMyNzZC
MDg5MDJBRkUwMDhBOUVGQyAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFBy
b2R1Y3Rpb247CisJCX07CisJCTE0OUMyNzZDMDg5MDJBRkUwMDhBOUVGQyAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiQWxsIiAqLyA9IHsKKwkJCWlz
YSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJ
CTE0OUMyNzZEMDg5MDJBRkUwMDhBOUVGQyAvKiBEZWJ1ZyAqLywKKwkJCQkxNDlDMjc2RTA4OTAy
QUZFMDA4QTlFRkMgLyogUmVsZWFzZSAqLywKKwkJCQlBNzYxNDgzRTBFNjQwMkY3MDBFMzU3RkEg
LyogUHJvZmlsaW5nICovLAorCQkJCTE0OUMyNzcwMDg5MDJBRkUwMDhBOUVGQyAvKiBQcm9kdWN0
aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTE0OUMyNzcx
MDg5MDJBRkUwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2pl
Y3QgIkphdmFTY3JpcHRDb3JlIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0OUMyNzcyMDg5MDJBRkUwMDhBOUVG
QyAvKiBEZWJ1ZyAqLywKKwkJCQkxNDlDMjc3MzA4OTAyQUZFMDA4QTlFRkMgLyogUmVsZWFzZSAq
LywKKwkJCQlBNzYxNDgzRDBFNjQwMkY3MDBFMzU3RkEgLyogUHJvZmlsaW5nICovLAorCQkJCTE0
OUMyNzc1MDg5MDJBRkUwMDhBOUVGQyAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTE0QkQ1OUQ2MEEzRThGQzkwMEJBRjU5QyAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAidGVzdGFwaSIgKi8gPSB7
CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKKwkJCQkxNEJENTlENzBBM0U4RkM5MDBCQUY1OUMgLyogRGVidWcgKi8sCisJCQkJMTRCRDU5
RDgwQTNFOEZDOTAwQkFGNTlDIC8qIFJlbGVhc2UgKi8sCisJCQkJQTc2MTQ4NDIwRTY0MDJGNzAw
RTM1N0ZBIC8qIFByb2ZpbGluZyAqLywKKwkJCQkxNEJENTlEOTBBM0U4RkM5MDBCQUY1OUMgLyog
UHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9
IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQk1
NTQwN0FDMzE4REE1OEFEMDBFRkY3RjIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIkNvbXBpbGUgUnVudGltZSB0byBMTFZNIElSIiAqLyA9IHsKKwkJCWlz
YSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJ
CTU1NDA3QUM0MThEQTU4QUQwMEVGRjdGMiAvKiBEZWJ1ZyAqLywKKwkJCQk1NTQwN0FDNTE4REE1
OEFEMDBFRkY3RjIgLyogUmVsZWFzZSAqLywKKwkJCQk1NTQwN0FDNjE4REE1OEFEMDBFRkY3RjIg
LyogUHJvZmlsaW5nICovLAorCQkJCTU1NDA3QUM3MThEQTU4QUQwMEVGRjdGMiAvKiBQcm9kdWN0
aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTVENkIyQTRD
MTUyQjlFMTcwMDUyMzFERSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3Jl
Z2F0ZVRhcmdldCAiVGVzdCBUb29scyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25M
aXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk1RDZCMkE0ODE1MkI5RTE3MDA1
MjMxREUgLyogRGVidWcgKi8sCisJCQkJNUQ2QjJBNDkxNTJCOUUxNzAwNTIzMURFIC8qIFJlbGVh
c2UgKi8sCisJCQkJNUQ2QjJBNEExNTJCOUUxNzAwNTIzMURFIC8qIFByb2ZpbGluZyAqLywKKwkJ
CQk1RDZCMkE0QjE1MkI5RTE3MDA1MjMxREUgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQk2NTExMjMwMDE0MDQ2QTRDMDAyQjEwMUQgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgInRlc3RSZWdFeHAi
ICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbnMgPSAoCisJCQkJNjUxMTIzMDExNDA0NkE0QzAwMkIxMDFEIC8qIERlYnVnICovLAorCQkJ
CTY1MTEyMzAyMTQwNDZBNEMwMDJCMTAxRCAvKiBSZWxlYXNlICovLAorCQkJCTY1MTEyMzAzMTQw
NDZBNEMwMDJCMTAxRCAvKiBQcm9maWxpbmcgKi8sCisJCQkJNjUxMTIzMDQxNDA0NkE0QzAwMkIx
MDFEIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zp
c2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJ
fTsKKwkJNjU3ODhBQTIxOEI0MDlFQjAwQzE4OUZGIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJPZmZsaW5lIEFzc2VtYmxlciIgKi8gPSB7CisJCQlp
c2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJ
CQk2NTc4OEFBMzE4QjQwOUVCMDBDMTg5RkYgLyogRGVidWcgKi8sCisJCQkJNjU3ODhBQTQxOEI0
MDlFQjAwQzE4OUZGIC8qIFJlbGVhc2UgKi8sCisJCQkJNjU3ODhBQTUxOEI0MDlFQjAwQzE4OUZG
IC8qIFByb2ZpbGluZyAqLywKKwkJCQk2NTc4OEFBNjE4QjQwOUVCMDBDMTg5RkYgLyogUHJvZHVj
dGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQk2NUZCM0Y3
NzA5RDExRUJEMDBGNDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dy
ZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3Vy
YXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk2NUZCM0Y3ODA5RDEx
RUJEMDBGNDlERUIgLyogRGVidWcgKi8sCisJCQkJNjVGQjNGNzkwOUQxMUVCRDAwRjQ5REVCIC8q
IFJlbGVhc2UgKi8sCisJCQkJQTc2MTQ4NDAwRTY0MDJGNzAwRTM1N0ZBIC8qIFByb2ZpbGluZyAq
LywKKwkJCQk2NUZCM0Y3QTA5RDExRUJEMDBGNDlERUIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxp
c3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBkY2U4MWU3Li5hNDRkMWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0x
LDcgKzEsNyBAQAogWwogICAgIHsKLSAgICAgICAgInNlY3Rpb24iIDogIkJ5dGVjb2RlcyIsICJl
bWl0SW5IRmlsZSIgOiB0cnVlLCAiZW1pdEluQVNNRmlsZSIgOiB0cnVlLCAKLSAgICAgICAgIm1h
Y3JvTmFtZUNvbXBvbmVudCIgOiAiQllURUNPREUiLCAiYXNtUHJlZml4IiA6ICJsbGludF8iLCAK
KyAgICAgICAgInNlY3Rpb24iIDogIkJ5dGVjb2RlcyIsICJlbWl0SW5IRmlsZSIgOiB0cnVlLCAi
ZW1pdEluQVNNRmlsZSIgOiB0cnVlLAorICAgICAgICAibWFjcm9OYW1lQ29tcG9uZW50IiA6ICJC
WVRFQ09ERSIsICJhc21QcmVmaXgiIDogImxsaW50XyIsCiAgICAgICAgICJieXRlY29kZXMiIDog
WwogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW50ZXIiLCAibGVuZ3RoIiA6IDEgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9hY3RpdmF0aW9uIiwgImxlbmd0aCIgOiAy
IH0sCkBAIC0xMTMsNiArMTEzLDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc29s
dmVfc2NvcGUiLCAibGVuZ3RoIiA6IDYgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dl
dF9mcm9tX3Njb3BlIiwgImxlbmd0aCIgOiA4IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9wdXRfdG9fc2NvcGUiLCAibGVuZ3RoIiA6IDcgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGUiLCAibGVuZ3RoIiA6IDggfSwKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX3B1c2hfd2l0aF9zY29wZSIsICJsZW5ndGgiIDogMiB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfcG9wX3Njb3BlIiwgImxlbmd0aCIgOiAxIH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX25hbWVfc2NvcGUiLCAibGVuZ3RoIiA6IDQgfSwK
QEAgLTEyMiw3ICsxMjMsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVidWciLCAi
bGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Byb2ZpbGVfd2lsbF9j
YWxsIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxl
X2RpZF9jYWxsIiwgImxlbmd0aCIgOiAyIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9l
bmQiLCAibGVuZ3RoIiA6IDIgfQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxl
bmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3R5cGVzX3dp
dGhfaGlnaF9maWRlbGl0eSIsICJsZW5ndGgiIDogNCB9CiAgICAgICAgIF0KICAgICB9LAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
aW5kZXggOTI0NDlmOS4uYTFiZjdjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC01NCwxMiArNTQsMTQgQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzoKICAgICBj
YXNlIG9wX2dldF9jYWxsZWU6CiAgICAgY2FzZSBvcF9lbnRlcjoKKyAgICAvL1RPRE86IFNob3Vs
ZCB0aGlzIGZ1bmN0b3IgYmUgY2FsbGVkIHdpdGggb25lIG9wZXJhbmQ/CisgICAgY2FzZSBvcF9w
cm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKICAgICBjYXNlIG9wX2NhdGNoOgogICAg
IGNhc2Ugb3BfdG91Y2hfZW50cnk6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX25ld19m
dW5jOgogICAgIGNhc2Ugb3BfbmV3X2NhcHR1cmVkX2Z1bmM6Ci0gICAgY2FzZSBvcF9jcmVhdGVf
YWN0aXZhdGlvbjogCisgICAgY2FzZSBvcF9jcmVhdGVfYWN0aXZhdGlvbjoKICAgICBjYXNlIG9w
X2NyZWF0ZV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF90b190aGlzOgogICAgIGNhc2Ugb3BfdGVh
cl9vZmZfYWN0aXZhdGlvbjoKQEAgLTEwNSw2ICsxMDcsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxf
b3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgog
ICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNd
LnUub3BlcmFuZCk7CkBAIC0yNDksNiArMjUyLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwK
ICAgICBjYXNlIG9wX3B1c2hfbmFtZV9zY29wZToKICAgICBjYXNlIG9wX3B1c2hfd2l0aF9zY29w
ZToKICAgICBjYXNlIG9wX3B1dF90b19zY29wZToKKyAgICBjYXNlIG9wX3B1dF90b19zY29wZV93
aXRoX3Byb2ZpbGU6CiAgICAgY2FzZSBvcF9wb3Bfc2NvcGU6CiAgICAgY2FzZSBvcF9lbmQ6CiAg
ICAgY2FzZSBvcF9wcm9maWxlX3dpbGxfY2FsbDoKQEAgLTI4Nyw2ICsyOTEsNyBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2Fz
ZSBvcF9wdXRfYnlfaW5kZXg6CiAgICAgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6CisgICAg
Y2FzZSBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKICAgICBjYXNlIG9wX3Rv
dWNoX2VudHJ5OgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhvcGNvZGUsIGxlbmd0aCkg
Y2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9FWFRFTlNJT04oTExJ
TlRfSEVMUEVSX09QQ09ERVMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAppbmRleCA3NzU2M2E5Li40ZjFmMGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
IkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkRlYnVn
Z2VyLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgpA
QCAtNDcsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05h
bWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgorI2luY2x1ZGUgIlR5cGVM
b2NhdGlvbi5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNHZXRCeUlkTGlzdC5oIgpAQCAtMTEw
LDcgKzExMiw3IEBAIENTdHJpbmcgQ29kZUJsb2NrOjpzb3VyY2VDb2RlRm9yVG9vbHMoKSBjb25z
dAogewogICAgIGlmIChjb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSkKICAgICAgICAgcmV0dXJu
IG93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKS50b1VURjgoKTsKLSAgICAKKwogICAgIFNvdXJj
ZVByb3ZpZGVyKiBwcm92aWRlciA9IHNvdXJjZSgpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUo
KSk7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkID0gZXhlY3V0YWJs
ZS0+dW5saW5rZWRFeGVjdXRhYmxlKCk7CkBAIC0yODgsOSArMjkwLDkgQEAgc3RhdGljIHZvaWQg
ZHVtcFN0cnVjdHVyZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBuYW1lLCBFeGVjU3Rh
dGUqIGV4ZWMsIFMKIHsKICAgICBpZiAoIXN0cnVjdHVyZSkKICAgICAgICAgcmV0dXJuOwotICAg
IAorCiAgICAgb3V0LnByaW50ZigiJXMgPSAlcCIsIG5hbWUsIHN0cnVjdHVyZSk7Ci0gICAgCisK
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShl
eGVjLT52bSgpLCBpZGVudC5pbXBsKCkpOwogICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNl
dCkKICAgICAgICAgb3V0LnByaW50ZigiIChvZmZzZXQgPSAlZCkiLCBvZmZzZXQpOwpAQCAtMzIw
LDkgKzMyMiw5IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmlu
dFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGludCBsCiAgICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGxvY2F0aW9uOwogCiAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7Ci0gICAgCisKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOyAvLyB0ZWxsIHRoZSBjb21waWxl
ciB0byBzaHV0IHVwIGluIGNlcnRhaW4gcGxhdGZvcm0gY29uZmlndXJhdGlvbnMuCi0gICAgCisK
ICNpZiBFTkFCTEUoTExJTlQpCiAgICAgaWYgKGV4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29k
ZUlEKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9nZXRfYXJyYXlfbGVuZ3RoKQogICAg
ICAgICBvdXQucHJpbnRmKCIgbGxpbnQoYXJyYXlfbGVuZ3RoKSIpOwpAQCAtMzM4LDE1ICszNDAs
MTUgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFt
JiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGwKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvID0gKnN0dWJQdHI7CiAgICAgICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0MpCiAg
ICAgICAgICAgICBvdXQucHJpbnQoIiAoUmVzZXQgQnkgR0MpIik7Ci0gICAgICAgIAorCiAgICAg
ICAgIGlmIChzdHViSW5mby5zZWVuKSB7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KCIp
OwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSA9
IDA7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSA9IDA7CiAgICAg
ICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSAwOwogICAgICAgICAgICAgUG9seW1vcnBo
aWNHZXRCeUlkTGlzdCogbGlzdCA9IDA7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgc3dp
dGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgICAgICAgICBjYXNlIGFjY2Vzc19nZXRf
YnlfaWRfc2VsZjoKICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJzZWxmIik7CkBAIC0zNjgs
MjIgKzM3MCwyMiBAQCB2b2lkIENvZGVCbG9jazo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJp
bnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbAogICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGJhc2VTdHJ1Y3R1cmUp
IHsKICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIsICIpOwogICAgICAgICAgICAgICAgIGR1
bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0IiwgZXhlYywgYmFzZVN0cnVjdHVyZSwgaWRlbnQpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChwcm90b3R5cGVT
dHJ1Y3R1cmUpIHsKICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIsICIpOwogICAgICAgICAg
ICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAicHJvdG90eXBlU3RydWN0IiwgZXhlYywgYmFzZVN0
cnVjdHVyZSwgaWRlbnQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGlmIChjaGFpbikgewogICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CiAgICAg
ICAgICAgICAgICAgZHVtcENoYWluKG91dCwgZXhlYywgY2hhaW4sIGlkZW50KTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAobGlzdCkgewogICAgICAgICAg
ICAgICAgIG91dC5wcmludGYoIiwgbGlzdCA9ICVwOiBbIiwgbGlzdCk7CiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3QtPnNpemUoKTsgKytpKSB7CkBAIC00NTcs
NyArNDU5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0
KQogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBFeGVjU3RhdGUqIGZvciB0aGluZ3MgdGhhdCBkb24n
dCBhY3R1YWxseSBsZWFkIHRvIEpTIGV4ZWN1dGlvbiwKICAgICAvLyBsaWtlIGNvbnZlcnRpbmcg
YSBKU1N0cmluZyB0byBhIFN0cmluZy4gSGVuY2UgdGhlIGdsb2JhbEV4ZWMgaXMgYXBwcm9wcmlh
dGUuCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsK
LSAgICAKKwogICAgIHNpemVfdCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNb
ZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNv
ZGUpXSkKQEAgLTQ4MywxNyArNDg1LDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
UHJpbnRTdHJlYW0mIG91dCkKICAgICBpZiAobmVlZHNBY3RpdmF0aW9uKCkgJiYgY29kZVR5cGUo
KSA9PSBGdW5jdGlvbkNvZGUpCiAgICAgICAgIG91dC5wcmludGYoIjsgYWN0aXZhdGlvbiBpbiBy
JWQiLCBhY3RpdmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgb3V0LnByaW50ZigiXG4i
KTsKLSAgICAKKwogICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZvczsKICAgICBDYWxsTGlua0luZm9N
YXAgY2FsbExpbmtJbmZvczsKICAgICBnZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwogICAgIGdl
dENhbGxMaW5rSW5mb01hcChjYWxsTGlua0luZm9zKTsKLSAgICAKKwogICAgIGNvbnN0IEluc3Ry
dWN0aW9uKiBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgY29uc3QgSW5zdHJ1
Y3Rpb24qIGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwogICAgIGZvciAoY29uc3QgSW5zdHJ1
Y3Rpb24qIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgZHVtcEJ5dGVjb2Rl
KG91dCwgZXhlYywgYmVnaW4sIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOwotICAgIAor
CiAgICAgaWYgKG51bWJlck9mSWRlbnRpZmllcnMoKSkgewogICAgICAgICBvdXQucHJpbnRmKCJc
bklkZW50aWZpZXJzOlxuIik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKQEAgLTUyOSw3ICs1MzEs
NyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAg
ICAgICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlv
bkhhbmRsZXJzLnNpemUoKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKG1fcmFyZURhdGEgJiYg
IW1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgb3V0
LnByaW50ZigiU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CiAgICAgICAgIHVuc2lnbmVkIGkgPSAw
OwpAQCAtNTQ2LDcgKzU0OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCkKICAgICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFy
ZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmludGYoIlxuU3RyaW5nIFN3aXRjaCBKdW1wIFRhYmxl
czpcbiIpOwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKQEAgLTU2OSw3ICs1NzEsNyBAQCB2b2lk
IENvZGVCbG9jazo6YmVnaW5EdW1wUHJvZmlsaW5nKFByaW50U3RyZWFtJiBvdXQsIGJvb2wmIGhh
c1ByaW50ZWRQcm9maWxpbmcpCiAgICAgICAgIG91dC5wcmludCgiOyAiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICAKKwogICAgIG91dC5wcmludCgiICAgICIpOwogICAgIGhhc1ByaW50
ZWRQcm9maWxpbmcgPSB0cnVlOwogfQpAQCAtNTc3LDcgKzU3OSw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpiZWdpbkR1bXBQcm9maWxpbmcoUHJpbnRTdHJlYW0mIG91dCwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZykKIHZvaWQgQ29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxpbmcoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZykK
IHsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIAorCiAgICAg
KytpdDsKICAgICBDU3RyaW5nIGRlc2NyaXB0aW9uID0gaXQtPnUucHJvZmlsZS0+YnJpZWZEZXNj
cmlwdGlvbihsb2NrZXIpOwogICAgIGlmICghZGVzY3JpcHRpb24ubGVuZ3RoKCkpCkBAIC01ODks
NyArNTkxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGluZyhQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBib28KIHZvaWQgQ29kZUJsb2NrOjpkdW1w
QXJyYXlQcm9maWxpbmcoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwg
Ym9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZykKIHsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwotICAgIAorCiAgICAgKytpdDsKICAgICBpZiAoIWl0LT51LmFycmF5UHJv
ZmlsZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzMzLDYgKzczNSwxNCBAQCB2b2lkIENvZGVCbG9j
azo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxp
dHk6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgLy9pbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgICsraXQ7CisgICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJvcF9w
cm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSIpOworICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX25vdDogewogICAgICAgICAgICAgcHJpbnRVbmFyeU9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibm90Iik7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTgyMSw3ICs4MzEsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfbHNoaWZ0OiB7CiAgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibHNoaWZ0Iik7Ci0gICAgICAgICAgICBicmVhazsgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
cnNoaWZ0OiB7CiAgICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAicnNoaWZ0Iik7CkBAIC0xMTg4LDcgKzExOTgsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cEJ5dGVjb2RlKAogICAgICAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJjYWxsX2V2YWwiLCBEb250RHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2Fs
bExpbmtJbmZvcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAgICAg
CisKICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczoKICAgICAgICAgY2FzZSBvcF9j
YWxsX3ZhcmFyZ3M6IHsKICAgICAgICAgICAgIGludCByZXN1bHQgPSAoKytpdCktPnUub3BlcmFu
ZDsKQEAgLTEyMDMsNyArMTIxMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAg
ICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGlu
Zyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAg
ICAgY2FzZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVy
T3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInRlYXJfb2ZmX2FjdGl2YXRpb24iLCBy
MCk7CkBAIC0xMzUzLDYgKzEzNjMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICAgICAgICAgIG9wZXJhbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KyAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgICAgICBjYXNl
IG9wX3B1dF90b19zY29wZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xMzYxLDYg
KzEzNzIsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgKytp
dDsgLy8gU3RydWN0dXJlCiAgICAgICAgICAgICBpbnQgb3BlcmFuZCA9ICgrK2l0KS0+dS5vcGVy
YW5kOyAvLyBPcGVyYW5kCiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfdG9fc2NvcGUiKTsKKyAgICAgICAgICAgIGlmIChvcGNvZGUg
PT0gb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSkKKyAgICAgICAgICAgICAgICArK2l0Owog
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXU8JXN8JXM+LCA8c3RydWN0dXJl
PiwgJWQiLAogICAgICAgICAgICAgICAgIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBpZE5hbWUo
aWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksCiAg
ICAgICAgICAgICAgICAgbW9kZUFuZFR5cGUub3BlcmFuZCgpLCByZXNvbHZlTW9kZU5hbWUobW9k
ZUFuZFR5cGUubW9kZSgpKSwgcmVzb2x2ZVR5cGVOYW1lKG1vZGVBbmRUeXBlLnR5cGUoKSksCkBA
IC0xMzczLDcgKzEzODYsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogCiAgICAg
ZHVtcFJhcmVDYXNlUHJvZmlsZShvdXQsICJyYXJlIGNhc2U6ICIsIHJhcmVDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGxvY2F0aW9uKSwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgZHVt
cFJhcmVDYXNlUHJvZmlsZShvdXQsICJzcGVjaWFsIGZhc3QgY2FzZTogIiwgc3BlY2lhbEZhc3RD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGxvY2F0aW9uKSwgaGFzUHJpbnRlZFByb2ZpbGlu
Zyk7Ci0gICAgCisKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBWZWN0b3I8REZHOjpGcmVxdWVu
dEV4aXRTaXRlPiBleGl0U2l0ZXMgPSBleGl0UHJvZmlsZSgpLmV4aXRTaXRlc0Zvcihsb2NhdGlv
bik7CiAgICAgaWYgKCFleGl0U2l0ZXMuaXNFbXB0eSgpKSB7CkBAIC0xNDYxLDIzICsxNDc0LDIz
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBv
dGhlcikKICNlbmRpZgogewogICAgIEFTU0VSVChtX2hlYXAtPmlzRGVmZXJyZWQoKSk7Ci0gICAg
CisKICAgICBpZiAoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gb3RoZXIuc3ltYm9sVGFibGUo
KSkKICAgICAgICAgbV9zeW1ib2xUYWJsZS5zZXQoKm1fdm0sIG1fb3duZXJFeGVjdXRhYmxlLmdl
dCgpLCBzeW1ib2xUYWJsZSk7Ci0gICAgCisKICAgICBzZXROdW1QYXJhbWV0ZXJzKG90aGVyLm51
bVBhcmFtZXRlcnMoKSk7CiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOwogICAgIGppdEFmdGVy
V2FybVVwKCk7CiAKICAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkgewogICAgICAgICBjcmVhdGVS
YXJlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIAorCiAgICAgICAgIG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJz
OwogICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURh
dGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBU
YWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1f
cmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1f
c3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKICAgICB9Ci0gICAgCisKICAgICBtX2hlYXAtPm1fY29k
ZUJsb2Nrcy5hZGQodGhpcyk7CiAgICAgbV9oZWFwLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6
ZW9mKENvZGVCbG9jaykpOwogfQpAQCAtMTUxOCwxNSArMTUzMSwxNSBAQCBDb2RlQmxvY2s6OkNv
ZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbgogICAgIEFTU0VSVChtX2hlYXAtPmlzRGVmZXJyZWQoKSk7CiAKICAgICBib29s
IGRpZENsb25lU3ltYm9sVGFibGUgPSBmYWxzZTsKLSAgICAKKwogICAgIGlmIChTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+c3ltYm9sVGFibGUoKSkgewogICAg
ICAgICBpZiAoY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgc3ltYm9sVGFibGUtPmNhcHR1
cmVDb3VudCgpKSB7CiAgICAgICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCgqbV92bSwgbV9vd25l
ckV4ZWN1dGFibGUuZ2V0KCksIHN5bWJvbFRhYmxlLT5jbG9uZUNhcHR1cmVkTmFtZXMoKm1fdm0p
KTsKICAgICAgICAgICAgIGRpZENsb25lU3ltYm9sVGFibGUgPSB0cnVlOwogICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIG1fc3ltYm9sVGFibGUuc2V0KCptX3ZtLCBtX293bmVyRXhlY3V0YWJs
ZS5nZXQoKSwgc3ltYm9sVGFibGUpOworICAgICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCgqbV92
bSwgbV9vd25lckV4ZWN1dGFibGUuZ2V0KCksIHN5bWJvbFRhYmxlKTsKICAgICB9Ci0gICAgCisK
ICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIHNldE51bVBhcmFtZXRlcnModW5saW5rZWRDb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CiAKQEAgLTE3NjQsNiArMTc3Nyw3IEBAIENvZGVCbG9j
azo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRD
b2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAg
IGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKICAgICAgICAgY2FzZSBvcF9wdXRf
dG9fc2NvcGU6IHsKICAgICAgICAgICAgIC8vIHB1dF90b19zY29wZSBzY29wZSwgaWQsIHZhbHVl
LCBSZXNvbHZlTW9kZUFuZFR5cGUsIFN0cnVjdHVyZSwgT3BlcmFuZAogICAgICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CkBAIC0x
Nzc5LDkgKzE3OTMsNzQgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAgICAgIH0g
ZWxzZSBpZiAob3Auc3RydWN0dXJlKQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsg
NV0udS5zdHJ1Y3R1cmUuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLnN0cnVjdHVyZSk7
CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUucG9pbnRlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KG9wLm9wZXJhbmQpOworCisgICAgICAgICAgICAvLyBwdXRfdG9fc2NvcGVf
d2l0aF9wcm9maWxlIHNjb3BlLCBpZCwgdmFsdWUsIFJlc29sdmVNb2RlQW5kVHlwZSwgU3RydWN0
dXJlLCBPcGVyYW5kLCBUeXBlTG9jYXRpb24qCisgICAgICAgICAgICBpZiAocGNbMF0udS5vcGNv
ZGUgPT0gb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSkgeworICAgICAgICAgICAgICAgIFR5
cGVMb2NhdGlvbiogbG9jYXRpb24gPSB2bSgpLT5uZXh0TG9jYXRpb24oKTsKKyAgICAgICAgICAg
ICAgICBzaXplX3QgaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpICsgb3BMZW5ndGggLSAxOworICAgICAg
ICAgICAgICAgIGludCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsgCisgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbGluZSA9IDAsIGNvbHVtbiA9IDA7CisgICAgICAgICAgICAgICAgbV91
bmxpbmtlZENvZGUuZ2V0KCktPmV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGluc3Ry
dWN0aW9uT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1u
KTsKKworICAgICAgICAgICAgICAgIGxpbmUgKz0gbV9vd25lckV4ZWN1dGFibGUtPmxpbmVObygp
OyAvL2xpbmVObyBmcm9tIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0IGlzIHJlbGF0
aXZlIHRvIHRoaXMgY29kZSBibG9jaywgYnV0IHdlIHdhbnQgaXQgcmVsYXRpdmUgdG8gb3VyIGZp
bGUuCisgICAgICAgICAgICAgICAgbG9jYXRpb24tPnVubGlua2VkQnl0ZUNvZGVPZmZzZXQgPSBp
bnN0cnVjdGlvbk9mZnNldDsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bGluZSA9IGxpbmU7
CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPmNvbHVtbiA9IGNvbHVtbjsKKyAgICAgICAgICAg
ICAgICBsb2NhdGlvbi0+c291cmNlSUQgPSBtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKTsK
KyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRlbGl0
eU5vR2xvYmFsSURFeGlzdHM7CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPmdsb2JhbEluc3Ry
dWN0aW9uSUQgPSB2bSgpLT5nZXROZXh0VW5pcXVlSW5zdHJ1Y3Rpb25JRCgpOworCisgICAgICAg
ICAgICAgICAgLy9UT0RPOiBoYW5kbGUgb3RoZXIgb3AudHlwZSBoZXJlCisgICAgICAgICAgICAg
ICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gMDsKKyAgICAgICAgICAgICAgICBpZiAob3Au
dHlwZSA9PSBDbG9zdXJlVmFyKSAKKyAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBv
cC5hY3RpdmF0aW9uLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9w
LnR5cGUgPT0gR2xvYmFsVmFyKQorICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZSA9IG1f
Z2xvYmFsT2JqZWN0LmdldCgpLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKG9wLnR5cGUgPT0gR2xvYmFsUHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9U
T0RPOiBpbXBsZW1lbnQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAg
ICAgICAgICBsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJ
REZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA3XS51LmxvY2F0aW9uID0g
bG9jYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6IHsKKwor
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcihwY1sxXS51Lm9wZXJh
bmQpOworICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbV9zeW1ib2xUYWJs
ZS5nZXQoKTsKKyAgICAgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSB2bSgpLT5uZXh0
TG9jYXRpb24oKTsKKyAgICAgICAgICAgIHNpemVfdCBpbnN0cnVjdGlvbk9mZnNldCA9IGkgKyBv
cExlbmd0aCAtIDE7CisgICAgICAgICAgICBpbnQgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQ7IAorICAgICAgICAgICAgdW5zaWduZWQgbGluZSA9IDAsIGNvbHVtbiA9IDA7CisgICAgICAg
ICAgICBtX3VubGlua2VkQ29kZS5nZXQoKS0+ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZz
ZXQoaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5l
LCBjb2x1bW4pOworICAgICAgICAgICAgbGluZSArPSBtX293bmVyRXhlY3V0YWJsZS0+bGluZU5v
KCk7CisgICAgICAgICAgICBpbnQgaGFzR2xvYmFsSURGbGFnID0gcGNbM10udS5vcGVyYW5kOwor
ICAgICAgICAgICAgaWYgKGhhc0dsb2JhbElERmxhZykgeworICAgICAgICAgICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAg
ICAgIGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9y
UmVnaXN0ZXIobG9ja2VyLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCksICp2bSgpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJ
RCA9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHM7CisKKyAgICAgICAgICAgIGxvY2F0aW9u
LT51bmxpbmtlZEJ5dGVDb2RlT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25PZmZzZXQ7CisgICAgICAgICAg
ICBsb2NhdGlvbi0+bGluZSA9IGxpbmU7CisgICAgICAgICAgICBsb2NhdGlvbi0+Y29sdW1uID0g
Y29sdW1uOworICAgICAgICAgICAgbG9jYXRpb24tPnNvdXJjZUlEID0gbV9vd25lckV4ZWN1dGFi
bGUtPnNvdXJjZUlEKCk7CisgICAgICAgICAgICBsb2NhdGlvbi0+Z2xvYmFsSW5zdHJ1Y3Rpb25J
RCA9IHZtKCktPmdldE5leHRVbmlxdWVJbnN0cnVjdGlvbklEKCk7CisKKyAgICAgICAgICAgIC8v
U3RyaW5nIG5hbWUgPSBuYW1lRm9yUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgIC8vcHJpbnRmKCJMSU5LSU5HOiBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0
eSBoYXMgdW5pcXVlSUQ6JyVsbHUnIGFuZCBuYW1lOiclcycsIGxpbmU6JyV1JywgY29sdW1uOicl
dSdcbiIsIGdsb2JhbElELCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBsb2NhdGlvbi0+bGluZSwgbG9j
YXRpb24tPmNvbHVtbik7IAorICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyAyXS51LmxvY2F0
aW9uID0gbG9jYXRpb247CisgICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQotICAgICAgICAgICAgCisKKwogICAgICAgICBjYXNlIG9wX2NhcHR1cmVkX21vdjoKICAg
ICAgICAgY2FzZSBvcF9uZXdfY2FwdHVyZWRfZnVuYzogewogICAgICAgICAgICAgaWYgKHBjWzNd
LnUuaW5kZXggPT0gVUlOVF9NQVgpIHsKQEAgLTE4MjQsNyArMTkwMyw3IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGluCiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcEdlbmVyYXRlZEJ5dGVjb2Rlcygp
KQogICAgICAgICBkdW1wQnl0ZWNvZGUoKTsKLSAgICAKKwogICAgIG1faGVhcC0+bV9jb2RlQmxv
Y2tzLmFkZCh0aGlzKTsKICAgICBtX2hlYXAtPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplb2Yo
Q29kZUJsb2NrKSArIG1faW5zdHJ1Y3Rpb25zLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikp
OwogfQpAQCAtMTgzMywxMiArMTkxMiwxMiBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogewog
ICAgIGlmIChtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCiAgICAgICAgIG1fdm0tPm1fcGVy
Qnl0ZWNvZGVQcm9maWxlci0+bm90aWZ5RGVzdHJ1Y3Rpb24odGhpcyk7Ci0gICAgCisKICNpZiBF
TkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShMTElOVCkgICAgCisjaWYgRU5BQkxFKExMSU5UKQogICAgIHdo
aWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxz
LmVuZCgpKQogICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsK
ICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkBAIC0xODUxLDcgKzE5MzAsNyBAQCBDb2RlQmxvY2s6
On5Db2RlQmxvY2soKQogICAgIC8vIGRlc3RydWN0b3Igd2lsbCB0cnkgdG8gcmVtb3ZlIG5vZGVz
IGZyb20gb3VyIChubyBsb25nZXIgdmFsaWQpIGxpbmtlZCBsaXN0LgogICAgIHdoaWxlIChtX2lu
Y29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAgICAgIG1f
aW5jb21pbmdDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsKLSAgICAKKwogICAgIC8vIE5vdGUgdGhh
dCBvdXIgb3V0Z29pbmcgY2FsbHMgd2lsbCBiZSByZW1vdmVkIGZyb20gb3RoZXIgQ29kZUJsb2Nr
cycKICAgICAvLyBtX2luY29taW5nQ2FsbHMgbGlua2VkIGxpc3RzIHRocm91Z2ggdGhlIGV4ZWN1
dGlvbiBvZiB0aGUgfkNhbGxMaW5rSW5mbwogICAgIC8vIGRlc3RydWN0b3JzLgpAQCAtMTkwMiw3
ICsxOTgxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgICAgICAgICAgLy8gYmUgbXV0YXRpbmcgdGhlIHN0YXRlIG9mIFZhbHVlUHJv
ZmlsZXMsIHdoaWNoIGNvbnRhaW4gSlNWYWx1ZXMsIHdoaWNoIGNhbgogICAgICAgICAgICAgLy8g
aGF2ZSB3b3JkLXRlYXJpbmcgb24gMzItYml0LCBsZWFkaW5nIHRvIGF3ZXNvbWUgdGltaW5nLWRl
cGVuZGVudCBjcmFzaGVzCiAgICAgICAgICAgICAvLyB0aGF0IGFyZSBuZWFybHkgaW1wb3NzaWJs
ZSB0byB0cmFjayBkb3duLgotICAgICAgICAgICAgCisKICAgICAgICAgICAgIC8vIEFsc28gbm90
ZSB0aGF0IGl0IG11c3QgYmUgc2FmZSB0byByZXR1cm4gZWFybHkgYXMgc29vbiBhcyB3ZSBzZWUg
dGhlCiAgICAgICAgICAgICAvLyB2YWx1ZSB0cnVlICh3ZWxsLCAodW5zaWduZWQpMSksIHNpbmNl
IG9uY2UgYSBHQyB0aHJlYWQgaXMgaW4gdGhpcyBtZXRob2QKICAgICAgICAgICAgIC8vIGFuZCBo
YXMgd29uIHRoZSBDQVMgcmFjZSAoaS5lLiB3YXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhl
IHZhbHVlIHRydWUpCkBAIC0xOTEyLDEwICsxOTkxLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNp
dEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICAgICAgfQogICAgIH0gd2hpbGUg
KCFXVEY6OndlYWtDb21wYXJlQW5kU3dhcCgmbV92aXNpdEFnZ3JlZ2F0ZUhhc0JlZW5DYWxsZWQs
IDAsIDEpKTsKICNlbmRpZiAvLyBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgCisKICAgICBpZiAo
ISFtX2FsdGVybmF0aXZlKQogICAgICAgICBtX2FsdGVybmF0aXZlLT52aXNpdEFnZ3JlZ2F0ZSh2
aXNpdG9yKTsKLSAgICAKKwogICAgIGlmIChDb2RlQmxvY2sqIG90aGVyQmxvY2sgPSBzcGVjaWFs
T1NSRW50cnlCbG9ja09yTnVsbCgpKQogICAgICAgICBvdGhlckJsb2NrLT52aXNpdEFnZ3JlZ2F0
ZSh2aXNpdG9yKTsKIApAQCAtMTkzNyw5ICsyMDE2LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnZpc2l0
QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIC8vIGxlYXN0IG9uZSBvZiB0aG9z
ZSB0aGluZ3MgaXMgcHJvYmFibHkgcXVpdGUgY2xvc2UgdG8gMS4gU28gd2UgYWRkIG9uZSBubyBt
YXR0ZXIgd2hhdAogICAgIC8vIGFuZCB3aGVuIGl0IHJ1bnMsIGl0IGZpZ3VyZXMgb3V0IHdoZXRo
ZXIgaXQgaGFzIGFueSB3b3JrIHRvIGRvLgogICAgIHZpc2l0b3IuYWRkVW5jb25kaXRpb25hbEZp
bmFsaXplcih0aGlzKTsKLSAgICAKKwogICAgIG1fYWxsVHJhbnNpdGlvbnNIYXZlQmVlbk1hcmtl
ZCA9IGZhbHNlOwotICAgIAorCiAgICAgaWYgKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5l
c3NEdXJpbmdTY2FuKCkpIHsKICAgICAgICAgLy8gVGhpcyBjb2RlIGJsb2NrIGlzIGxpdmUsIHNv
IHNjYW4gYWxsIHJlZmVyZW5jZXMgc3Ryb25nbHkgYW5kIHJldHVybi4KICAgICAgICAgc3Ryb25n
bHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXModmlzaXRvcik7CkBAIC0xOTQ3LDcgKzIwMjYsNyBAQCB2
b2lkIENvZGVCbG9jazo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
ICAgIHByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIAorCiAgICAgLy8gVGhlcmUgYXJlIHR3byB0aGluZ3MgdGhhdCB3ZSB1c2Ugd2VhayBy
ZWZlcmVuY2UgaGFydmVzdGVycyBmb3I6IERGRyBmaXhwb2ludCBmb3IKICAgICAvLyBqZXR0aXNv
bmluZywgYW5kIHRyeWluZyB0byBmaW5kIHN0cnVjdHVyZXMgdGhhdCB3b3VsZCBiZSBsaXZlIGJh
c2VkIG9uIHNvbWUKICAgICAvLyBpbmxpbmUgY2FjaGUuIFNvIGl0IG1ha2VzIHNlbnNlIHRvIHJl
Z2lzdGVyIHRoZW0gcmVnYXJkbGVzcy4KQEAgLTE5NjIsOSArMjA0MSw5IEBAIHZvaWQgQ29kZUJs
b2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICAvLyBlaXRoZXIg
dXMgbWFya2luZyBhZGRpdGlvbmFsIG9iamVjdHMsIG9yIGJ5IG90aGVyIG9iamVjdHMgYmVpbmcg
bWFya2VkIGZvcgogICAgIC8vIG90aGVyIHJlYXNvbnMsIHRoYXQgdGhpcyBpdGVyYXRpb24gc2hv
dWxkIHJ1biBhZ2FpbjsgaXQgd2lsbCBub3RpZnkgdXMgb2YgdGhpcwogICAgIC8vIGRlY2lzaW9u
IGJ5IGNhbGxpbmcgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCkuCi0gICAgCisKICAgICBtX2ppdENv
ZGUtPmRmZ0NvbW1vbigpLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQgPSBmYWxzZTsKLSAgICAKKwog
ICAgIHByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwogICAgIGRldGVybWluZUxpdmVuZXNz
KHZpc2l0b3IpOwogI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCkBAIC0yMDA3LDcgKzIwODYsNyBA
QCBib29sIENvZGVCbG9jazo6aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKQogICAgIC8vICAgYmVj
YXVzZSBlaXRoZXIgbGl2ZW5lc3NIYXNCZWVuUHJvdmVkIHdvdWxkIGhhdmUgc3Vydml2ZWQgYXMg
dHJ1ZSBvciBtX21heUJlRXhlY3V0aW5nCiAgICAgLy8gICB3b3VsZCBzdXJ2aXZlIGFzIHRydWUu
CiAgICAgLy8gLSBDb2RlIGJsb2NrcyB0aGF0IGRvbid0IGhhdmUgYW55IGRlYWQgd2VhayByZWZl
cmVuY2VzLgotICAgIAorCiAgICAgcmV0dXJuIHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5l
c3NEdXJpbmdTY2FuKCkKICAgICAgICAgfHwgbV9qaXRDb2RlLT5kZmdDb21tb24oKS0+bGl2ZW5l
c3NIYXNCZWVuUHJvdmVkOwogI2Vsc2UKQEAgLTIwMjMsNyArMjEwMiw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYm9vbCBhbGxBcmVNYXJrZWRTb0ZhciA9IHRydWU7Ci0gICAgICAgIAor
CiAjaWYgRU5BQkxFKExMSU5UKQogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fdm0t
PmludGVycHJldGVyOwogICAgIGlmIChqaXRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuaykgewpAQCAtMjA4MiwxNCArMjE2MSwxNCBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRl
VHJhbnNpdGlvbnMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKLSAgICAKKwogI2lmIEVOQUJM
RShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkg
ewogICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29t
bW9uKCk7CkBAIC0yMTE0LDcgKzIxOTMsNyBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJh
bnNpdGlvbnMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCi0gICAgCisKICAgICBpZiAoYWxsQXJlTWFya2VkU29GYXIpCiAg
ICAgICAgIG1fYWxsVHJhbnNpdGlvbnNIYXZlQmVlbk1hcmtlZCA9IHRydWU7CiB9CkBAIC0yMTIy
LDE2ICsyMjAxLDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90
VmlzaXRvciYgdmlzaXRvcikKIHZvaWQgQ29kZUJsb2NrOjpkZXRlcm1pbmVMaXZlbmVzcyhTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7Ci0gICAgCisK
ICAgICBpZiAoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLy8gQ2hlY2sg
aWYgd2UgaGF2ZSBhbnkgcmVtYWluaW5nIHdvcmsgdG8gZG8uCiAgICAgREZHOjpDb21tb25EYXRh
KiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwogICAgIGlmIChkZmdDb21tb24t
PmxpdmVuZXNzSGFzQmVlblByb3ZlZCkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgLy8g
Tm93IGNoZWNrIGFsbCBvZiBvdXIgd2VhayByZWZlcmVuY2VzLiBJZiBhbGwgb2YgdGhlbSBhcmUg
bGl2ZSwgdGhlbiB3ZQogICAgIC8vIGhhdmUgcHJvdmVkIGxpdmVuZXNzIGFuZCBzbyB3ZSBzY2Fu
IG91ciBzdHJvbmcgcmVmZXJlbmNlcy4gSWYgYXQgZW5kIG9mCiAgICAgLy8gR0Mgd2Ugc3RpbGwg
aGF2ZSBub3QgcHJvdmVkIGxpdmVuZXNzLCB0aGVuIHRoaXMgY29kZSBibG9jayBpcyB0b2FzdC4K
QEAgLTIxNDIsMTIgKzIyMjEsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmRldGVybWluZUxpdmVuZXNz
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCisKICAgICAvLyBJZiBzb21lIHdlYWsgcmVmZXJlbmNlcyBhcmUgZGVhZCwgdGhl
biB0aGlzIGZpeHBvaW50IGl0ZXJhdGlvbiB3YXMKICAgICAvLyB1bnN1Y2Nlc3NmdWwuCiAgICAg
aWYgKCFhbGxBcmVMaXZlU29GYXIpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vIEFs
bCB3ZWFrIHJlZmVyZW5jZXMgYXJlIGxpdmUuIFJlY29yZCB0aGlzIGluZm9ybWF0aW9uIHNvIHdl
IGRvbid0CiAgICAgLy8gY29tZSBiYWNrIGhlcmUgYWdhaW4sIGFuZCBzY2FuIHRoZSBzdHJvbmcg
cmVmZXJlbmNlcy4KICAgICBkZmdDb21tb24tPmxpdmVuZXNzSGFzQmVlblByb3ZlZCA9IHRydWU7
CkBAIC0yMjI1LDYgKzIzMDQsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZToKKyAgICAgICAgICAgIC8vVE9ETzogd2hhdCBpcyB0
aGlzIGZvcj8KKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToK
ICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAgICAgICAgICAgICAgICAgUmVz
b2x2ZU1vZGVBbmRUeXBlIG1vZGVBbmRUeXBlID0KICAgICAgICAgICAgICAgICAgICAgUmVzb2x2
ZU1vZGVBbmRUeXBlKGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CkBAIC0yMjgxLDcgKzIz
NjIsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBXZWFrIHJlZmVyZW5jZSAiLCBSYXdQb2ludGVyKHdlYWsp
LCAiLlxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9XZWFrUmVmZXJlbmNlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTIyOTEsMTYgKzIzNzIsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmFsaXplVW5jb25kaXRpb25hbGx5KCkKICAgICAvLyBIYW5kbGUgaW5saW5lIGNhY2hlcy4KICAg
ICBpZiAoISFqaXRDb2RlKCkpIHsKICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVy
KHRoaXMpOwotICAgICAgICAKKwogICAgICAgICBmb3IgKGF1dG8gaXRlciA9IGNhbGxMaW5rSW5m
b3NCZWdpbigpOyAhIWl0ZXI7ICsraXRlcikKICAgICAgICAgICAgICgqaXRlciktPnZpc2l0V2Vh
ayhyZXBhdGNoQnVmZmVyKTsKIAogICAgICAgICBmb3IgKEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46
Oml0ZXJhdG9yIGl0ZXIgPSBtX3N0dWJJbmZvcy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgewog
ICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKippdGVyOwotICAgICAg
ICAgICAgCisKICAgICAgICAgICAgIGlmIChzdHViSW5mby52aXNpdFdlYWtSZWZlcmVuY2VzKHJl
cGF0Y2hCdWZmZXIpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCisK
ICAgICAgICAgICAgIHJlc2V0U3R1YkR1cmluZ0dDSW50ZXJuYWwocmVwYXRjaEJ1ZmZlciwgc3R1
YkluZm8pOwogICAgICAgICB9CiAgICAgfQpAQCAtMjM1NCw5ICsyNDM1LDkgQEAgdm9pZCBDb2Rl
QmxvY2s6OnJlc2V0U3R1YihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYg
KHN0dWJJbmZvLmFjY2Vzc1R5cGUgPT0gYWNjZXNzX3Vuc2V0KQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIAorCiAg
ICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHJlc2V0U3R1YkludGVy
bmFsKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvKTsKIH0KQEAgLTIzNjQsMTUgKzI0NDUsMTUgQEAg
dm9pZCBDb2RlQmxvY2s6OnJlc2V0U3R1YihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB2
b2lkIENvZGVCbG9jazo6cmVzZXRTdHViSW50ZXJuYWwoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1
ZmZlciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOwot
ICAgIAorCiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICAvLyBUaGlz
IGNhbiBiZSBjYWxsZWQgZnJvbSBHQyBkZXN0cnVjdG9yIGNhbGxzLCBzbyB3ZSBkb24ndCB0cnkg
dG8gZG8gYSBmdWxsIGR1bXAKICAgICAgICAgLy8gb2YgdGhlIENvZGVCbG9jay4KICAgICAgICAg
ZGF0YUxvZygiQ2xlYXJpbmcgc3RydWN0dXJlIGNhY2hlIChraW5kICIsIHN0YXRpY19jYXN0PGlu
dD4oc3R1YkluZm8uYWNjZXNzVHlwZSksICIpIGluICIsIFJhd1BvaW50ZXIodGhpcyksICIuXG4i
KTsKICAgICB9Ci0gICAgCisKICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc0pJVChqaXRU
eXBlKCkpKTsKLSAgICAKKwogICAgIGlmIChpc0dldEJ5SWRBY2Nlc3MoYWNjZXNzVHlwZSkpCiAg
ICAgICAgIHJlc2V0R2V0QnlJRChyZXBhdGNoQnVmZmVyLCBzdHViSW5mbyk7CiAgICAgZWxzZSBp
ZiAoaXNQdXRCeUlkQWNjZXNzKGFjY2Vzc1R5cGUpKQpAQCAtMjM4MSw3ICsyNDYyLDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OnJlc2V0U3R1YkludGVybmFsKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZm
ZXIsIFN0cnVjdHVyZVN0dWJJbmYKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNJbkFjY2Vzcyhh
Y2Nlc3NUeXBlKSk7CiAgICAgICAgIHJlc2V0SW4ocmVwYXRjaEJ1ZmZlciwgc3R1YkluZm8pOwog
ICAgIH0KLSAgICAKKwogICAgIHN0dWJJbmZvLnJlc2V0KCk7CiB9CiAKQEAgLTI0MjcsNyArMjUw
OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKCFKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAg
REZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmZ0NvbW1vbi0+dHJhbnNpdGlvbnMuc2l6ZSgp
OyArK2kpIHsKQEAgLTI0MzYsMTAgKzI1MTcsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5
VmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJmRmZ0NvbW1vbi0+dHJhbnNpdGlvbnNbaV0ubV9mcm9tKTsKICAgICAgICAgdmlz
aXRvci5hcHBlbmQoJmRmZ0NvbW1vbi0+dHJhbnNpdGlvbnNbaV0ubV90byk7CiAgICAgfQotICAg
IAorCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmZ0NvbW1vbi0+d2Vha1JlZmVyZW5j
ZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkZmdDb21tb24tPndlYWtS
ZWZlcmVuY2VzW2ldKTsKLSNlbmRpZiAgICAKKyNlbmRpZgogfQogCiBDb2RlQmxvY2sqIENvZGVC
bG9jazo6YmFzZWxpbmVBbHRlcm5hdGl2ZSgpCkBAIC0yNTIwLDE1ICsyNjAxLDE1IEBAIGludCBD
b2RlQmxvY2s6OmZyYW1lUG9pbnRlck9mZnNldFRvR2V0QWN0aXZhdGlvblJlZ2lzdGVycyhpbnQg
bWFjaGluZUNhcHR1cmVTdGFyCiAgICAgLy8gaGF2ZSBwdXQgdGhlIGZpcnN0IGNhcHR1cmVkIHZh
cmlhYmxlIGF0IG9mZnNldCAtNSBidXQgd2UgcHV0IGl0IGF0IG9mZnNldCAtMSwgdGhlbgogICAg
IC8vIHdlJ2xsIGhhdmUgYW4gb2Zmc2V0IG9mIDQuCiAgICAgaW50MzJfdCBvZmZzZXQgPSAwOwot
ICAgIAorCiAgICAgLy8gQ29tcHV0ZSB3aGVyZSB3ZSBwdXQgdGhlIGNhcHR1cmVkIHZhcmlhYmxl
cy4gVGhpcyBvZmZzZXQgd2lsbCBwb2ludCB0aGUgcmVnaXN0ZXJzCiAgICAgLy8gcG9pbnRlciBk
aXJlY3RseSBhdCB0aGUgZmlyc3QgY2FwdHVyZWQgdmFyLgogICAgIG9mZnNldCArPSBtYWNoaW5l
Q2FwdHVyZVN0YXJ0OwotICAgIAorCiAgICAgLy8gTm93IGNvbXB1dGUgdGhlIG9mZnNldCBuZWVk
ZWQgdG8gbWFrZSB0aGUgcnVudGltZSBzZWUgdGhlIGNhcHR1cmVkIHZhcmlhYmxlcyBhdCB0aGUK
ICAgICAvLyBzYW1lIG9mZnNldCB0aGF0IHRoZSBieXRlY29kZSB3b3VsZCBoYXZlIHVzZWQuCiAg
ICAgb2Zmc2V0IC09IHN5bWJvbFRhYmxlKCktPmNhcHR1cmVTdGFydCgpOwotICAgIAorCiAgICAg
cmV0dXJuIG9mZnNldDsKIH0KIApAQCAtMjU1MCw3ICsyNjMxLDcgQEAgSGFuZGxlckluZm8qIENv
ZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQogCiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKKwogICAg
IFZlY3RvcjxIYW5kbGVySW5mbz4mIGV4Y2VwdGlvbkhhbmRsZXJzID0gbV9yYXJlRGF0YS0+bV9l
eGNlcHRpb25IYW5kbGVyczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4Y2VwdGlvbkhh
bmRsZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlu
bmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCkBAIC0yNjEy
LDEwICsyNjkzLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNo
cmlua01vZGUpCiB7CiAgICAgbV9yYXJlQ2FzZVByb2ZpbGVzLnNocmlua1RvRml0KCk7CiAgICAg
bV9zcGVjaWFsRmFzdENhc2VQcm9maWxlcy5zaHJpbmtUb0ZpdCgpOwotICAgIAorCiAgICAgaWYg
KHNocmlua01vZGUgPT0gRWFybHlTaHJpbmspIHsKICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVy
cy5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAKKwogICAgICAgICBpZiAobV9yYXJlRGF0YSkgewog
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7
CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5r
VG9GaXQoKTsKQEAgLTI3MjMsNyArMjgwNCw3IEBAIGNvbnN0IFNsb3dBcmd1bWVudCogQ29kZUJs
b2NrOjptYWNoaW5lU2xvd0FyZ3VtZW50cygpCiB7CiAgICAgaWYgKCFKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoaml0VHlwZSgpKSkKICAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlKCktPnNsb3dB
cmd1bWVudHMoKTsKLSAgICAKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHJldHVybiBqaXRD
b2RlKCktPmRmZ0NvbW1vbigpLT5zbG93QXJndW1lbnRzLmdldCgpOwogI2Vsc2UgLy8gRU5BQkxF
KERGR19KSVQpCkBAIC0yNzY4LDcgKzI4NDksNyBAQCBERkc6OkNhcGFiaWxpdHlMZXZlbCBGdW5j
dGlvbkNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQogdm9pZCBDb2RlQmxvY2s6
OmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvblJlYXNvbiByZWFzb24sIFJlb3B0aW1pemF0aW9u
TW9kZSBtb2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHJlYXNvbiAhPSBQcm9maWxlcjo6Tm90
SmV0dGlzb25lZCk7Ci0gICAgCisKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoREZHOjpz
aG91bGRTaG93RGlzYXNzZW1ibHkoKSkgewogICAgICAgICBkYXRhTG9nKCJKZXR0aXNvbmluZyAi
LCAqdGhpcyk7CkBAIC0yNzc2LDE4ICsyODU3LDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpqZXR0aXNv
bihQcm9maWxlcjo6SmV0dGlzb25SZWFzb24gcmVhc29uLCBSZW9wdGltaXphdGlvbk1vZGUgbW9k
CiAgICAgICAgICAgICBkYXRhTG9nKCIgYW5kIGNvdW50aW5nIHJlb3B0aW1pemF0aW9uIik7CiAg
ICAgICAgIGRhdGFMb2coIiBkdWUgdG8gIiwgcmVhc29uLCAiLlxuIik7CiAgICAgfQotICAgIAor
CiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKCptX2hlYXApOwogICAgIFJFTEVBU0VfQVNT
RVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKTsKLSAgICAKKwogICAgIGlm
IChQcm9maWxlcjo6Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9uID0gaml0Q29kZSgpLT5kZmdDb21t
b24oKS0+Y29tcGlsYXRpb24uZ2V0KCkpCiAgICAgICAgIGNvbXBpbGF0aW9uLT5zZXRKZXR0aXNv
blJlYXNvbihyZWFzb24pOwotICAgIAorCiAgICAgLy8gV2Ugd2FudCB0byBhY2NvbXBsaXNoIHR3
byB0aGluZ3MgaGVyZToKICAgICAvLyAxKSBNYWtlIHN1cmUgdGhhdCBpZiB0aGlzIENvZGVCbG9j
ayBpcyBvbiB0aGUgc3RhY2sgcmlnaHQgbm93LCB0aGVuIGlmIHdlIHJldHVybiB0byBpdAogICAg
IC8vICAgIHdlIHNob3VsZCBPU1IgZXhpdCBhdCB0aGUgdG9wIG9mIHRoZSBuZXh0IGJ5dGVjb2Rl
IGluc3RydWN0aW9uIGFmdGVyIHRoZSByZXR1cm4uCiAgICAgLy8gMikgTWFrZSBzdXJlIHRoYXQg
aWYgd2UgY2FsbCB0aGUgb3duZXIgZXhlY3V0YWJsZSwgdGhlbiB3ZSBzaG91bGRuJ3QgY2FsbCB0
aGlzIENvZGVCbG9jay4KLSAgICAKKwogICAgIC8vIFRoaXMgYWNjb21wbGlzaGVzIHRoZSBPU1It
ZXhpdC1vbi1yZXR1cm4gcGFydCwgYW5kIGRvZXMgaXRzIG93biBib29rLWtlZXBpbmcgYWJvdXQK
ICAgICAvLyB3aGV0aGVyIHRoZSBpbnZhbGlkYXRpb24gaGFzIGFscmVhZHkgaGFwcGVuZWQuCiAg
ICAgaWYgKCFqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5pbnZhbGlkYXRlKCkpIHsKQEAgLTI3OTYs
MTAgKzI4NzcsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNv
blJlYXNvbiByZWFzb24sIFJlb3B0aW1pemF0aW9uTW9kZSBtb2QKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQodGhpcyAhPSByZXBsYWNlbWVudCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICAKKwogICAgIGlmIChERkc6OnNob3VsZFNob3dEaXNhc3NlbWJseSgpKQogICAgICAgICBkYXRh
TG9nKCIgICAgRGlkIGludmFsaWRhdGUgIiwgKnRoaXMsICJcbiIpOwotICAgIAorCiAgICAgLy8g
Q291bnQgdGhlIHJlb3B0aW1pemF0aW9uIGlmIHRoYXQncyB3aGF0IHRoZSB1c2VyIHdhbnRlZC4K
ICAgICBpZiAobW9kZSA9PSBDb3VudFJlb3B0aW1pemF0aW9uKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBNYXliZSB0aGlzIHNob3VsZCBjYWxsIGFsdGVybmF0aXZlKCkuCkBAIC0yODA4LDcgKzI4ODks
NyBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uUmVhc29uIHJl
YXNvbiwgUmVvcHRpbWl6YXRpb25Nb2RlIG1vZAogICAgICAgICBpZiAoREZHOjpzaG91bGRTaG93
RGlzYXNzZW1ibHkoKSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBEaWQgY291bnQgcmVvcHRp
bWl6YXRpb24gZm9yICIsICp0aGlzLCAiXG4iKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBOb3cg
dGFrZSBjYXJlIG9mIHRoZSBlbnRyeXBvaW50LgogICAgIGlmICh0aGlzICE9IHJlcGxhY2VtZW50
KCkpIHsKICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIHdlcmUgbmV2ZXIgdGhlIGVudHJ5
cG9pbnQuIFRoaXMgY2FuIGhhcHBlbiBmb3IgT1NSIGVudHJ5IGNvZGUKQEAgLTI4MzYsMTAgKzI5
MTcsMTAgQEAgSlNHbG9iYWxPYmplY3QqIENvZGVCbG9jazo6Z2xvYmFsT2JqZWN0Rm9yKENvZGVP
cmlnaW4gY29kZU9yaWdpbikKIHZvaWQgQ29kZUJsb2NrOjpub3RpY2VJbmNvbWluZ0NhbGwoRXhl
Y1N0YXRlKiBjYWxsZXJGcmFtZSkKIHsKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9
IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICAKKwogICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlQ2FsbExpbmsoKSkKICAgICAgICAgZGF0YUxvZygiTm90aWNpbmcgY2FsbCBsaW5rIGZyb20g
IiwgKmNhbGxlckNvZGVCbG9jaywgIiB0byAiLCAqdGhpcywgIlxuIik7Ci0gICAgCisKICAgICBp
ZiAoIW1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTI4NTIs
NyArMjkzMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpY2VJbmNvbWluZ0NhbGwoRXhlY1N0YXRl
KiBjYWxsZXJGcmFtZSkKIAogICAgIGlmICghY2FuSW5saW5lKG1fY2FwYWJpbGl0eUxldmVsU3Rh
dGUpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIURGRzo6aXNTbWFsbEVub3Vn
aFRvSW5saW5lQ29kZUludG8oY2FsbGVyQ29kZUJsb2NrKSkgewogICAgICAgICBtX3Nob3VsZEFs
d2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxM
aW5rKCkpCkBAIC0yODcwLDcgKzI5NTEsNyBAQCB2b2lkIENvZGVCbG9jazo6bm90aWNlSW5jb21p
bmdDYWxsKEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
Q2xlYXJpbmcgU0FCSSBiZWNhdXNlIGNhbGxlciBpcyBpbiBMTEludC5cbiIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYgKGNhbGxlckNvZGVCbG9jay0+Y29kZVR5cGUo
KSAhPSBGdW5jdGlvbkNvZGUpIHsKICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBpcyBlaXRoZXIg
ZXZhbCBvciBnbG9iYWwgY29kZSwgYXNzdW1lIHRoYXQgdGhhdCB3b24ndCBiZQogICAgICAgICAv
LyBvcHRpbWl6ZWQgYW55dGltZSBzb29uLiBGb3IgZXZhbCBjb2RlIHRoaXMgaXMgcGFydGljdWxh
cmx5IHRydWUgc2luY2Ugd2UKQEAgLTI4ODAsNyArMjk2MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpu
b3RpY2VJbmNvbWluZ0NhbGwoRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSkKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2UgY2FsbGVyIGlzIG5vdCBhIGZ1bmN0aW9u
LlxuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBFeGVjU3RhdGUqIGZy
YW1lID0gY2FsbGVyRnJhbWU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gT3B0aW9uczo6bWF4aW11
bUlubGluaW5nRGVwdGgoKTsgaS0tOyBmcmFtZSA9IGZyYW1lLT5jYWxsZXJGcmFtZSgpKSB7CiAg
ICAgICAgIGlmIChmcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSkKQEAgLTI4OTMsMTUgKzI5NzQs
MTUgQEAgdm9pZCBDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2FsbChFeGVjU3RhdGUqIGNhbGxl
ckZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAg
ICAgUkVMRUFTRV9BU1NFUlQoY2FsbGVyQ29kZUJsb2NrLT5tX2NhcGFiaWxpdHlMZXZlbFN0YXRl
ICE9IERGRzo6Q2FwYWJpbGl0eUxldmVsTm90U2V0KTsKLSAgICAKKwogICAgIGlmIChjYW5Db21w
aWxlKGNhbGxlckNvZGVCbG9jay0+bV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZSkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ2FsbExpbmsoKSkKICAgICAg
ICAgZGF0YUxvZygiICAgIENsZWFyaW5nIFNBQkkgYmVjYXVzZSB0aGUgY2FsbGVyIGlzIG5vdCBh
IERGRyBjYW5kaWRhdGUuXG4iKTsKLSAgICAKKwogICAgIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVk
ID0gZmFsc2U7CiAjZW5kaWYKIH0KQEAgLTI5MzksNyArMzAyMCw3IEBAIGludDMyX3QgQ29kZUJs
b2NrOjpjb2RlVHlwZVRocmVzaG9sZE11bHRpcGxpZXIoKSBjb25zdAogewogICAgIGlmIChjb2Rl
VHlwZSgpID09IEV2YWxDb2RlKQogICAgICAgICByZXR1cm4gT3B0aW9uczo6ZXZhbFRocmVzaG9s
ZE11bHRpcGxpZXIoKTsKLSAgICAKKwogICAgIHJldHVybiAxOwogfQogCkBAIC0yOTY1LDcgKzMw
NDYsNyBAQCBkb3VibGUgQ29kZUJsb2NrOjpvcHRpbWl6YXRpb25UaHJlc2hvbGRTY2FsaW5nRmFj
dG9yKCkKICAgICAvLwogICAgIC8vIHNhbXBsZXMgPSB7ezEwLCAwLjl9LCB7MjAwLCAxfSwgezMy
MCwgMS4yfSwgezEyNjgsIDV9LCB7NDAwMCwgNS41fSwgezEwMDAwLCA2fX0KICAgICAvLwotICAg
IC8vIHNvbHV0aW9uID0gCisgICAgLy8gc29sdXRpb24gPQogICAgIC8vICAgICBNaW5pbWl6ZVtQ
bHVzIEBAICgoTXlGdW5jdGlvblRlbXBsYXRlWyNbWzFdXSwgYSwgYiwgYywgZF0gLSAjW1syXV0p
XjIgJiAvQCBzYW1wbGVzKSwKICAgICAvLyAgICAgICAgIHthLCBiLCBjLCBkfV1bWzJdXQogICAg
IC8vCkBAIC0yOTk5LDIyICszMDgwLDIyIEBAIGRvdWJsZSBDb2RlQmxvY2s6Om9wdGltaXphdGlv
blRocmVzaG9sZFNjYWxpbmdGYWN0b3IoKQogICAgIC8vIHRoZSBmdW5jdGlvbiB0dXJuaW5nIG92
ZXIgYW5kIGdvaW5nIG5lZ2F0aXZlIGZvciBsYXJnZSB4KSBhbmQgSSB0aHJldyBpbiBhIFNxcnQK
ICAgICAvLyB0ZXJtIGJlY2F1c2UgU3FydCByZXByZXNlbnRzIG15IGludHV0aW9uIHRoYXQgdGhl
IGZ1bmN0aW9uIHNob3VsZCBiZSBtb3JlIHNlbnNpdGl2ZQogICAgIC8vIHRvIHNtYWxsIGNoYW5n
ZXMgaW4gc21hbGwgdmFsdWVzIG9mIHgsIGJ1dCBsZXNzIHNlbnNpdGl2ZSB3aGVuIHggZ2V0cyBs
YXJnZS4KLSAgICAKKwogICAgIC8vIE5vdGUgdGhhdCB0aGUgY3VycmVudCBmaXQgZXNzZW50aWFs
bHkgZWxpbWluYXRlcyB0aGUgbGluZWFyIHBvcnRpb24gb2YgdGhlCiAgICAgLy8gZXhwcmVzc2lv
biAoYyA9PSAwLjApLgogICAgIGNvbnN0IGRvdWJsZSBhID0gMC4wNjE1MDQ7CiAgICAgY29uc3Qg
ZG91YmxlIGIgPSAxLjAyNDA2OwogICAgIGNvbnN0IGRvdWJsZSBjID0gMC4wOwogICAgIGNvbnN0
IGRvdWJsZSBkID0gMC44MjU5MTQ7Ci0gICAgCisKICAgICBkb3VibGUgaW5zdHJ1Y3Rpb25Db3Vu
dCA9IHRoaXMtPmluc3RydWN0aW9uQ291bnQoKTsKLSAgICAKKwogICAgIEFTU0VSVChpbnN0cnVj
dGlvbkNvdW50KTsgLy8gTWFrZSBzdXJlIHRoaXMgaXMgY2FsbGVkIG9ubHkgYWZ0ZXIgd2UgaGF2
ZSBhbiBpbnN0cnVjdGlvbiBzdHJlYW07IG90aGVyd2lzZSBpdCdsbCBqdXN0IHJldHVybiB0aGUg
dmFsdWUgb2YgZCwgd2hpY2ggbWFrZXMgbm8gc2Vuc2UuCi0gICAgCisKICAgICBkb3VibGUgcmVz
dWx0ID0gZCArIGEgKiBzcXJ0KGluc3RydWN0aW9uQ291bnQgKyBiKSArIGMgKiBpbnN0cnVjdGlv
bkNvdW50OwotICAgIAorCiAgICAgcmVzdWx0ICo9IGNvZGVUeXBlVGhyZXNob2xkTXVsdGlwbGll
cigpOwotICAgIAorCiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICBk
YXRhTG9nKAogICAgICAgICAgICAgKnRoaXMsICI6IGluc3RydWN0aW9uIGNvdW50IGlzICIsIGlu
c3RydWN0aW9uQ291bnQsCkBAIC0zMDI4LDEwICszMTA5LDEwIEBAIHN0YXRpYyBpbnQzMl90IGNs
aXBUaHJlc2hvbGQoZG91YmxlIHRocmVzaG9sZCkKIHsKICAgICBpZiAodGhyZXNob2xkIDwgMS4w
KQogICAgICAgICByZXR1cm4gMTsKLSAgICAKKwogICAgIGlmICh0aHJlc2hvbGQgPiBzdGF0aWNf
Y2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpOwotICAgIAorCiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHRocmVzaG9sZCk7CiB9CiAKQEAgLTMwNTQs
NyArMzEzNSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpjaGVja0lmT3B0aW1pemF0aW9uVGhyZXNob2xk
UmVhY2hlZCgpCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICAKKwogICAgIHJldHVybiBt
X2ppdEV4ZWN1dGVDb3VudGVyLmNoZWNrSWZUaHJlc2hvbGRDcm9zc2VkQW5kU2V0KHRoaXMpOwog
fQogCkBAIC0zMTE3LDcgKzMxOTgsNyBAQCB2b2lkIENvZGVCbG9jazo6c2V0T3B0aW1pemF0aW9u
VGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KENvbXBpbGF0aW9uUmVzdQogICAgICAg
ICBkYXRhTG9nKCp0aGlzLCAiOiBleHBlY3RlZCB0byBoYXZlIGJhc2VsaW5lIGNvZGUgYnV0IGhh
dmUgIiwgdHlwZSwgIlxuIik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQotICAgIAorCiAgICAgQ29kZUJsb2NrKiB0aGVSZXBsYWNlbWVudCA9IHJlcGxhY2Vt
ZW50KCk7CiAgICAgaWYgKChyZXN1bHQgPT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKSAhPSAodGhl
UmVwbGFjZW1lbnQgIT0gdGhpcykpIHsKICAgICAgICAgZGF0YUxvZygqdGhpcywgIjogd2UgaGF2
ZSByZXN1bHQgPSAiLCByZXN1bHQsICIgYnV0ICIpOwpAQCAtMzEyNyw3ICszMjA4LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJl
c3VsdChDb21waWxhdGlvblJlc3UKICAgICAgICAgICAgIGRhdGFMb2coIm91ciByZXBsYWNlbWVu
dCBpcyAiLCBwb2ludGVyRHVtcCh0aGVSZXBsYWNlbWVudCksICJcbiIpOwogICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICAKKwogICAgIHN3aXRjaCAocmVz
dWx0KSB7CiAgICAgY2FzZSBDb21waWxhdGlvblN1Y2Nlc3NmdWw6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChyZXBsYWNlbWVudCgpLT5qaXRUeXBlKCkp
KTsKQEAgLTMxNTAsMTMgKzMyMzEsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OnNldE9wdGltaXphdGlv
blRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJlc3VsdChDb21waWxhdGlvblJlc3UKICAgICAg
ICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAor
CiAgICAgZGF0YUxvZygiVW5yZWNvZ25pemVkIHJlc3VsdDogIiwgc3RhdGljX2Nhc3Q8aW50Pihy
ZXN1bHQpLCAiXG4iKTsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiAj
ZW5kaWYKLSAgICAKKwogdWludDMyX3QgQ29kZUJsb2NrOjphZGp1c3RlZEV4aXRDb3VudFRocmVz
aG9sZCh1aW50MzJfdCBkZXNpcmVkVGhyZXNob2xkKQogewogICAgIEFTU0VSVChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoaml0VHlwZSgpKSk7CkBAIC0zMjEzLDcgKzMyOTQsNyBAQCBBcnJheVBy
b2ZpbGUqIENvZGVCbG9jazo6Z2V0T3JBZGRBcnJheVByb2ZpbGUodW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQpCiB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVu
ZXNzKHVuc2lnbmVkJiBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMsIHVuc2ln
bmVkJiBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzKQogewogICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZh
bHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMgPSAwOyAvLyBJ
ZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgZXF1YWxzIG51
bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJlIGZ1bGwuCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsr
aSkgewpAQCAtMzIzMCw3ICszMzExLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRp
Y3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXIKICAgICAg
ICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBw
cm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICB9Ci0gICAgCisK
ICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxlcy5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb25zKGxvY2tlcik7CiAjZW5kaWYKQEAgLTMyNDUsMTAgKzMzMjYs
MTAgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZWRpY3Rpb25zKCkK
IHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxBcnJheVByZWRpY3Rpb25zKCkKIHsKICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIAorCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9hcnJheVByb2ZpbGVzLnNpemUoKTsgaS0tOykKICAgICAgICAgbV9hcnJheVByb2Zp
bGVzW2ldLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIHRoaXMpOwotICAgIAorCiAg
ICAgLy8gRG9uJ3QgY291bnQgdGhlc2UgZWl0aGVyLCBmb3Igc2ltaWxhciByZWFzb25zLgogICAg
IGZvciAodW5zaWduZWQgaSA9IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXMuc2l6ZSgpOyBpLS07
KQogICAgICAgICBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzW2ldLnVwZGF0ZUluZGV4aW5nVHlw
ZSgpOwpAQCAtMzI2Nyw5ICszMzQ4LDkgQEAgYm9vbCBDb2RlQmxvY2s6OnNob3VsZE9wdGltaXpl
Tm93KCkKIAogICAgIGlmIChtX29wdGltaXphdGlvbkRlbGF5Q291bnRlciA+PSBPcHRpb25zOjpt
YXhpbXVtT3B0aW1pemF0aW9uRGVsYXkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCisK
ICAgICB1cGRhdGVBbGxBcnJheVByZWRpY3Rpb25zKCk7Ci0gICAgCisKICAgICB1bnNpZ25lZCBu
dW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZTYW1wbGVzSW5Qcm9maWxlczsKICAgICB1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2
ZW5lc3MobnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzLCBudW1iZXJPZlNhbXBs
ZXNJblByb2ZpbGVzKTsKQEAgLTMyODcsNyArMzM2OCw3IEBAIGJvb2wgQ29kZUJsb2NrOjpzaG91
bGRPcHRpbWl6ZU5vdygpCiAgICAgICAgICYmICghdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMo
KSB8fCAoZG91YmxlKW51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMgLyBWYWx1ZVByb2ZpbGU6Om51
bWJlck9mQnVja2V0cyAvIHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgPj0gT3B0aW9uczo6
ZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGUoKSkKICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKSArIDEgPj0gT3B0aW9uczo6bWluaW11
bU9wdGltaXphdGlvbkRlbGF5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIAorCiAgICAg
QVNTRVJUKG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyIDwgc3RkOjpudW1lcmljX2xpbWl0czx1
aW50OF90Pjo6bWF4KCkpOwogICAgIG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKys7CiAgICAg
b3B0aW1pemVBZnRlcldhcm1VcCgpOwpAQCAtMzI5OSwxNSArMzM4MCwxNSBAQCB2b2lkIENvZGVC
bG9jazo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcygpCiB7CiAgICAgQVNTRVJUKEpJVENvZGU6Omlz
T3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKTsKICAgICBBU1NFUlQoYWx0ZXJuYXRpdmUoKS0+aml0
VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKLSAgICAKKwogICAgIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jayA9IGFsdGVybmF0aXZlKCk7Ci0gICAgCisKICAgICBzd2l0Y2ggKGppdFR5
cGUoKSkgewogICAgIGNhc2UgSklUQ29kZTo6REZHSklUOiB7CiAgICAgICAgIERGRzo6SklUQ29k
ZSogaml0Q29kZSA9IG1faml0Q29kZS0+ZGZnKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBqaXRDb2RlLT5vc3JFeGl0LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBERkc6
Ok9TUkV4aXQmIGV4aXQgPSBqaXRDb2RlLT5vc3JFeGl0W2ldOwotICAgICAgICAgICAgCisKICAg
ICAgICAgICAgIGlmICghZXhpdC5jb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZShwcm9m
aWxlZEJsb2NrKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMzMy
MiwxNCArMzQwMywxNCBAQCB2b2lkIENvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcygp
CiAgICAgICAgIEZUTDo6SklUQ29kZSogaml0Q29kZSA9IG1faml0Q29kZS0+ZnRsKCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBqaXRDb2RlLT5vc3JFeGl0LnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICBGVEw6Ok9TUkV4aXQmIGV4aXQgPSBqaXRDb2RlLT5vc3JFeGl0W2ld
OwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmICghZXhpdC5jb25zaWRlckFkZGluZ0Fz
RnJlcXVlbnRFeGl0U2l0ZShwcm9maWxlZEJsb2NrKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAjZW5kaWYKLSAgICAgICAgCisK
ICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBicmVhazsKQEAgLTMzODYsNyArMzQ2Nyw3IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6ZnJh
bWVSZWdpc3RlckNvdW50KCkKICAgICBjYXNlIEpJVENvZGU6OkZUTEpJVDoKICAgICAgICAgcmV0
dXJuIGppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmZyYW1lUmVnaXN0ZXJDb3VudDsKICNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKLSAgICAgICAgCisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTM0MDUsMjgg
KzM0ODYsMjggQEAgc2l6ZV90IENvZGVCbG9jazo6cHJlZGljdGVkTWFjaGluZUNvZGVTaXplKCkK
ICAgICAvLyBtYXR0ZXIgaXMgdGhlIHJlY29tcHV0YXRpb24gb2YgdGhpcyB2YWx1ZSB3aGVuIHRo
ZSBzbG93IHBhdGggaXMgdHJpZ2dlcmVkLgogICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgCisKICAgICBpZiAoIW1fdm0tPm1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdv
cmRGb3JCYXNlbGluZUpJVCkKICAgICAgICAgcmV0dXJuIDA7IC8vIEl0J3MgYXMgZ29vZCBvZiBh
IHByZWRpY3Rpb24gYXMgd2UnbGwgZ2V0LgotICAgIAorCiAgICAgLy8gQmUgY29uc2VydmF0aXZl
OiByZXR1cm4gYSBzaXplIHRoYXQgd2lsbCBiZSBhbiBvdmVyZXN0aW1hdGlvbiA4NCUgb2YgdGhl
IHRpbWUuCiAgICAgZG91YmxlIG11bHRpcGxpZXIgPSBtX3ZtLT5tYWNoaW5lQ29kZUJ5dGVzUGVy
Qnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQubWVhbigpICsKICAgICAgICAgbV92bS0+bWFjaGlu
ZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklULnN0YW5kYXJkRGV2aWF0aW9u
KCk7Ci0gICAgCisKICAgICAvLyBCZSBwYXJhbm9pZDogc2lsZW50bHkgcmVqZWN0IGJvZ3VzIG11
bHRpcGllcnMuIFNpbGVudGx5IGRvaW5nIHRoZSAid3JvbmciIHRoaW5nCiAgICAgLy8gaGVyZSBp
cyBPSywgc2luY2UgdGhpcyB3aG9sZSBtZXRob2QgaXMganVzdCBhIGhldXJpc3RpYy4KICAgICBp
ZiAobXVsdGlwbGllciA8IDAgfHwgbXVsdGlwbGllciA+IDEwMDApCiAgICAgICAgIHJldHVybiAw
OwotICAgIAorCiAgICAgZG91YmxlIGRvdWJsZVJlc3VsdCA9IG11bHRpcGxpZXIgKiBtX2luc3Ry
dWN0aW9ucy5zaXplKCk7Ci0gICAgCisKICAgICAvLyBCZSBldmVuIG1vcmUgcGFyYW5vaWQ6IHNp
bGVudGx5IHJlamVjdCB2YWx1ZXMgdGhhdCB3b24ndCBmaXQgaW50byBhIHNpemVfdC4gSWYKICAg
ICAvLyB0aGUgZnVuY3Rpb24gaXMgc28gaHVnZSB0aGF0IHdlIGNhbid0IGV2ZW4gZml0IGl0IGlu
dG8gdmlydHVhbCBtZW1vcnkgdGhlbiB3ZQogICAgIC8vIHNob3VsZCBwcm9iYWJseSBoYXZlIHNv
bWUgb3RoZXIgZ3VhcmRzIGluIHBsYWNlIHRvIHByZXZlbnQgdXMgZnJvbSBldmVuIGdldHRpbmcK
ICAgICAvLyB0byB0aGlzIHBvaW50LgogICAgIGlmIChkb3VibGVSZXN1bHQgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKKwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGRvdWJsZVJlc3VsdCk7CiB9CiAKQEAgLTM0MzUs
NyArMzUxNiw3IEBAIGJvb2wgQ29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlE
KQogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IHZtKCktPmludGVycHJldGVyOwogICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7
CiAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGluc3RydWN0aW9ucygpLnNpemUoKTsK
LSAgICAKKwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9m
ZnNldCA8IGluc3RydWN0aW9uQ291bnQ7ICkgewogICAgICAgICBzd2l0Y2ggKGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUp
KSB7CiAjZGVmaW5lIERFRklORV9PUChjdXJPcGNvZGUsIGxlbmd0aCkgICAgICAgIFwKQEAgLTM0
NTEsMTIgKzM1MzIsMTUgQEAgYm9vbCBDb2RlQmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2RlSUQgb3Bj
b2RlSUQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAogU3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiB7CisgICAgaWYgKCFzeW1ib2xUYWJsZSgp
KSAKKyAgICAgICAgcmV0dXJuICIiOworCiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBl
bmQgPSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICBmb3IgKFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIHB0ciA9IHN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IHB0ciAhPSBl
bmQ7ICsrcHRyKSB7CkBAIC0zNDg4LDcgKzM1NzIsNyBAQCBzdHJ1Y3QgVmVyaWZ5Q2FwdHVyZWRE
ZWYgewogICAgIHZvaWQgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBPcGNvZGVJRCBvcGNvZGVJRCwgaW50IG9wZXJhbmQpCiAgICAgewog
ICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGluc3RydWN0aW9uIC0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgICAgICAKKwogICAgICAgICBpZiAoY29kZUJs
b2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChvcGVyYW5kKSkgewogICAgICAgICAgICAgY29k
ZUJsb2NrLT5iZWdpblZhbGlkYXRpb25EaWRGYWlsKCk7CiAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgQXQgYmMjIiwgYnl0ZWNvZGVPZmZzZXQsICIgZW5jb3VudGVyZWQgYSBkZWZpbml0aW9uIG9m
IGEgY29uc3RhbnQuXG4iKTsKQEAgLTM1MDYsMTggKzM1OTAsMTggQEAgc3RydWN0IFZlcmlmeUNh
cHR1cmVkRGVmIHsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9wZXJh
bmQpOwogICAgICAgICBpZiAoIXZpcnR1YWxSZWcuaXNMb2NhbCgpKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAKKwogICAgICAgICBpZiAoY29kZUJsb2NrLT5jYXB0dXJlQ291bnQoKSAm
JiBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCktPmlzQ2FwdHVyZWQob3BlcmFuZCkpIHsKICAgICAg
ICAgICAgIGNvZGVCbG9jay0+YmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpOwogICAgICAgICAgICAg
ZGF0YUxvZygiICAgIEF0IGJjIyIsIGJ5dGVjb2RlT2Zmc2V0LCAiIGVuY291bnRlcmVkIGludmFs
aWQgYXNzaWdubWVudCB0byBjYXB0dXJlZCB2YXJpYWJsZSBsb2MiLCB2aXJ0dWFsUmVnLnRvTG9j
YWwoKSwgIi5cbiIpOwogICAgICAgICAgICAgY29kZUJsb2NrLT5lbmRWYWxpZGF0aW9uRGlkRmFp
bCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAg
IHJldHVybjsKICAgICB9CiB9OwpAQCAtMzUyNyw5ICszNjExLDkgQEAgc3RydWN0IFZlcmlmeUNh
cHR1cmVkRGVmIHsKIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0ZSgpCiB7CiAgICAgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOyAvLyBDb21wdXRlIGRpcmVjdGx5IGZyb20g
c2NyYXRjaCBzbyBpdCBkb2Vzbid0IGVmZmVjdCBDb2RlQmxvY2sgZm9vdHByaW50LgotICAgIAor
CiAgICAgRmFzdEJpdFZlY3RvciBsaXZlQXRIZWFkID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZv
QXRCeXRlY29kZU9mZnNldCgwKTsKLSAgICAKKwogICAgIGlmIChsaXZlQXRIZWFkLm51bUJpdHMo
KSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkgewogICAgICAg
ICBiZWdpblZhbGlkYXRpb25EaWRGYWlsKCk7CiAgICAgICAgIGRhdGFMb2coIiAgICBXcm9uZyBu
dW1iZXIgb2YgYml0cyBpbiByZXN1bHQhXG4iKTsKQEAgLTM1MzcsMTQgKzM2MjEsMTQgQEAgdm9p
ZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAgICAgZGF0YUxvZygiICAgIEJpdCBjb3VudDog
IiwgbGl2ZUF0SGVhZC5udW1CaXRzKCksICJcbiIpOwogICAgICAgICBlbmRWYWxpZGF0aW9uRGlk
RmFpbCgpOwogICAgIH0KLSAgICAKKwogICAgIGZvciAodW5zaWduZWQgaSA9IG1fbnVtQ2FsbGVl
UmVnaXN0ZXJzOyBpLS07KSB7CiAgICAgICAgIGJvb2wgaXNDYXB0dXJlZCA9IGZhbHNlOwogICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSk7Ci0g
ICAgICAgIAorCiAgICAgICAgIGlmIChjYXB0dXJlQ291bnQoKSkKICAgICAgICAgICAgIGlzQ2Fw
dHVyZWQgPSByZWcub2Zmc2V0KCkgPD0gY2FwdHVyZVN0YXJ0KCkgJiYgcmVnLm9mZnNldCgpID4g
Y2FwdHVyZUVuZCgpOwotICAgICAgICAKKwogICAgICAgICBpZiAoaXNDYXB0dXJlZCkgewogICAg
ICAgICAgICAgaWYgKCFsaXZlQXRIZWFkLmdldChpKSkgewogICAgICAgICAgICAgICAgIGJlZ2lu
VmFsaWRhdGlvbkRpZEZhaWwoKTsKQEAgLTM1NjEsMTQgKzM2NDUsMTQgQEAgdm9pZCBDb2RlQmxv
Y2s6OnZhbGlkYXRlKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwog
ICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGlu
c3RydWN0aW9ucygpLnNpemUoKTspIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZU9mZnNldDsKICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3Vy
cmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0gICAgICAgIAorCiAgICAgICAgIFZlcmlmeUNh
cHR1cmVkRGVmIHZlcmlmeUNhcHR1cmVkRGVmOwogICAgICAgICBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KHRoaXMsIGJ5dGVjb2RlT2Zmc2V0LCB2ZXJpZnlDYXB0dXJlZERlZik7Ci0gICAg
ICAgIAorCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7
CiAgICAgfQogfQpAQCAtMzYxOSw0ICszNzAzLDUgQEAgREZHOjpDYXBhYmlsaXR5TGV2ZWwgQ29k
ZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWwoKQogfQogI2VuZGlmCiAKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNjIy
MzI3MS4uZGFhYmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaApAQCAtNjMsNiArNjMsOCBAQAogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIK
ICNpbmNsdWRlICJQcm9maWxlckpldHRpc29uUmVhc29uLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlICJVbmNvbmRpdGlvbmFsRmluYWxp
emVyLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCkBAIC05OCw3ICsxMDAsNyBAQCBwdWJs
aWM6CiAgICAgZW51bSBDb3B5UGFyc2VkQmxvY2tUYWcgeyBDb3B5UGFyc2VkQmxvY2sgfTsKIHBy
b3RlY3RlZDoKICAgICBDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90
aGVyKTsKLSAgICAgICAgCisKICAgICBDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUqLCBQYXNzUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1
bW5PZmZzZXQpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9i
amVjdDsKQEAgLTE0NSwxNCArMTQ3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjb2Rl
QmxvY2tzLmFwcGVuZChvc3JFbnRyeUJsb2NrKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwog
ICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBzcGVjaWFsaXphdGlvbkZyb21Jc0NvbnN0cnVjdChtX2lzQ29u
c3RydWN0b3IpOwogICAgIH0KLSAgICAKKwogICAgIENvZGVCbG9jayogYmFzZWxpbmVBbHRlcm5h
dGl2ZSgpOwotICAgIAorCiAgICAgLy8gRklYTUU6IEdldCByaWQgb2YgdGhpcy4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNjc3CiAgICAgQ29kZUJs
b2NrKiBiYXNlbGluZVZlcnNpb24oKTsKQEAgLTE5MywxNyArMTk1LDE3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZ2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIFN0dWJJ
bmZvTWFwJiByZXN1bHQpOwogICAgIHZvaWQgZ2V0U3R1YkluZm9NYXAoU3R1YkluZm9NYXAmIHJl
c3VsdCk7Ci0gICAgCisKICAgICB2b2lkIGdldENhbGxMaW5rSW5mb01hcChjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFwJiByZXN1bHQpOwogICAgIHZvaWQgZ2V0Q2Fs
bExpbmtJbmZvTWFwKENhbGxMaW5rSW5mb01hcCYgcmVzdWx0KTsKLSAgICAKKwogI2lmIEVOQUJM
RShKSVQpCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGFkZFN0dWJJbmZvKCk7CiAgICAgQmFnPFN0
cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0b3Igc3R1YkluZm9CZWdpbigpIHsgcmV0dXJuIG1fc3R1
YkluZm9zLmJlZ2luKCk7IH0KICAgICBCYWc8U3RydWN0dXJlU3R1YkluZm8+OjppdGVyYXRvciBz
dHViSW5mb0VuZCgpIHsgcmV0dXJuIG1fc3R1YkluZm9zLmVuZCgpOyB9CiAKICAgICB2b2lkIHJl
c2V0U3R1YihTdHJ1Y3R1cmVTdHViSW5mbyYpOwotICAgIAorCiAgICAgQnlWYWxJbmZvJiBnZXRC
eVZhbEluZm8odW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKICAgICB7CiAgICAgICAgIHJldHVybiAq
KGJpbmFyeVNlYXJjaDxCeVZhbEluZm8sIHVuc2lnbmVkPihtX2J5VmFsSW5mb3MsIG1fYnlWYWxJ
bmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgsIGdldEJ5VmFsSW5mb0J5dGVjb2RlSW5kZXgpKTsK
QEAgLTIyMyw5ICsyMjUsOSBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQg
dW5saW5rQ2FsbHMoKTsKLSAgICAgICAgCisKICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoRXhl
Y1N0YXRlKiBjYWxsZXJGcmFtZSwgQ2FsbExpbmtJbmZvKik7Ci0gICAgICAgIAorCiAgICAgYm9v
bCBpc0luY29taW5nQ2FsbEFscmVhZHlMaW5rZWQoQ2FsbExpbmtJbmZvKiBpbmNvbWluZykKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX2luY29taW5nQ2FsbHMuaXNPbkxpc3QoaW5jb21pbmcpOwpA
QCAtMjQ0LDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ppdENv
ZGVNYXAuZ2V0KCk7CiAgICAgfQotICAgIAorCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQo
SW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VS
VChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9ucygpLmJlZ2luKCkgJiYgcmV0dXJuQWRkcmVz
cyA8IGluc3RydWN0aW9ucygpLmVuZCgpKTsKQEAgLTI2NCwxNiArMjY2LDE2IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVj
dGlvbnMuc2l6ZSgpOyB9CiAKICAgICBpbnQgYXJndW1lbnRJbmRleEFmdGVyQ2FwdHVyZShzaXpl
X3QgYXJndW1lbnQpOwotICAgIAorCiAgICAgYm9vbCBoYXNTbG93QXJndW1lbnRzKCk7CiAgICAg
Y29uc3QgU2xvd0FyZ3VtZW50KiBtYWNoaW5lU2xvd0FyZ3VtZW50cygpOwogCiAgICAgLy8gRXhh
Y3RseSBlcXVpdmFsZW50IHRvIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmluc3RhbGxD
b2RlKGNvZGVCbG9jayk7CiAgICAgdm9pZCBpbnN0YWxsKCk7Ci0gICAgCisKICAgICAvLyBFeGFj
dGx5IGVxdWl2YWxlbnQgdG8gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmV3UmVwbGFj
ZW1lbnRDb2RlQmxvY2tGb3IoY29kZUJsb2NrLT5zcGVjaWFsaXphdGlvbktpbmQoKSkKICAgICBQ
YXNzUmVmUHRyPENvZGVCbG9jaz4gbmV3UmVwbGFjZW1lbnQoKTsKLSAgICAKKwogICAgIHZvaWQg
c2V0SklUQ29kZShQYXNzUmVmUHRyPEpJVENvZGU+IGNvZGUpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9oZWFwLT5pc0RlZmVycmVkKCkpOwpAQCAtMjk2LDcgKzI5OCw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJldHVybiBqaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQ7CiAg
ICAgfQotICAgIAorCiAjaWYgRU5BQkxFKEpJVCkKICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVw
bGFjZW1lbnQoKSA9IDA7CiAKQEAgLTMwOSw3ICszMTEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIHZvaWQgamV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uUmVhc29uLCBSZW9wdGltaXphdGlv
bk1vZGUgPSBEb250Q291bnRSZW9wdGltaXphdGlvbik7Ci0gICAgCisKICAgICBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJs
ZS5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRWTShWTSogdm0pIHsgbV92bSA9IHZtOyB9CkBAIC0z
NjAsMjEgKzM2MiwyMSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2FjdGl2YXRpb25SZWdp
c3Rlci5pc1ZhbGlkKCkgPT0gbV9uZWVkc0FjdGl2YXRpb24pOwogICAgICAgICByZXR1cm4gbV9u
ZWVkc0FjdGl2YXRpb247CiAgICAgfQotICAgIAorCiAgICAgdW5zaWduZWQgY2FwdHVyZUNvdW50
KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghc3ltYm9sVGFibGUoKSkKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICByZXR1cm4gc3ltYm9sVGFibGUoKS0+Y2FwdHVyZUNvdW50KCk7
CiAgICAgfQotICAgIAorCiAgICAgaW50IGNhcHR1cmVTdGFydCgpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoIXN5bWJvbFRhYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
cmV0dXJuIHN5bWJvbFRhYmxlKCktPmNhcHR1cmVTdGFydCgpOwogICAgIH0KLSAgICAKKwogICAg
IGludCBjYXB0dXJlRW5kKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghc3ltYm9sVGFibGUo
KSkKQEAgLTM4Myw3ICszODUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc0NhcHR1
cmVkKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBJbmxpbmVDYWxsRnJhbWUqID0gMCkgY29uc3Q7
Ci0gICAgCisKICAgICBpbnQgZnJhbWVQb2ludGVyT2Zmc2V0VG9HZXRBY3RpdmF0aW9uUmVnaXN0
ZXJzKGludCBtYWNoaW5lQ2FwdHVyZVN0YXJ0KTsKICAgICBpbnQgZnJhbWVQb2ludGVyT2Zmc2V0
VG9HZXRBY3RpdmF0aW9uUmVnaXN0ZXJzKCk7CiAKQEAgLTQwNCw3ICs0MDYsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSAgICBTdHJpbmcgbmFtZUZvclJlZ2lz
dGVyKFZpcnR1YWxSZWdpc3Rlcik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWVG
b3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIpOwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICB2b2lk
IHNldE51bWJlck9mQnlWYWxJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX2J5VmFsSW5mb3MucmVzaXpl
VG9GaXQoc2l6ZSk7IH0KQEAgLTU1MSwxMyArNTUzLDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX2ppdENvZGUtPmRmZ0NvbW1vbigpLT5jb2RlT3JpZ2luczsKICAgICB9Ci0g
ICAgCisKICAgICAvLyBIYXZpbmcgY29kZSBvcmlnaW5zIGltcGxpZXMgdGhhdCB0aGVyZSBoYXMg
YmVlbiBzb21lIGlubGluaW5nLgogICAgIGJvb2wgaGFzQ29kZU9yaWdpbnMoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpOwogICAgIH0K
LSAgICAgICAgCisKICAgICBib29sIGNhbkdldENvZGVPcmlnaW4odW5zaWduZWQgaW5kZXgpCiAg
ICAgewogICAgICAgICBpZiAoIWhhc0NvZGVPcmlnaW5zKCkpCkBAIC02OTMsNyArNjk1LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCisKICAgICB2b2lkIHZhbGlkYXRlKCk7CiAKICAgICAvLyBKdW1wIFRh
YmxlcwpAQCAtODUxLDcgKzg1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcmNlT3B0aW1pemF0
aW9uU2xvd1BhdGhDb25jdXJyZW50bHkoKTsKIAogICAgIHZvaWQgc2V0T3B0aW1pemF0aW9uVGhy
ZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KENvbXBpbGF0aW9uUmVzdWx0KTsKLSAgICAK
KwogICAgIHVpbnQzMl90IG9zckV4aXRDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9vc3JFeGl0
Q291bnRlcjsgfQogCiAgICAgdm9pZCBjb3VudE9TUkV4aXQoKSB7IG1fb3NyRXhpdENvdW50ZXIr
KzsgfQpAQCAtOTAxLDEzICs5MDMsMTMgQEAgcHVibGljOgogICAgICAgICBtX3N0ZXBwaW5nTW9k
ZSA9IFN0ZXBwaW5nTW9kZURpc2FibGVkOwogICAgICAgICBtX251bUJyZWFrcG9pbnRzID0gMDsK
ICAgICB9Ci0gICAgCisKICAgICAvLyBGSVhNRTogTWFrZSB0aGVzZSByZW1haW5pbmcgbWVtYmVy
cyBwcml2YXRlLgogCiAgICAgaW50IG1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwogICAgIGludCBtX251
bVZhcnM7CiAgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOwotICAgIAorCiAgICAgLy8gVGhp
cyBpcyBpbnRlbnRpb25hbGx5IHB1YmxpYzsgaXQncyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgYW55
b25lIGRvaW5nIGFueQogICAgIC8vIG9mIHRoZSBmb2xsb3dpbmcgdG8gaG9sZCB0aGUgbG9jazoK
ICAgICAvLwpAQCAtOTI1LDEwICs5MjcsMTAgQEAgcHVibGljOgogICAgIC8vIHdpdGhvdXQgaG9s
ZGluZyBhbnkgbG9ja3MsIGJlY2F1c2UgdGhlIEdDIGlzIGd1YXJhbnRlZWQgdG8gd2FpdCB1bnRp
bCBhbnkKICAgICAvLyBjb25jdXJyZW50IGNvbXBpbGF0aW9uIHRocmVhZHMgZmluaXNoIHdoYXQg
dGhleSdyZSBkb2luZy4KICAgICBtdXRhYmxlIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsKLSAg
ICAKKwogICAgIGJvb2wgbV9zaG91bGRBbHdheXNCZUlubGluZWQ7IC8vIE5vdCBhIGJpdGZpZWxk
IGJlY2F1c2UgdGhlIEpJVCB3YW50cyB0byBzdG9yZSB0byBpdC4KICAgICBib29sIG1fYWxsVHJh
bnNpdGlvbnNIYXZlQmVlbk1hcmtlZCA6IDE7IC8vIEluaXRpYWxpemVkIGFuZCB1c2VkIG9uIGV2
ZXJ5IEdDLgotICAgIAorCiAgICAgYm9vbCBtX2RpZEZhaWxGVExDb21waWxhdGlvbiA6IDE7CiAg
ICAgYm9vbCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwgOiAxOwogCkBAIC05MzksNiArOTQxLDgg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0tub3duVG9CZUxpdmVEdXJpbmdHQygpOyAvLyBXaWxs
IG9ubHkgcmV0dXJuIHZhbGlkIHJlc3VsdHMgd2hlbiBjYWxsZWQgZHVyaW5nIEdDLiBBc3N1bWVz
IHRoYXQgeW91J3ZlIGFscmVhZHkgZXN0YWJsaXNoZWQgdGhhdCB0aGUgb3duZXIgZXhlY3V0YWJs
ZSBpcyBsaXZlLgogCisgICAgLy9CYWc8VHlwZUxvY2F0aW9uPiBtX2xvY2F0aW9uSW5mbzsKKwog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNp
dG9yJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5
KCkgb3ZlcnJpZGU7CkBAIC05NTEsMTcgKzk1NSwxNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9ja1NldDsKLSAgICAKKwogICAgIENvZGVCbG9jayog
c3BlY2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKTsKLSAgICAKKwogICAgIHZvaWQgbm90aWNlSW5j
b21pbmdDYWxsKEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUpOwotICAgIAorCiAgICAgZG91YmxlIG9w
dGltaXphdGlvblRocmVzaG9sZFNjYWxpbmdGYWN0b3IoKTsKIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgQ2xvc3VyZUNhbGxTdHViUm91dGluZSogZmluZENsb3N1cmVDYWxsRm9yUmV0dXJuUEMoUmV0
dXJuQWRkcmVzc1B0cik7CiAjZW5kaWYKLSAgICAgICAgCisKICAgICB2b2lkIHVwZGF0ZUFsbFBy
ZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1l
bnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyk7CiAK
ICAgICB2b2lkIHNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8
VW5rbm93bj4+JiBjb25zdGFudHMpCkBAIC05OTIsMTIgKzk5NiwxMiBAQCBwcml2YXRlOgogICAg
IHZvaWQgZHVtcFZhbHVlUHJvZmlsaW5nKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24q
JiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgdm9pZCBkdW1wQXJyYXlQcm9maWxp
bmcoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiomLCBib29sJiBoYXNQcmludGVkUHJv
ZmlsaW5nKTsKICAgICB2b2lkIGR1bXBSYXJlQ2FzZVByb2ZpbGUoUHJpbnRTdHJlYW0mLCBjb25z
dCBjaGFyKiBuYW1lLCBSYXJlQ2FzZVByb2ZpbGUqLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5n
KTsKLSAgICAgICAgCisKICAgICBib29sIHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NE
dXJpbmdTY2FuKCk7Ci0gICAgCisKICAgICB2b2lkIHByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RW
aXNpdG9yJik7CiAgICAgdm9pZCBkZXRlcm1pbmVMaXZlbmVzcyhTbG90VmlzaXRvciYpOwotICAg
ICAgICAKKwogICAgIHZvaWQgc3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMoU2xvdFZpc2l0
b3ImKTsKICAgICB2b2lkIHN0cm9uZ2x5VmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYp
OwogCkBAIC0xMDA2LDcgKzEwMTAsOCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fcmFyZURh
dGEpCiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gYWRvcHRQdHIobmV3IFJhcmVEYXRhKTsKICAg
ICB9Ci0gICAgCisKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgdm9pZCByZXNldFN0dWJJbnRlcm5h
bChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8mKTsKICAgICB2b2lkIHJlc2V0U3R1
YkR1cmluZ0dDSW50ZXJuYWwoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CkBA
IC0xMDc1LDcgKzEwODAsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8RnVu
Y3Rpb25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkV4cHJzOwogCiAgICAgUmVmUHRyPENvZGVCbG9j
az4gbV9hbHRlcm5hdGl2ZTsKLSAgICAKKwogICAgIEJhc2VsaW5lRXhlY3V0aW9uQ291bnRlciBt
X2xsaW50RXhlY3V0ZUNvdW50ZXI7CiAKICAgICBCYXNlbGluZUV4ZWN1dGlvbkNvdW50ZXIgbV9q
aXRFeGVjdXRlQ291bnRlcjsKQEAgLTEwODMsNyArMTA4OCw3IEBAIHByaXZhdGU6CiAgICAgdWlu
dDMyX3QgbV9vc3JFeGl0Q291bnRlcjsKICAgICB1aW50MTZfdCBtX29wdGltaXphdGlvbkRlbGF5
Q291bnRlcjsKICAgICB1aW50MTZfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwotICAg
IAorCiAgICAgbXV0YWJsZSBDb2RlQmxvY2tIYXNoIG1faGFzaDsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IG1fbGl2ZW5lc3NBbmFseXNpczsKQEAgLTEx
MjAsNyArMTEyNSw3IEBAIHByb3RlY3RlZDoKICAgICA6IENvZGVCbG9jayhDb3B5UGFyc2VkQmxv
Y2ssIG90aGVyKQogICAgIHsKICAgICB9Ci0gICAgICAgIAorCiAgICAgR2xvYmFsQ29kZUJsb2Nr
KFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRl
cj4gc291cmNlUHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwgdW5zaWduZWQgZmlyc3RM
aW5lQ29sdW1uT2Zmc2V0KQogICAgICAgICA6IENvZGVCbG9jayhvd25lckV4ZWN1dGFibGUsIHVu
bGlua2VkQ29kZUJsb2NrLCBzY29wZSwgc291cmNlUHJvdmlkZXIsIHNvdXJjZU9mZnNldCwgZmly
c3RMaW5lQ29sdW1uT2Zmc2V0KQogICAgIHsKQEAgLTExNTIsMjEgKzExNTcsMjEgQEAgcHVibGlj
OgogICAgIDogR2xvYmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCiAgICAgewog
ICAgIH0KLSAgICAgICAgCisKICAgICBFdmFsQ29kZUJsb2NrKEV2YWxFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpT
U2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlcikK
ICAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVC
bG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCAwLCAxKQogICAgIHsKICAgICB9Ci0gICAgCisK
ICAgICBjb25zdCBJZGVudGlmaWVyJiB2YXJpYWJsZSh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4g
dW5saW5rZWRFdmFsQ29kZUJsb2NrKCktPnZhcmlhYmxlKGluZGV4KTsgfQogICAgIHVuc2lnbmVk
IG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIHVubGlua2VkRXZhbENvZGVCbG9jaygpLT5udW1WYXJp
YWJsZXMoKTsgfQotICAgIAorCiAjaWYgRU5BQkxFKEpJVCkKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIERGRzo6
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkgb3ZlcnJpZGU7CiAjZW5k
aWYKLSAgICAKKwogcHJpdmF0ZToKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2Vk
RXZhbENvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxVbmxpbmtlZEV2YWxDb2RlQmxv
Y2sqPih1bmxpbmtlZENvZGVCbG9jaygpKTsgfQogfTsKQEAgLTExODIsNyArMTE4Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgOiBDb2RlQmxvY2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVC
bG9jaywgc2NvcGUsIHNvdXJjZVByb3ZpZGVyLCBzb3VyY2VPZmZzZXQsIGZpcnN0TGluZUNvbHVt
bk9mZnNldCkKICAgICB7CiAgICAgfQotICAgIAorCiAjaWYgRU5BQkxFKEpJVCkKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKQEAgLTEy
MDksMTEgKzEyMTQsMTEgQEAgaW5saW5lIGludCBDb2RlQmxvY2s6OmFyZ3VtZW50SW5kZXhBZnRl
ckNhcHR1cmUoc2l6ZV90IGFyZ3VtZW50KQogewogICAgIGlmIChhcmd1bWVudCA+PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHN5bWJvbFRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkpKQogICAgICAgICBy
ZXR1cm4gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChhcmd1bWVudCk7Ci0gICAgCisKICAgICBj
b25zdCBTbG93QXJndW1lbnQqIHNsb3dBcmd1bWVudHMgPSBzeW1ib2xUYWJsZSgpLT5zbG93QXJn
dW1lbnRzKCk7CiAgICAgaWYgKCFzbG93QXJndW1lbnRzIHx8IHNsb3dBcmd1bWVudHNbYXJndW1l
bnRdLnN0YXR1cyA9PSBTbG93QXJndW1lbnQ6Ok5vcm1hbCkKICAgICAgICAgcmV0dXJuIENhbGxG
cmFtZTo6YXJndW1lbnRPZmZzZXQoYXJndW1lbnQpOwotICAgIAorCiAgICAgQVNTRVJUKHNsb3dB
cmd1bWVudHNbYXJndW1lbnRdLnN0YXR1cyA9PSBTbG93QXJndW1lbnQ6OkNhcHR1cmVkKTsKICAg
ICByZXR1cm4gc2xvd0FyZ3VtZW50c1thcmd1bWVudF0uaW5kZXg7CiB9CkBAIC0xMjQxLDEwICsx
MjQ2LDEwIEBAIGlubGluZSBKU1ZhbHVlIEV4ZWNTdGF0ZTo6YXJndW1lbnRBZnRlckNhcHR1cmUo
c2l6ZV90IGFyZ3VtZW50KQogewogICAgIGlmIChhcmd1bWVudCA+PSBhcmd1bWVudENvdW50KCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAorCiAgICAgaWYgKCFjb2RlQmxv
Y2soKSkKICAgICAgICAgcmV0dXJuIHRoaXNbYXJndW1lbnRPZmZzZXQoYXJndW1lbnQpXS5qc1Zh
bHVlKCk7Ci0gICAgCisKICAgICByZXR1cm4gdGhpc1tjb2RlQmxvY2soKS0+YXJndW1lbnRJbmRl
eEFmdGVyQ2FwdHVyZShhcmd1bWVudCldLmpzVmFsdWUoKTsKIH0KIApAQCAtMTI1MiwxNCArMTI1
NywxNCBAQCBpbmxpbmUgdm9pZCBDb2RlQmxvY2tTZXQ6Om1hcmsodm9pZCogY2FuZGlkYXRlQ29k
ZUJsb2NrKQogewogICAgIC8vIFdlIGhhdmUgdG8gY2hlY2sgZm9yIDAgYW5kIC0xIGJlY2F1c2Ug
dGhvc2UgYXJlIHVzZWQgYnkgdGhlIEhhc2hNYXAgYXMgbWFya2Vycy4KICAgICB1aW50cHRyX3Qg
dmFsdWUgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2FuZGlkYXRlQ29kZUJsb2NrKTsK
LSAgICAKKwogICAgIC8vIFRoaXMgY2hlY2tzIGZvciBib3RoIG9mIHRob3NlIG5hc3R5IGNhc2Vz
IGluIG9uZSBnby4KICAgICAvLyAwICsgMSA9IDEKICAgICAvLyAtMSArIDEgPSAwCiAgICAgaWYg
KHZhbHVlICsgMSA8PSAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KGNhbmRpZGF0ZUNvZGVCbG9jayk7IAorICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8Q29kZUJsb2NrKj4oY2FuZGlkYXRl
Q29kZUJsb2NrKTsKICAgICBpZiAoIW1fb2xkQ29kZUJsb2Nrcy5jb250YWlucyhjb2RlQmxvY2sp
ICYmICFtX25ld0NvZGVCbG9ja3MuY29udGFpbnMoY29kZUJsb2NrKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMjcwLDEwICsxMjc1LDEwIEBAIGlubGluZSB2b2lkIENvZGVCbG9ja1NldDo6bWFy
ayhDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAg
cmV0dXJuOwotICAgIAorCiAgICAgaWYgKGNvZGVCbG9jay0+bV9tYXlCZUV4ZWN1dGluZykKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgY29kZUJsb2NrLT5tX21heUJlRXhlY3V0aW5nID0g
dHJ1ZTsKICAgICAvLyBXZSBtaWdodCBub3QgaGF2ZSBjbGVhcmVkIHRoZSBtYXJrcyBmb3IgdGhp
cyBDb2RlQmxvY2ssIGJ1dCB3ZSBuZWVkIHRvIHZpc2l0IGl0LgogICAgIGNvZGVCbG9jay0+bV92
aXNpdEFnZ3JlZ2F0ZUhhc0JlZW5DYWxsZWQgPSBmYWxzZTsKQEAgLTEyODksMTIgKzEyOTQsMTIg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIFNjcmlwdEV4ZWN1dGFi
bGU6OmZvckVhY2hDb2RlQmxvY2soRnVuY3QKICAgICAgICAganNDYXN0PFByb2dyYW1FeGVjdXRh
YmxlKj4odGhpcyktPm1fcHJvZ3JhbUNvZGVCbG9jay0+Zm9yRWFjaFJlbGF0ZWRDb2RlQmxvY2so
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgICAgICAKKwogICAgIGNhc2UgRXZhbEV4ZWN1dGFibGVUeXBlOiB7CiAgICAgICAgIGpzQ2Fz
dDxFdmFsRXhlY3V0YWJsZSo+KHRoaXMpLT5tX2V2YWxDb2RlQmxvY2stPmZvckVhY2hSZWxhdGVk
Q29kZUJsb2NrKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICAgICAgCisKICAgICBjYXNlIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU6IHsK
ICAgICAgICAgRnVuY3RvciBmKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSk7CiAgICAg
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2tIYXNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrSGFzaC5oCmluZGV4IDRlMzM5ODg2Li45ZTgyZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAK
ICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdW5zaWduZWQgZ2V0SGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQog
ICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAppbmRleCBjYTQ1Nzc1Li44OWUz
YzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApA
QCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRl
ICJPcGNvZGUuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNsdWRlICJQcm9wZXJ0
eVNsb3QuaCIKICNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZS5oIgpAQCAtMTE4LDYgKzExOSw3IEBAIHN0cnVjdCBJbnN0cnVjdGlvbiB7CiAgICAgICAgIFdy
aXRlQmFycmllckJhc2U8SlNBY3RpdmF0aW9uPiBhY3RpdmF0aW9uOwogICAgICAgICB2b2lkKiBw
b2ludGVyOwogICAgICAgICBib29sKiBwcmVkaWNhdGVQb2ludGVyOworICAgICAgICBUeXBlTG9j
YXRpb24qIGxvY2F0aW9uOwogICAgIH0gdTsKICAgICAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAppbmRleCBmMjFlMDVmLi4xOTQ0NjJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaApAQCAtMTkwLDYgKzE5
MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbV9hcmd1bWVudHNbaW5kZXhdOwog
ICAgICAgICByZXR1cm4gbV9sb2NhbHNbaW5kZXggLSBudW1iZXJPZkFyZ3VtZW50cygpXTsKICAg
ICB9CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlckF0KHNpemVfdCBpbmRleCkg
CisgICAgeworICAgICAgICBpZiAoaW5kZXggPCBudW1iZXJPZkFyZ3VtZW50cygpKQorICAgICAg
ICAgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4KTsKKyAgICAgICAg
cmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4IC0gbnVtYmVyT2ZBcmd1bWVudHMo
KSk7CisgICAgfQogICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7
IHJldHVybiBhdChpbmRleCk7IH0KICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgeyBy
ZXR1cm4gYXQoaW5kZXgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9UeXBlTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9U
eXBlTG9jYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2FkODQx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVM
b2NhdGlvbi5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFR5cGVMb2NhdGlvbl9oCisjZGVmaW5lIFR5
cGVMb2NhdGlvbl9oCisKKyNpbmNsdWRlICJUeXBlU2V0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CisgICAgZW51bSBIaWdoRmlkZWxpdHlHbG9iYWxJREZsYWdzIHsKKyAgICAgICAgSGlnaEZpZGVs
aXR5TmVlZHNVbmlxdWVJREdlbmVyYXRpb24gPSAtMSwKKyAgICAgICAgSGlnaEZpZGVsaXR5Tm9H
bG9iYWxJREV4aXN0cyA9IC0yCisgICAgfTsKKworY2xhc3MgVHlwZUxvY2F0aW9uIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgCitwdWJsaWM6CisgICAgVHlwZUxvY2F0aW9uKCkgCisgICAgICAg
IDogdHlwZVNldChuZXcgVHlwZVNldCgpKQorICAgIHsKKyAgICB9CisKKyAgICB+VHlwZUxvY2F0
aW9uKCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0eXBlU2V0OworICAgIH0KKworICAgIC8vdWlu
dDY0X3QgZ2xvYmFsVmFyaWFibGVJRDsKKyAgICBpbnQ2NF90IGdsb2JhbFZhcmlhYmxlSUQ7Cisg
ICAgdWludDY0X3QgZ2xvYmFsSW5zdHJ1Y3Rpb25JRDsKKyAgICBzaXplX3QgdW5saW5rZWRCeXRl
Q29kZU9mZnNldDsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRDsKKyAgICB1bnNpZ25lZCBsaW5lOwor
ICAgIHVuc2lnbmVkIGNvbHVtbjsKKyAgICBUeXBlU2V0KiB0eXBlU2V0OworfTsKKworfSAvL25h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vTG9jYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBl
NTQ5YjgzLi5jNTRiZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNTIsNyArNTIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIHZvaWQgTGFiZWw6OnNldExvY2F0aW9uKHVuc2lnbmVkIGxvY2F0aW9uKQog
ewogICAgIG1fbG9jYXRpb24gPSBsb2NhdGlvbjsKLSAgICAKKwogICAgIHVuc2lnbmVkIHNpemUg
PSBtX3VucmVzb2x2ZWRKdW1wcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7ICsraSkKICAgICAgICAgbV9nZW5lcmF0b3ItPm1faW5zdHJ1Y3Rpb25zW21fdW5yZXNv
bHZlZEp1bXBzW2ldLnNlY29uZF0udS5vcGVyYW5kID0gbV9sb2NhdGlvbiAtIG1fdW5yZXNvbHZl
ZEp1bXBzW2ldLmZpcnN0OwpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIExhYmVsOjpzZXRMb2NhdGlv
bih1bnNpZ25lZCBsb2NhdGlvbikKIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSgpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkJ5dGVjb2RlIEdl
bmVyYXRpb24iKTsKLSAgICAKKwogICAgIG1fY29kZUJsb2NrLT5zZXRUaGlzUmVnaXN0ZXIobV90
aGlzUmVnaXN0ZXIudmlydHVhbFJlZ2lzdGVyKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9kZWNvbnN0cnVjdGVkUGFyYW1ldGVycy5zaXplKCk7IGkrKykgewogICAgICAgICBhdXRv
JiBlbnRyeSA9IG1fZGVjb25zdHJ1Y3RlZFBhcmFtZXRlcnNbaV07CkBAIC03Niw3ICs3Niw3IEBA
IFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIFRyeVJh
bmdlJiByYW5nZSA9IG1fdHJ5UmFuZ2VzW2ldOwogICAgICAgICBpbnQgc3RhcnQgPSByYW5nZS5z
dGFydC0+YmluZCgpOwogICAgICAgICBpbnQgZW5kID0gcmFuZ2UuZW5kLT5iaW5kKCk7Ci0gICAg
ICAgIAorCiAgICAgICAgIC8vIFRoaXMgd2lsbCBoYXBwZW4gZm9yIGVtcHR5IHRyeSBibG9ja3Mg
YW5kIGZvciBzb21lIGNhc2VzIG9mIGZpbmFsbHkgYmxvY2tzOgogICAgICAgICAvLwogICAgICAg
ICAvLyB0cnkgewpAQCAtMTAxLDcgKzEwMSw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIC8vIHN1Y2ggaGFuZGxlcnMgYXQgYWxsLgogICAgICAg
ICBpZiAoZW5kIDw9IHN0YXJ0KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAg
ICAgICAgIEFTU0VSVChyYW5nZS50cnlEYXRhLT50YXJnZXRTY29wZURlcHRoICE9IFVJTlRfTUFY
KTsKICAgICAgICAgVW5saW5rZWRIYW5kbGVySW5mbyBpbmZvID0gewogICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGVuZCksCkBA
IC0xMTAsNyArMTEwLDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KCkKICAgICAgICAgfTsKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEV4Y2VwdGlvbkhhbmRsZXIo
aW5mbyk7CiAgICAgfQotICAgIAorCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9ucyhz
dGQ6Om1ha2VfdW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25z
KSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoKTsKQEAgLTEyNyw3ICsxMjcsNyBA
QCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoCiAgICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIENvbnN0YW50TW9kZSBjb25zdGFudE1vZGUsIFdhdGNoTW9kZSB3YXRjaE1vZGUsIFJl
Z2lzdGVySUQqJiByMCkKIHsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2NvZGVC
bG9jay0+bV9udW1WYXJzKSA9PSBtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCkpOwotICAgIAorCiAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUoKS5tX2xvY2spOwogICAg
IGludCBpbmRleCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY2FsbGVlUmVnaXN0ZXJzLnNp
emUoKSkub2Zmc2V0KCk7CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgY29u
c3RhbnRNb2RlID09IElzQ29uc3RhbnQgPyBSZWFkT25seSA6IDApOwpAQCAtMTM3LDE3ICsxMzcs
MTcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFyKAogICAgICAgICByMCA9ICZyZWdp
c3RlckZvcihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldEluZGV4KCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHdhdGNoTW9kZSA9PSBJc1dhdGNoYWJs
ZSkgewogICAgICAgICB3aGlsZSAobV93YXRjaGFibGVWYXJpYWJsZXMuc2l6ZSgpIDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihtX2NvZGVCbG9jay0+bV9udW1WYXJzKSkKICAgICAgICAgICAgIG1fd2F0
Y2hhYmxlVmFyaWFibGVzLmFwcGVuZChJZGVudGlmaWVyKCkpOwogICAgICAgICBtX3dhdGNoYWJs
ZVZhcmlhYmxlcy5hcHBlbmQoaWRlbnQpOwogICAgIH0KLSAgICAKKwogICAgIHIwID0gYWRkVmFy
KCk7Ci0gICAgCisKICAgICBBU1NFUlQod2F0Y2hNb2RlID09IE5vdFdhdGNoYWJsZSB8fCBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fY29kZUJsb2NrLT5tX251bVZhcnMpID09IG1fd2F0Y2hhYmxlVmFy
aWFibGVzLnNpemUoKSk7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjY0LDcg
KzI2NCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgVW5sCiAKICAgICAgICAgZW1pdEluaXRMYXp5
UmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpOwogICAgICAgICBlbWl0SW5pdExhenlSZWdpc3Rl
cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIpOwotICAgICAgICAKKwogICAgICAgICBpZiAo
c2hvdWxkVGVhck9mZkFyZ3VtZW50c0VhZ2VybHkoKSkgewogICAgICAgICAgICAgZW1pdE9wY29k
ZShvcF9jcmVhdGVfYXJndW1lbnRzKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhcmd1bWVudHNSZWdpc3Rlci0+aW5kZXgoKSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSog
ZnVuY3Rpb25Cb2R5LCBVbmwKIAogICAgIGlmIChtX3N5bWJvbFRhYmxlLT5jYXB0dXJlQ291bnQo
KSkKICAgICAgICAgZW1pdE9wY29kZShvcF90b3VjaF9lbnRyeSk7Ci0gICAgCisKICAgICBtX3Bh
cmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNlIGZv
ciAidGhpcyIKIAogICAgIC8vIEFkZCAidGhpcyIgYXMgYSBwYXJhbWV0ZXIKQEAgLTUxNSwxNyAr
NTE1LDE3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNvbHZlVG9Bcmd1bWVudHMo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgaWYgKGlkZW50ICE9IHByb3BlcnR5TmFt
ZXMoKS5hcmd1bWVudHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIGlmICgh
c2hvdWxkT3B0aW1pemVMb2NhbHMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAg
ICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkuZ2V0KGlkZW50LmltcGwo
KSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAobV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSAmJiBtX2NvZGVUeXBlID09IEZ1bmN0
aW9uQ29kZSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTU2NSw3ICs1NjUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
bmV3VGVtcG9yYXJ5KCkKICAgICAvLyBSZWNsYWltIGZyZWUgcmVnaXN0ZXIgSURzLgogICAgIHdo
aWxlIChtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCkgJiYgIW1fY2FsbGVlUmVnaXN0ZXJzLmxhc3Qo
KS5yZWZDb3VudCgpKQogICAgICAgICBtX2NhbGxlZVJlZ2lzdGVycy5yZW1vdmVMYXN0KCk7Ci0g
ICAgICAgIAorCiAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gbmV3UmVnaXN0ZXIoKTsKICAgICBy
ZXN1bHQtPnNldFRlbXBvcmFyeSgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMDAyLDYgKzEw
MDIsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKFJlZ2lzdGVy
SUQqIGRzdCwgQ2FwdHVyZU1vZGUgY2FwdHVyZU1vZGUKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoc3JjLT5pbmRleCgpKTsKICAgICBpZiAoY2FwdHVyZU1vZGUgPT0gSXNDYXB0dXJlZCkKICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHdhdGNoYWJsZVZhcmlhYmxlKGRzdC0+aW5kZXgo
KSkpOworCisgICAgLy9UT0RPOiBub3QgZmlyaW5nIGZvciB1bmRlZmluZWQgYW5kIGFzc2lnbm1l
bnRzIHRvIGZ1bmN0aW9ucworICAgIGlmICghZHN0LT5pc1RlbXBvcmFyeSgpICYmIGlzR2VuZXJh
dGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSkKKyAgICAgICAgZW1pdFByb2ZpbGVUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoZHN0LCB0cnVlKTsKKwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAg
LTExMTEsNiArMTExNiwyMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVx
dWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdAogICAgIHJldHVybiBk
c3Q7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlVHlwZXNXaXRoSGln
aEZpZGVsaXR5KFJlZ2lzdGVySUQqIHJlZ2lzdGVyVG9Qcm9maWxlLCBib29sIGhhc0dsb2JhbElE
KQoreworICAgIC8vb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkgdmFsdWVfcmVn
IGxvY2F0aW9uIGhhc0dsb2JhbElECisgICAgLy9pbnQzMl90IG9mZnNldCA9IHN0YXRpY19jYXN0
PGludDMyX3Q+KGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgLy9wcmludGYoImVtaXQgcHJv
ZmlsZSB0eXBlcyBvZmZzZXQ6JyVkJ1xuIiwgb2Zmc2V0KTsKKyAgICBlbWl0T3Bjb2RlKG9wX3By
b2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQocmVnaXN0ZXJUb1Byb2ZpbGUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKKyAgICBpZiAoaGFzR2xvYmFsSUQpIC8vZW1pdE1vdmUgYW5kIHdlJ3JlIGludGVyZXN0
ZWQgaW4gYSBnbG9iYWwgdmFyaWFibGUgaWQKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDEpOworICAgIGVsc2UKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOyAvL3B1dF9i
eV9pZCwgZG9uJ3QgdHJ5IHRvIHRyYWNlIHRvIGEgZ2xvYmFsIG9iamVjdAorCisgICAgLy9pbnN0
cnVjdGlvbnMoKS5hcHBlbmQob2Zmc2V0KTsKK30KKworCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29sIGIpCiB7CiAgICAgcmV0dXJu
IGVtaXRMb2FkKGRzdCwganNCb29sZWFuKGIpKTsKQEAgLTExNjksNyArMTE5MSw3IEBAIExvY2Fs
IEJ5dGVjb2RlR2VuZXJhdG9yOjpsb2NhbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsK
ICAgICBpZiAocHJvcGVydHkgPT0gcHJvcGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyKQogICAg
ICAgICByZXR1cm4gTG9jYWwodGhpc1JlZ2lzdGVyKCksIFJlYWRPbmx5LCBOb3RDYXB0dXJlZCk7
Ci0gICAgCisKICAgICBpZiAocHJvcGVydHkgPT0gcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykK
ICAgICAgICAgY3JlYXRlQXJndW1lbnRzSWZOZWNlc3NhcnkoKTsKIApAQCAtMTI1NSwxOCArMTI3
NywyMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRvU2NvcGUoUmVn
aXN0ZXJJRCogc2NvcGUsIGNvbnN0IElkZW50aWZpZQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKICAgICAvLyBw
dXRfdG9fc2NvcGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVzb2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1
cmUsIE9wZXJhbmQKLSAgICBlbWl0T3Bjb2RlKG9wX3B1dF90b19zY29wZSk7CisgICAgaWYgKGlz
R2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSkKKyAgICAgICAgZW1pdE9wY29k
ZShvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlKTsKKyAgICBlbHNlCisgICAgICAgIGVtaXRP
cGNvZGUob3BfcHV0X3RvX3Njb3BlKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGUt
PmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChpZGVudGlm
aWVyKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoUmVzb2x2ZU1vZGVBbmRUeXBlKHJlc29sdmVNb2RlLCByZXNv
bHZlVHlwZSgpKS5vcGVyYW5kKCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaWYgKGlzR2VuZXJhdGluZ0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxpbmcoKSkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJbnN0YW5jZU9mKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVy
SUQqIGJhc2VQcm90b3R5cGUpCi17IAorewogICAgIGVtaXRPcGNvZGUob3BfaW5zdGFuY2VvZik7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKQEAgLTEzMjgsNiArMTM1NSwxMCBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgcAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwor
CisgICAgaWYgKGlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSkKKyAgICAg
ICAgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodmFsdWUsIGZhbHNlKTsKKwogICAg
IHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTMzOCw3ICsxMzY5LDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0
IElkZW50aWYKICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJZChiYXNlLT5pbmRl
eCgpLCBwcm9wZXJ0eUluZGV4KTsKIAogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0gICAgCisKICAgICBlbWl0T3Bj
b2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eUluZGV4KTsKQEAgLTE0NTgs
NyArMTQ4OSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJbmRl
eChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwKIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gZnVuYyA9IG5ld1RlbXBvcmFyeSgpOyAKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuYyA9IG5ld1RlbXBvcmFyeSgpOwogCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICBlbWl0T3Bj
b2RlKG9wX2dldF9jYWxsZWUpOwpAQCAtMTQ2OCw5ICsxNDk5LDkgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVUaGlzKFJlZ2lzdGVySUQqIGRzdCkKICAgICBzaXpl
X3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFu
YWx5emVyLmNyZWF0ZVRoaXMobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSwgYmVnaW4gKyAzKTsKIAot
ICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOyAKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7IAotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChm
dW5jLT5pbmRleCgpKTsgCisgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfdGhpcyk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CiAgICAgcmV0dXJuIGRzdDsKIH0KQEAgLTE1OTcsNyArMTYyOCw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQq
IHIwLCBGdW5jRXhwCiB7CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24gPSBuLT5ib2R5
KCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25FeHByKG1h
a2VGdW5jdGlvbihmdW5jdGlvbikpOwotICAgIAorCiAgICAgY3JlYXRlQWN0aXZhdGlvbklmTmVj
ZXNzYXJ5KCk7CiAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuY19leHApOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChyMC0+aW5kZXgoKSk7CkBAIC0xNjE0LDcgKzE2NDUsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYg
KG1fY29kZVR5cGUgIT0gRnVuY3Rpb25Db2RlKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAg
ICBpZiAoIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTY1NywxOCArMTY4OCwxOCBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICAv
LyBJZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBpcyBub24temVybywgdGhlbiB3ZSBjYW4ndCBk
byBhbnl0aGluZyBpbnRlcmVzdGluZy4KICAgICAgICAgaWYgKGNhbGxBcmd1bWVudHMuYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKSA+PSAyKQogICAgICAgICAgICAgcmV0dXJuIE5vRXhwZWN0
ZWRGdW5jdGlvbjsKLSAgICAgICAgCisKICAgICAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpOwogICAgICAgICBlbWl0T3Bjb2RlKG9wX2puZXFfcHRyKTsKICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoU3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3IpOwogICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQocmVhbENhbGwtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUo
KSkpOwotICAgICAgICAKKwogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkKICAg
ICAgICAgICAgIGVtaXROZXdPYmplY3QoZHN0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
ICAgICAKKwogICAgIGNhc2UgRXhwZWN0QXJyYXlDb25zdHJ1Y3RvcjogewogICAgICAgICAvLyBJ
ZiB5b3UncmUgZG9pbmcgYW55dGhpbmcgb3RoZXIgdGhhbiAibmV3IEFycmF5KCkiIG9yICJuZXcg
QXJyYXkoZm9vKSIgdGhlbiB3ZQogICAgICAgICAvLyBkb24ndCBkbyBpbmxpbmUgaXQsIGZvciBu
b3cuIFRoZSBvbmx5IHJlYXNvbiBpcyB0aGF0IGNhbGwgYXJndW1lbnRzIGFyZSBpbgpAQCAtMTY3
NywxMyArMTcwOCwxMyBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICAvLyB0aGlu
Z3Mgc291bmRzIGxpa2UgaXQncyB3b3J0aCBpdC4KICAgICAgICAgaWYgKGNhbGxBcmd1bWVudHMu
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA+IDIpCiAgICAgICAgICAgICByZXR1cm4gTm9F
eHBlY3RlZEZ1bmN0aW9uOwotICAgICAgICAKKwogICAgICAgICBzaXplX3QgYmVnaW4gPSBpbnN0
cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgICAgIGVtaXRPcGNvZGUob3Bfam5lcV9wdHIpOwogICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7CiAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9yKTsKICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHJlYWxDYWxsLT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5z
aXplKCkpKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkp
IHsKICAgICAgICAgICAgIGlmIChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKCkgPT0gMikgewogICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2FycmF5X3dp
dGhfc2l6ZSk7CkBAIC0xNzAxLDE3ICsxNzMyLDE3IEBAIEV4cGVjdGVkRnVuY3Rpb24gQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldChSZWdpc3RlcklEKiBkc3Qs
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEFTU0VSVChleHBlY3RlZEZ1bmN0aW9uID09IE5vRXhwZWN0ZWRGdW5jdGlv
bik7CiAgICAgICAgIHJldHVybiBOb0V4cGVjdGVkRnVuY3Rpb247CiAgICAgfQotICAgIAorCiAg
ICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGVtaXRPcGNvZGUo
b3Bfam1wKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZG9uZS0+YmluZChiZWdpbiwgaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAg
ICAKKwogICAgIHJldHVybiBleHBlY3RlZEZ1bmN0aW9uOwogfQogCkBAIC0xNzQxLDcgKzE3NzIs
NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoT3Bjb2RlSUQgb3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaQogICAgICAgICBmb3IgKDsgbjsgbiA9IG4tPm1f
bmV4dCkKICAgICAgICAgICAgIGVtaXROb2RlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3Rl
cihhcmd1bWVudCsrKSwgbik7CiAgICAgfQotICAgIAorCiAgICAgLy8gUmVzZXJ2ZSBzcGFjZSBm
b3IgY2FsbCBmcmFtZS4KICAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+LCBKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJTaXplLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1lOwogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsgKytpKQpA
QCAtMTc1Niw3ICsxNzg3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YWxsKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2kKIAogICAgIFJlZlB0
cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CiAgICAgZXhwZWN0ZWRGdW5jdGlvbiA9IGVtaXRF
eHBlY3RlZEZ1bmN0aW9uU25pcHBldChkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRvbmUuZ2V0KCkpOwotICAgIAorCiAgICAgLy8gRW1pdCBjYWxsLgogICAgIFVu
bGlua2VkQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZSA9IG5ld0FycmF5UHJvZmlsZSgpOwogICAg
IFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3Bjb2Rl
SUQpOwpAQCAtMTc3NCw3ICsxODA1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDYWxsKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2kKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFycmF5
UHJvZmlsZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwotICAgIAorCiAg
ICAgaWYgKGV4cGVjdGVkRnVuY3Rpb24gIT0gTm9FeHBlY3RlZEZ1bmN0aW9uKQogICAgICAgICBl
bWl0TGFiZWwoZG9uZS5nZXQoKSk7CiAKQEAgLTE3OTUsNyArMTgyNiw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsVmFyYXJncyhvcF9jb25zdHJ1Y3Rf
dmFyYXJncywgZHN0LCBmdW5jLCAwLCBhcmd1bWVudHMsIGZpcnN0RnJlZVJlZ2lzdGVyLCBmaXJz
dFZhckFyZ09mZnNldCwgcHJvZmlsZUhvb2tSZWdpc3RlciwgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKTsKIH0KLSAgICAKKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YWxsVmFyYXJncyhPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
ZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJl
Z2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBS
ZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpCiB7CiAgICAgaWYgKG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcykgewpAQCAt
MTgwMyw3ICsxODM0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxs
VmFyYXJncyhPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQqIGRzdCwKICAgICAgICAgZW1pdE9w
Y29kZShvcF9wcm9maWxlX3dpbGxfY2FsbCk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChwcm9maWxlSG9va1JlZ2lzdGVyLT5pbmRleCgpKTsKICAgICB9Ci0gICAgCisKICAgICBlbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKIAogICAgIC8vIEVt
aXQgY2FsbC4KQEAgLTE4NjcsNyArMTg5OCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q29uc3RydWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywKICAg
ICAvLyBHZW5lcmF0ZSBjb2RlIGZvciBhcmd1bWVudHMuCiAgICAgdW5zaWduZWQgYXJndW1lbnQg
PSAwOwogICAgIGlmIChBcmd1bWVudHNOb2RlKiBhcmd1bWVudHNOb2RlID0gY2FsbEFyZ3VtZW50
cy5hcmd1bWVudHNOb2RlKCkpIHsKLSAgICAgICAgCisKICAgICAgICAgQXJndW1lbnRMaXN0Tm9k
ZSogbiA9IGNhbGxBcmd1bWVudHMuYXJndW1lbnRzTm9kZSgpLT5tX2xpc3ROb2RlOwogICAgICAg
ICBpZiAobiAmJiBuLT5tX2V4cHItPmlzU3ByZWFkRXhwcmVzc2lvbigpKSB7CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbi0+bV9uZXh0KTsKQEAgLTE4NzksNyArMTkxMCw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogZnVuYywKICAgICAgICAgICAgICAgICBhcmd1bWVudFJlZ2lzdGVyID0gZXhw
cmVzc2lvbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0
ZXIoMCkpOwogICAgICAgICAgICAgcmV0dXJuIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKGRzdCwgZnVu
YywgYXJndW1lbnRSZWdpc3Rlci5nZXQoKSwgbmV3VGVtcG9yYXJ5KCksIDAsIGNhbGxBcmd1bWVu
dHMucHJvZmlsZUhvb2tSZWdpc3RlcigpLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAoQXJndW1lbnRMaXN0Tm9kZSogbiA9
IGFyZ3VtZW50c05vZGUtPm1fbGlzdE5vZGU7IG47IG4gPSBuLT5tX25leHQpCiAgICAgICAgICAg
ICBlbWl0Tm9kZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnQrKyksIG4p
OwogICAgIH0KQEAgLTE4OTUsNyArMTkyNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q29uc3RydWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywKICAg
ICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7CiAKICAgICBlbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKLSAgICAKKwogICAgIFJlZlB0
cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVsKCk7CiAgICAgZXhwZWN0ZWRGdW5jdGlvbiA9IGVtaXRF
eHBlY3RlZEZ1bmN0aW9uU25pcHBldChkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRvbmUuZ2V0KCkpOwogCkBAIC0yMTEyLDcgKzIxNDMsNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3BlcyhDb250cm9sRmxvd0NvbnRleHQqIHRv
cFNjb3BlLCBDb250cgogICAgICAgICAgICAgaWYgKHRvcFNjb3BlID09IGJvdHRvbVNjb3BlKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBW
ZWN0b3I8Q29udHJvbEZsb3dDb250ZXh0PiBzYXZlZFNjb3BlQ29udGV4dFN0YWNrOwogICAgICAg
ICBWZWN0b3I8U3dpdGNoSW5mbz4gc2F2ZWRTd2l0Y2hDb250ZXh0U3RhY2s7CiAgICAgICAgIFZl
Y3RvcjxGb3JJbkNvbnRleHQ+IHNhdmVkRm9ySW5Db250ZXh0U3RhY2s7CkBAIC0yMTIwLDcgKzIx
NTEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3BlcyhDb250
cm9sRmxvd0NvbnRleHQqIHRvcFNjb3BlLCBDb250cgogICAgICAgICBMYWJlbFNjb3BlU3RvcmUg
c2F2ZWRMYWJlbFNjb3BlczsKICAgICAgICAgd2hpbGUgKHRvcFNjb3BlID4gYm90dG9tU2NvcGUg
JiYgdG9wU2NvcGUtPmlzRmluYWxseUJsb2NrKSB7CiAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+
IGJlZm9yZUZpbmFsbHkgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICAgICAgLy8gU2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgd29ybGQg
d2hpbGUgaW5zdGF0aW5nIHRoZSBzdGF0ZSBvZiB0aGUgd29ybGQKICAgICAgICAgICAgIC8vIGZv
ciB0aGUgZmluYWxseSBibG9jay4KICAgICAgICAgICAgIEZpbmFsbHlDb250ZXh0IGZpbmFsbHlD
b250ZXh0ID0gdG9wU2NvcGUtPmZpbmFsbHlDb250ZXh0OwpAQCAtMjE2NywxMiArMjE5OCwxMiBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3BlcyhDb250cm9sRmxv
d0NvbnRleHQqIHRvcFNjb3BlLCBDb250cgogICAgICAgICAgICAgbV9maW5hbGx5RGVwdGggPSBm
aW5hbGx5Q29udGV4dC5maW5hbGx5RGVwdGg7CiAgICAgICAgICAgICBpbnQgc2F2ZWREeW5hbWlj
U2NvcGVEZXB0aCA9IG1fbG9jYWxTY29wZURlcHRoOwogICAgICAgICAgICAgbV9sb2NhbFNjb3Bl
RGVwdGggPSBmaW5hbGx5Q29udGV4dC5keW5hbWljU2NvcGVEZXB0aDsKLSAgICAgICAgICAgIAor
CiAgICAgICAgICAgICAvLyBFbWl0IHRoZSBmaW5hbGx5IGJsb2NrLgogICAgICAgICAgICAgZW1p
dE5vZGUoZmluYWxseUNvbnRleHQuZmluYWxseUJsb2NrKTsKLSAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICBSZWZQdHI8TGFiZWw+IGFmdGVyRmluYWxseSA9IGVtaXRMYWJlbChuZXdMYWJlbCgp
LmdldCgpKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSBzdGF0
ZSBvZiB0aGUgd29ybGQuCiAgICAgICAgICAgICBpZiAoZmxpcFNjb3BlcykgewogICAgICAgICAg
ICAgICAgIG1fc2NvcGVDb250ZXh0U3RhY2sgPSBzYXZlZFNjb3BlQ29udGV4dFN0YWNrOwpAQCAt
MjE5Niw3ICsyMjI3LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BT
Y29wZXMoQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwgQ29udHIKICAgICAgICAgICAgICAg
ICBtX2xhYmVsU2NvcGVzID0gc2F2ZWRMYWJlbFNjb3BlczsKICAgICAgICAgICAgIG1fZmluYWxs
eURlcHRoID0gc2F2ZWRGaW5hbGx5RGVwdGg7CiAgICAgICAgICAgICBtX2xvY2FsU2NvcGVEZXB0
aCA9IHNhdmVkRHluYW1pY1Njb3BlRGVwdGg7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
LS10b3BTY29wZTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyNTQsMjkgKzIyODUsMjkgQEAgVHJ5
RGF0YSogQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hUcnkoTGFiZWwqIHN0YXJ0KQogICAgIHRyeURh
dGEudGFyZ2V0U2NvcGVEZXB0aCA9IFVJTlRfTUFYOwogICAgIG1fdHJ5RGF0YS5hcHBlbmQodHJ5
RGF0YSk7CiAgICAgVHJ5RGF0YSogcmVzdWx0ID0gJm1fdHJ5RGF0YS5sYXN0KCk7Ci0gICAgCisK
ICAgICBUcnlDb250ZXh0IHRyeUNvbnRleHQ7CiAgICAgdHJ5Q29udGV4dC5zdGFydCA9IHN0YXJ0
OwogICAgIHRyeUNvbnRleHQudHJ5RGF0YSA9IHJlc3VsdDsKLSAgICAKKwogICAgIG1fdHJ5Q29u
dGV4dFN0YWNrLmFwcGVuZCh0cnlDb250ZXh0KTsKLSAgICAKKwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BUcnlBbmRFbWl0Q2F0Y2go
VHJ5RGF0YSogdHJ5RGF0YSwgUmVnaXN0ZXJJRCogdGFyZ2V0UmVnaXN0ZXIsIExhYmVsKiBlbmQp
CiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7Ci0gICAgCisKICAgICBBU1NFUlRfVU5V
U0VEKHRyeURhdGEsIG1fdHJ5Q29udGV4dFN0YWNrLmxhc3QoKS50cnlEYXRhID09IHRyeURhdGEp
OwotICAgIAorCiAgICAgVHJ5UmFuZ2UgdHJ5UmFuZ2U7CiAgICAgdHJ5UmFuZ2Uuc3RhcnQgPSBt
X3RyeUNvbnRleHRTdGFjay5sYXN0KCkuc3RhcnQ7CiAgICAgdHJ5UmFuZ2UuZW5kID0gZW5kOwog
ICAgIHRyeVJhbmdlLnRyeURhdGEgPSBtX3RyeUNvbnRleHRTdGFjay5sYXN0KCkudHJ5RGF0YTsK
ICAgICBtX3RyeVJhbmdlcy5hcHBlbmQodHJ5UmFuZ2UpOwogICAgIG1fdHJ5Q29udGV4dFN0YWNr
LnJlbW92ZUxhc3QoKTsKLSAgICAKKwogICAgIGVtaXRMYWJlbCh0cnlSYW5nZS50cnlEYXRhLT50
YXJnZXQuZ2V0KCkpOwogICAgIHRyeVJhbmdlLnRyeURhdGEtPnRhcmdldFNjb3BlRGVwdGggPSBt
X2xvY2FsU2NvcGVEZXB0aDsKIApAQCAtMjMzMyw3ICsyMzY0LDcgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6YmVnaW5Td2l0Y2goUmVnaXN0ZXJJRCogc2NydXRpbmVlUmVnaXN0ZXIsIFN3aXRj
aEluZm86OlMKICAgICB9CiAKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7IC8vIHBsYWNl
IGhvbGRlciBmb3IgdGFibGUgaW5kZXgKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7IC8v
IHBsYWNlIGhvbGRlciBmb3IgZGVmYXVsdCB0YXJnZXQgICAgCisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOyAvLyBwbGFjZSBob2xkZXIgZm9yIGRlZmF1bHQgdGFyZ2V0CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHNjcnV0aW5lZVJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBtX3N3aXRj
aENvbnRleHRTdGFjay5hcHBlbmQoaW5mbyk7CiB9CkBAIC0yMzU2LDcgKzIzODcsNyBAQCBzdGF0
aWMgaW50MzJfdCBrZXlGb3JDaGFyYWN0ZXJTd2l0Y2goRXhwcmVzc2lvbk5vZGUqIG5vZGUsIGlu
dDMyX3QgbWluLCBpbnQzMl90CiAgICAgQVNTRVJUKG5vZGUtPmlzU3RyaW5nKCkpOwogICAgIFN0
cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2RlKS0+dmFsdWUo
KS5pbXBsKCk7CiAgICAgQVNTRVJUKGNsYXVzZS0+bGVuZ3RoKCkgPT0gMSk7Ci0gICAgCisKICAg
ICBpbnQzMl90IGtleSA9ICgqY2xhdXNlKVswXTsKICAgICBBU1NFUlQoa2V5ID49IG1pbik7CiAg
ICAgQVNTRVJUKGtleSA8PSBtYXgpOwpAQCAtMjM3MiwyMCArMjQwMywyMCBAQCBzdGF0aWMgdm9p
ZCBwcmVwYXJlSnVtcFRhYmxlRm9yU3dpdGNoKAogICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRz
LnJlc2l6ZShtYXggLSBtaW4gKyAxKTsKICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxs
KDApOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjbGF1c2VDb3VudDsgKytpKSB7Ci0g
ICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hv
dWxkIGhhdmUgYmVlbiBmaXhlZCwgc28gCisgICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMg
YWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28KICAgICAg
ICAgLy8gdGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3YXJkIiByZWZlcmVuY2VzCiAgICAg
ICAgIEFTU0VSVCghbGFiZWxzW2ldLT5pc0ZvcndhcmQoKSk7Ci0gICAgICAgIGp1bXBUYWJsZS5h
ZGQoa2V5R2V0dGVyKG5vZGVzW2ldLCBtaW4sIG1heCksIGxhYmVsc1tpXS0+YmluZChzd2l0Y2hB
ZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOyAKKyAgICAgICAganVtcFRhYmxlLmFkZChrZXlH
ZXR0ZXIobm9kZXNbaV0sIG1pbiwgbWF4KSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3Ms
IHN3aXRjaEFkZHJlc3MgKyAzKSk7CiAgICAgfQogfQogCiBzdGF0aWMgdm9pZCBwcmVwYXJlSnVt
cFRhYmxlRm9yU3RyaW5nU3dpdGNoKFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBqdW1wVGFibGUs
IGludDMyX3Qgc3dpdGNoQWRkcmVzcywgdWludDMyX3QgY2xhdXNlQ291bnQsIFJlZlB0cjxMYWJl
bD4qIGxhYmVscywgRXhwcmVzc2lvbk5vZGUqKiBub2RlcykKIHsKICAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgY2xhdXNlQ291bnQ7ICsraSkgewotICAgICAgICAvLyBXZSdyZSBlbWl0dGlu
ZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNv
IAorICAgICAgICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxz
IHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNvCiAgICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxk
IG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNlcwogICAgICAgICBBU1NFUlQoIWxhYmVsc1tpXS0+
aXNGb3J3YXJkKCkpOwotICAgICAgICAKKwogICAgICAgICBBU1NFUlQobm9kZXNbaV0tPmlzU3Ry
aW5nKCkpOwogICAgICAgICBTdHJpbmdJbXBsKiBjbGF1c2UgPSBzdGF0aWNfY2FzdDxTdHJpbmdO
b2RlKj4obm9kZXNbaV0pLT52YWx1ZSgpLmltcGwoKTsKICAgICAgICAganVtcFRhYmxlLm9mZnNl
dFRhYmxlLmFkZChjbGF1c2UsIGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hB
ZGRyZXNzICsgMykpOwpAQCAtMjM5Niw3ICsyNDI3LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiBsYWJlbHMs
IEUKIHsKICAgICBTd2l0Y2hJbmZvIHN3aXRjaEluZm8gPSBtX3N3aXRjaENvbnRleHRTdGFjay5s
YXN0KCk7CiAgICAgbV9zd2l0Y2hDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIAorCiAg
ICAgc3dpdGNoIChzd2l0Y2hJbmZvLnN3aXRjaFR5cGUpIHsKICAgICBjYXNlIFN3aXRjaEluZm86
OlN3aXRjaEltbWVkaWF0ZToKICAgICBjYXNlIFN3aXRjaEluZm86OlN3aXRjaENoYXJhY3Rlcjog
ewpAQCAtMjQwOCwxMCArMjQzOSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbmRTd2l0
Y2godWludDMyX3QgY2xhdXNlQ291bnQsIFJlZlB0cjxMYWJlbD4qIGxhYmVscywgRQogICAgICAg
ICAgICAganVtcFRhYmxlLCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBjbGF1c2VDb3VudCwg
bGFiZWxzLCBub2RlcywgbWluLCBtYXgsCiAgICAgICAgICAgICBzd2l0Y2hJbmZvLnN3aXRjaFR5
cGUgPT0gU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlCiAgICAgICAgICAgICAgICAgPyBrZXlG
b3JJbW1lZGlhdGVTd2l0Y2gKLSAgICAgICAgICAgICAgICA6IGtleUZvckNoYXJhY3RlclN3aXRj
aCk7IAorICAgICAgICAgICAgICAgIDoga2V5Rm9yQ2hhcmFjdGVyU3dpdGNoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgICAgICAKKwogICAgIGNhc2UgU3dpdGNoSW5mbzo6U3dpdGNoU3Ry
aW5nOiB7CiAgICAgICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQg
KyAxXSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoKTsKICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDJdID0gZGVm
YXVsdExhYmVsLT5iaW5kKHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRjaEluZm8uYnl0
ZWNvZGVPZmZzZXQgKyAzKTsKQEAgLTI0MjAsNyArMjQ1MSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVuZFN3aXRjaCh1aW50MzJfdCBjbGF1c2VDb3VudCwgUmVmUHRyPExhYmVsPiogbGFi
ZWxzLCBFCiAgICAgICAgIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goanVtcFRhYmxl
LCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBjbGF1c2VDb3VudCwgbGFiZWxzLCBub2Rlcyk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCisKICAgICBkZWZhdWx0OgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTI0NTgs
NyArMjQ4OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlv
bklmTmVlZGVkKCkKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShh
ZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyKG1fdm0sIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZh
bHNlKTsKIH0KLSAgICAKKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9u
KFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5v
ZGUsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqKT4mIGNhbGxCYWNrKQogewogICAgIGlmIChzdWJqZWN0Tm9kZS0+aXNSZXNvbHZlTm9kZSgp
CkBAIC0yNDY4LDcgKzI0OTksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVy
YXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogCiAgICAgICAg
IExhYmVsU2NvcGVQdHIgc2NvcGUgPSBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwog
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBlbWl0TG9hZChuZXdUZW1wb3Jhcnko
KSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIAorCiAgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9v
cENvbmRpdGlvbiA9IG5ld0xhYmVsKCk7CiAgICAgICAgIFJlZlB0cjxMYWJlbD4gbG9vcFN0YXJ0
ID0gbmV3TGFiZWwoKTsKICAgICAgICAgZW1pdEp1bXAobG9vcENvbmRpdGlvbi5nZXQoKSk7CkBA
IC0yNDc2LDcgKzI1MDcsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRp
b24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgICAgICBlbWl0
TG9vcEhpbnQoKTsKICAgICAgICAgZW1pdEdldEFyZ3VtZW50QnlWYWwodmFsdWUuZ2V0KCksIHVu
Y2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCksIGluZGV4LmdldCgpKTsKICAgICAgICAgY2Fs
bEJhY2soKnRoaXMsIHZhbHVlLmdldCgpKTsKLSAgICAKKwogICAgICAgICBlbWl0TGFiZWwoc2Nv
cGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgICAgICBlbWl0SW5jKGluZGV4LmdldCgpKTsKICAg
ICAgICAgZW1pdExhYmVsKGxvb3BDb25kaXRpb24uZ2V0KCkpOwpAQCAtMjQ5OCw5ICsyNTI5LDkg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW8KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaXRlcmF0
b3JOZXh0ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9w
ZXJ0eU5hbWVzKCkuaXRlcmF0b3JOZXh0UHJpdmF0ZU5hbWUpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB2YWx1ZSA9IG5ld1RlbXBvcmFyeSgpOwogICAgIGVtaXRMb2FkKHZhbHVlLmdldCgpLCBq
c1VuZGVmaW5lZCgpKTsKLSAgICAKKwogICAgIGVtaXRKdW1wKHNjb3BlLT5jb250aW51ZVRhcmdl
dCgpKTsKLSAgICAKKwogICAgIFJlZlB0cjxMYWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsK
ICAgICBlbWl0TGFiZWwobG9vcFN0YXJ0LmdldCgpKTsKICAgICBlbWl0TG9vcEhpbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCA1ZTVlZDYxLi5kYmRlMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0xMzksNyAr
MTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGdldCgpIHsgcmV0
dXJuIG1fbG9jYWw7IH0KIAogICAgICAgICBib29sIGlzUmVhZE9ubHkoKSB7IHJldHVybiBtX2F0
dHJpYnV0ZXMgJiBSZWFkT25seTsgfQotICAgICAgICAKKwogICAgICAgICBib29sIGlzQ2FwdHVy
ZWQoKSB7IHJldHVybiBtX2lzQ2FwdHVyZWQ7IH0KICAgICAgICAgQ2FwdHVyZU1vZGUgY2FwdHVy
ZU1vZGUoKSB7IHJldHVybiBpc0NhcHR1cmVkKCkgPyBJc0NhcHR1cmVkIDogTm90Q2FwdHVyZWQ7
IH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBCeXRlY29k
ZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgRGVidWdn
ZXJNb2RlLCBQcm9maWxlck1vZGUpOwogCiAgICAgICAgIH5CeXRlY29kZUdlbmVyYXRvcigpOwot
ICAgICAgICAKKwogICAgICAgICBWTSogdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CiAgICAg
ICAgIGNvbnN0IENvbW1vbklkZW50aWZpZXJzJiBwcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1
cm4gKm1fdm0tPnByb3BlcnR5TmFtZXM7IH0KIApAQCAtMTgzLDcgKzE4Myw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNDYXB0dXJlZChpbnQgb3BlcmFuZCk7CiAgICAgICAg
IENhcHR1cmVNb2RlIGNhcHR1cmVNb2RlKGludCBvcGVyYW5kKSB7IHJldHVybiBpc0NhcHR1cmVk
KG9wZXJhbmQpID8gSXNDYXB0dXJlZCA6IE5vdENhcHR1cmVkOyB9Ci0gICAgICAgIAorCiAgICAg
ICAgIExvY2FsIGxvY2FsKGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgTG9jYWwgY29uc3RM
b2NhbChjb25zdCBJZGVudGlmaWVyJik7CiAKQEAgLTI4NSw3ICsyODUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZW1pdEV4cHJlc3Npb25JbmZvKGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgeyAgICAgICAgICAgIAor
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZGl2b3Qub2Zmc2V0ID49IGRpdm90U3RhcnQu
b2Zmc2V0KTsKICAgICAgICAgICAgIEFTU0VSVChkaXZvdEVuZC5vZmZzZXQgPj0gZGl2b3Qub2Zm
c2V0KTsKIApAQCAtMzMyLDYgKzMzMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIGVtaXROb2RlKG4pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBlbWl0UHJvZmls
ZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiBkc3QsIGJvb2wpOworCiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJik7CkBA
IC0zNzksMTQgKzM4MSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlJbmRleChSZWdp
c3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAg
ICB2b2lkIGVtaXRQdXRHZXR0ZXJTZXR0ZXIoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIGdldHRlciwgUmVnaXN0ZXJJRCogc2V0dGVyKTsK
LSAgICAgICAgCisKICAgICAgICAgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uRm9y
SWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRD
YWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiwg
Q2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsRXZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICAgICAgdm9pZCBlbWl0RW51bWVy
YXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjayk7Ci0gICAgICAgIAorCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEVuZChSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRVbmFyeU5vRHN0T3Aob3Bf
ZW5kLCBzcmMpOyB9CiAKQEAgLTQxOSw3ICs0MjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogcG9wVHJ5QW5kRW1pdENhdGNoKFRyeURhdGEqLCBSZWdpc3RlcklEKiB0
YXJnZXRSZWdpc3RlciwgTGFiZWwqIGVuZCk7CiAKICAgICAgICAgdm9pZCBlbWl0VGhyb3coUmVn
aXN0ZXJJRCogZXhjKQotICAgICAgICB7IAorICAgICAgICB7CiAgICAgICAgICAgICBtX3VzZXNF
eGNlcHRpb25zID0gdHJ1ZTsKICAgICAgICAgICAgIGVtaXRVbmFyeU5vRHN0T3Aob3BfdGhyb3cs
IGV4Yyk7CiAgICAgICAgIH0KQEAgLTQ2MSwxNCArNDYzLDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxk
RW1pdFByb2ZpbGVIb29rczsgfQogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkg
eyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQotICAgICAgICAKKwogICAgICAgICBi
b29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKTsgfQotICAgICAgICAKKwogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQotICAgICAgICAKKwogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKLSAgICAgICAgCisKICAgICAgICAgdm9p
ZCBlbWl0T3Bjb2RlKE9wY29kZUlEKTsKICAgICAgICAgVW5saW5rZWRBcnJheUFsbG9jYXRpb25Q
cm9maWxlIG5ld0FycmF5QWxsb2NhdGlvblByb2ZpbGUoKTsKICAgICAgICAgVW5saW5rZWRPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZSBuZXdPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOwpAQCAtNDkw
LDEyICs0OTIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PGRvdWJsZSwgSlNWYWx1ZT4gTnVtYmVyTWFwOwogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJlcEhhc2g+IElkZW50aWZpZXJTdHJpbmdN
YXA7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIEhlbHBlciBmb3IgZW1pdENhbGwoKSBhbmQgZW1p
dENvbnN0cnVjdCgpLiBUaGlzIHdvcmtzIGJlY2F1c2UgdGhlIHNldCBvZgogICAgICAgICAvLyBl
eHBlY3RlZCBmdW5jdGlvbnMgaGF2ZSBpZGVudGljYWwgYmVoYXZpb3IgZm9yIGJvdGggY2FsbCBh
bmQgY29uc3RydWN0CiAgICAgICAgIC8vIChpLmUuICJPYmplY3QoKSIgaXMgaWRlbnRpY2FsIHRv
ICJuZXcgT2JqZWN0KCkiKS4KICAgICAgICAgRXhwZWN0ZWRGdW5jdGlvbiBlbWl0RXhwZWN0ZWRG
dW5jdGlvblNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3Rl
ZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgTGFiZWwqIGRvbmUpOwotICAgICAgICAKKwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBuZXdS
ZWdpc3RlcigpOwpAQCAtNTExLDcgKzUxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IC8vIERpdHRvLiBSZXR1cm5zIHRydWUgaWYgYSBuZXcgUmVnaXN0ZXJJRCB3YXMgYWRkZWQsIGZh
bHNlIGlmIGEgcHJlLWV4aXN0aW5nIFJlZ2lzdGVySUQgd2FzIHJlLXVzZWQuCiAgICAgICAgIGJv
b2wgYWRkVmFyKGNvbnN0IElkZW50aWZpZXImLCBDb25zdGFudE1vZGUsIFdhdGNoTW9kZSwgUmVn
aXN0ZXJJRComKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gQWRkcyBhbiBhbm9ueW1vdXMgdmFy
IHNsb3QuIFRvIGdpdmUgdGhpcyBzbG90IGEgbmFtZSwgYWRkIGl0IHRvIHN5bWJvbFRhYmxlKCku
CiAgICAgICAgIFJlZ2lzdGVySUQqIGFkZFZhcigpCiAgICAgICAgIHsKQEAgLTU0NCwxNyArNTQ2
LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBhZGRSZWdFeHAoUmVnRXhw
Kik7CiAKICAgICAgICAgdW5zaWduZWQgYWRkQ29uc3RhbnRCdWZmZXIodW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICAgICAgCisKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VG
dW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9k
ZS0+c291cmNlKCksIGJvZHksIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgICAgICB9CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEluaXRMYXp5UmVnaXN0ZXIoUmVnaXN0ZXJJRCopOwotICAgICAgICAK
KwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCog
Zmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQq
IHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhPcGNvZGVJRCwgUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJl
Z2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMy
X3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7Ci0gICAgICAgIAorCiAgICAgcHVi
bGljOgogICAgICAgICBKU1N0cmluZyogYWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmll
ciYpOwogCkBAIC01OTcsNyArNTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
Y3JlYXRlQXJndW1lbnRzSWZOZWNlc3NhcnkoKTsKICAgICAgICAgdm9pZCBjcmVhdGVBY3RpdmF0
aW9uSWZOZWNlc3NhcnkoKTsKICAgICAgICAgUmVnaXN0ZXJJRCogY3JlYXRlTGF6eVJlZ2lzdGVy
SWZOZWNlc3NhcnkoUmVnaXN0ZXJJRCopOwotICAgICAgICAKKwogICAgICAgICB1bnNpZ25lZCB3
YXRjaGFibGVWYXJpYWJsZShpbnQgb3BlcmFuZCkKICAgICAgICAgewogICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIHJlZyhvcGVyYW5kKTsKQEAgLTYxMCwxMiArNjEyLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgICAgIHJl
dHVybiBhZGRDb25zdGFudChpZGVudCk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
Ym9vbCBoYXNXYXRjaGFibGVWYXJpYWJsZShpbnQgb3BlcmFuZCkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIHdhdGNoYWJsZVZhcmlhYmxlKG9wZXJhbmQpICE9IFVJTlRfTUFYOwogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9pbnN0cnVjdGlvbnM7CiAKICAgICAgICAgYm9vbCBt
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzOwpAQCAtNjUxLDcgKzY1Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBWZWN0b3I8Rm9ySW5Db250ZXh0PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAg
ICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8UmVmUHRyPFJlZ2lzdGVySUQ+LCBjb25zdCBEZWNvbnN0cnVjdGlvblBhdHRl
cm5Ob2RlKj4+IG1fZGVjb25zdHJ1Y3RlZFBhcmFtZXRlcnM7Ci0gICAgICAgIAorCiAgICAgICAg
IFZlY3RvcjxUcnlSYW5nZT4gbV90cnlSYW5nZXM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxU
cnlEYXRhLCA4PiBtX3RyeURhdGE7CiAKQEAgLTY2Niw3ICs2NjgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCBpbnQsIEZ1bmN0aW9uQm9keU5vZGUqLCBXVEY6
OkludEhhc2g8dW5zaWduZWQgaW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZCBpbnQ+PiBtX2xhenlGdW5jdGlvbnM7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1h
cDxGdW5jdGlvbkJvZHlOb2RlKiwgdW5zaWduZWQ+IEZ1bmN0aW9uT2Zmc2V0TWFwOwogICAgICAg
ICBGdW5jdGlvbk9mZnNldE1hcCBtX2Z1bmN0aW9uT2Zmc2V0czsKLSAgICAgICAgCisKICAgICAg
ICAgLy8gQ29uc3RhbnQgcG9vbAogICAgICAgICBJZGVudGlmaWVyTWFwIG1faWRlbnRpZmllck1h
cDsKICAgICAgICAgSlNWYWx1ZU1hcCBtX2pzVmFsdWVNYXA7CkBAIC02NzcsNiArNjc5LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVk0qIG1fdm07CiAKKyAgICAgICAgYm9vbCBpc0dl
bmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkgeyByZXR1cm4gdm0oKS0+aXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKTsgfQorCiAgICAgICAgIE9wY29kZUlEIG1fbGFz
dE9wY29kZUlEOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgc2l6ZV90IG1fbGFzdE9wY29kZVBv
c2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDA1MGY3ZWEuLjNhZmI2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTY2LDE0ICs2
NiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgeCA9IDEKIAogICAgIGJlY29tZXMKLSAg
ICAKKwogICAgICAgICBsb2FkIHJbeF0sIDEKLSAgICAKLSAgICBpbnN0ZWFkIG9mIAorCisgICAg
aW5zdGVhZCBvZgogCiAgICAgICAgIGxvYWQgcjAsIDEKICAgICAgICAgbW92IHJbeF0sIHIwCi0g
ICAgCisKICAgICBiZWNhdXNlIHRoZSBhc3NpZ25tZW50IG5vZGUsICJ4ID0iLCBwYXNzZXMgclt4
XSBhcyBkc3QgdG8gdGhlIG51bWJlciBub2RlLCAiMSIuCiAqLwogCkBAIC0xNTQsNyArMTU0LDcg
QEAgUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGxvY2FsLmdl
dCgpKTsKICAgICB9Ci0gICAgCisKICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdCA9IG1fc3RhcnQg
KyBtX2lkZW50Lmxlbmd0aCgpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QsIG1fc3RhcnQsIGRpdm90KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIG1f
aWRlbnQpOwpAQCAtMTk0LDcgKzE5NCw3IEBAIFJlZ2lzdGVySUQqIEFycmF5Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAg
fQogCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwg
YXJyYXkuZ2V0KCkpOwotICAgIAorCiBoYW5kbGVTcHJlYWQ6CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
anNOdW1iZXIobGVuZ3RoKSk7CiAgICAgYXV0byBzcHJlYWRlciA9IFt0aGlzLCBhcnJheSwgaW5k
ZXhdKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKQpAQCAt
MjEzLDcgKzIxMyw3IEBAIGhhbmRsZVNwcmVhZDoKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SW5jKGluZGV4LmdldCgpKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGlmIChtX2Vs
aXNpb24pIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcF9hZGQsIGluZGV4Lmdl
dCgpLCBpbmRleC5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzTnVtYmVyKG1fZWxpc2lv
bikpLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSwgUmVzdWx0
VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5
SWQoYXJyYXkuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBpbmRleC5n
ZXQoKSk7CkBAIC0yNjgsOSArMjY4LDkgQEAgUmVnaXN0ZXJJRCogT2JqZWN0TGl0ZXJhbE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIFJlZ2lz
dGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5l
d09iaiA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKLSAgICAKKwogICAgIGdlbmVy
YXRvci5lbWl0TmV3T2JqZWN0KG5ld09iai5nZXQoKSk7Ci0gICAgCisKICAgICAvLyBGYXN0IGNh
c2U6IHRoaXMgbG9vcCBqdXN0IGhhbmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgogICAg
IFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlzOwogICAgIGZvciAoOyBwICYmIHAtPm1fbm9kZS0+
bV90eXBlID09IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQ7IHAgPSBwLT5tX25leHQpIHsKQEAgLTMx
NCw3ICszMTQsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0RGlyZWN0UHV0QnlWYWwobmV3T2JqLmdldCgpLCBwcm9wZXJ0eU5hbWUuZ2V0
KCksIGdlbmVyYXRvci5lbWl0Tm9kZShwLT5tX25vZGUtPm1fYXNzaWduKSk7CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAg
ICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZS0+bV9hc3NpZ24p
OwogCiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgZ2V0L3NldCBwcm9wZXJ0eSwgZmluZCBpdHMg
ZW50cnkgaW4gdGhlIG1hcC4KQEAgLTMyNiw3ICszMjYsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZQogICAgICAgICAgICAgLy8gV2FzIHRoaXMgYWxyZWFkeSBnZW5lcmF0ZWQgYXMgYSBwYXJ0
IG9mIGl0cyBwYXJ0bmVyPwogICAgICAgICAgICAgaWYgKHBhaXIuc2Vjb25kID09IG5vZGUpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgCisKICAgICAgICAgICAgIC8vIEdlbmVyYXRl
IHRoZSBwYWlyZWQgbm9kZSBub3cuCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0
dGVyUmVnOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldHRlclJlZzsKQEAgLTM2
Myw3ICszNjMsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogCiBSZWdpc3RlcklEKiBCcmFj
a2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlmIChtX2Jhc2UtPmlzUmVzb2x2ZU5vZGUoKSAK
KyAgICBpZiAobV9iYXNlLT5pc1Jlc29sdmVOb2RlKCkKICAgICAgICAgJiYgZ2VuZXJhdG9yLndp
bGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihtX2Jhc2UpLT5p
ZGVudGlmaWVyKCkpCiAgICAgICAgICYmICFnZW5lcmF0b3Iuc3ltYm9sVGFibGUoKS5zbG93QXJn
dW1lbnRzKCkpIHsKICAgICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9zdWJzY3JpcHQpOwpAQCAtNDM4LDcgKzQzOCw3IEBAIENhbGxBcmd1bWVudHM6OkNh
bGxBcmd1bWVudHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgQXJndW1lbnRzTm9kZSog
YXJndW1lCiAgICAgICAgIG1fYXJndltpXSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaSkgPT0gbV9hcmd2LnNpemUoKSAtIDEg
fHwgbV9hcmd2W2ldLT5pbmRleCgpID09IG1fYXJndltpICsgMV0tPmluZGV4KCkgLSAxKTsKICAg
ICB9Ci0gICAgCisKICAgICB3aGlsZSAoc3RhY2tPZmZzZXQoKSAlIHN0YWNrQWxpZ25tZW50UmVn
aXN0ZXJzKCkpIHsKICAgICAgICAgbV9hcmd2Lmluc2VydCgwLCBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCkpOwogICAgICAgICBtX3BhZGRpbmcrKzsKQEAgLTYzNiw3ICs2MzYsNyBAQCBSZWdpc3Rl
cklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLAogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRl
eCA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGpzTnVtYmVy
KDApKTsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0g
Z2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwganNVbmRlZmluZWQo
KSk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3VtZW50c1JlZ2lzdGVy
ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwganNVbmRlZmlu
ZWQoKSk7Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBhdXRvIGV4dHJhY3Rv
ciA9IFsmdGhpc1JlZ2lzdGVyLCAmYXJndW1lbnRzUmVnaXN0ZXIsICZpbmRleF0oQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogdmFsdWUpCiAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IGhhdmVUaGlzID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CkBAIC03NDAsMTMgKzc0MCwxNSBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9k
ZTo6ZW1pdFJlc29sdmUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZAogICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGxvY2FsUmVn
ID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9j
YWxSZWcpOwotICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkgeworICAgICAg
ICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNHZW5lcmF0aW5n
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGVtcERzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAg
ICAgICBBU1NFUlQoZHN0ICE9IGxvY2FsUmVnKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0ZW1wRHN0U3JjID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRUb051bWJlcih0ZW1wRHN0LmdldCgpLCBsb2NhbFJlZyk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdE1vdmUodGVtcERzdFNyYy5nZXQoKSwgbG9jYWxSZWcpOwogICAg
ICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdGVtcERzdFNyYy5nZXQoKSwgbV9vcGVy
YXRvcik7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxpbmcoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdE1vdmUobG9jYWxSZWcsIHRlbXBEc3RTcmMuZ2V0KCkpOwogICAgICAgICAg
ICAgcmV0dXJuIHRlbXBEc3QuZ2V0KCk7CiAgICAgICAgIH0KQEAgLTkxNSwxMCArOTE3LDEyIEBA
IFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgICAgIGlmIChsb2NhbC5pc1JlYWRPbmx5KCkp
IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgp
OwogICAgICAgICAgICAgbG9jYWxSZWcgPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBsb2NhbFJlZyk7Ci0gICAgICAgIH0gZWxzZSBpZiAobG9jYWwu
aXNDYXB0dXJlZCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobG9jYWwuaXNDYXB0dXJlZCgpIHx8
IGdlbmVyYXRvci5pc0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpIHsKICAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBEc3QuZ2V0
KCksIGxvY2FsUmVnKTsKICAgICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHRlbXBE
c3QuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0dlbmVy
YXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsUmVnLCB0ZW1wRHN0LmdldCgp
KTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRl
ZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CkBAIC05OTcsMTQgKzEwMDEsMTQgQEAg
UmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKgogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQml0d2lzZU5vdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LSAKKwogUmVnaXN0ZXJJRCogQml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNyYzIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBqc051bWJlcigtMSkpOwogICAgIFJlZ2lzdGVySUQqIHNyYzEgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9leHByKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcF9iaXR4b3Is
IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMSksIHNyYzEsIHNyYzIuZ2V0KCks
IE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERlc2NyaXB0b3IoKSwgUmVzdWx0VHlwZTo6bnVt
YmVyVHlwZUlzSW50MzIoKSkpOwogfQotIAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gTG9naWNhbE5vdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogdm9pZCBMb2dpY2FsTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFs
c2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpCkBAIC0xMDM4LDcgKzEw
NDIsNyBAQCB2b2lkIExvZ2ljYWxOb3ROb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRl
eHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcgogLy8gVGhlIG1ldGhvZCBzaG91bGQgYmUg
Y2FsbGVkIG9uIHRoZSBub2RlIGF0IHRoZSByb290IG9mIHRoZSB0cmVlIG9mIHJlZ3VsYXIgYmlu
YXJ5IGFkZAogLy8gb3BlcmF0aW9ucyAobWFya2VkIGluIHRoZSBkaWFncmFtIHdpdGggYSBkb3Vi
bGUgc2V0IG9mIHBhcmVudGhlc2VzKS4gIFRoaXMgbm9kZSBtdXN0CiAvLyBiZSBwZXJmb3JtaW5n
IGEgc3RyaW5nIGNvbmNhdGVuYXRpb24gKGRldGVybWluZWQgYnkgc3RhdGljYWxseSBkZXRlY3Rp
bmcgdGhhdCBhdCBsZWFzdAotLy8gb25lIGNoaWxkIG11c3QgYmUgYSBzdHJpbmcpLiAgCisvLyBv
bmUgY2hpbGQgbXVzdCBiZSBhIHN0cmluZykuCiAvLwogLy8gU2luY2UgdGhlIG1pbmltdW0gbnVt
YmVyIG9mIHZhbHVlcyBiZWluZyBjb25jYXRlbmF0ZWQgdG9nZXRoZXIgaXMgZXhwZWN0ZWQgdG8g
YmUgMywgaWYKIC8vIGEgbGhzIHRvIGEgY29uY2F0ZW5hdGluZyBhc3NpZ25tZW50IGlzIG5vdCBw
cm92aWRlZCB0aGVuIHRoZSAgcm9vdCBhZGQgc2hvdWxkIGhhdmUgYXQKQEAgLTEyOTksNyArMTMw
Myw3IEBAIFJlZ2lzdGVySUQqIExvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHRlbXAgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgUmVmUHRyPExhYmVs
PiB0YXJnZXQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAKKwogICAgIGdlbmVyYXRvci5l
bWl0Tm9kZSh0ZW1wLmdldCgpLCBtX2V4cHIxKTsKICAgICBpZiAobV9vcGVyYXRvciA9PSBPcExv
Z2ljYWxBbmQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UodGVtcC5nZXQoKSwg
dGFyZ2V0LmdldCgpKTsKQEAgLTEzMTYsNyArMTMyMCw3IEBAIHZvaWQgTG9naWNhbE9wTm9kZTo6
ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsCiAgICAgUmVmUHRyPExhYmVsPiBhZnRlckV4cHIxID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAgICAgaWYgKG1fb3BlcmF0b3IgPT0gT3BMb2dpY2FsQW5kKQogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByMSwgYWZ0ZXJFeHByMS5nZXQoKSwgZmFs
c2VUYXJnZXQsIEZhbGxUaHJvdWdoTWVhbnNUcnVlKTsKLSAgICBlbHNlIAorICAgIGVsc2UKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fZXhwcjEsIHRydWVU
YXJnZXQsIGFmdGVyRXhwcjEuZ2V0KCksIEZhbGxUaHJvdWdoTWVhbnNGYWxzZSk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChhZnRlckV4cHIxLmdldCgpKTsKIApAQCAtMTQwNywyNiArMTQxMSwy
OSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0UmVhZE1vZGlmeUFzc2ln
bm1lbnQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbgogCiBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiB7CisgICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0
KCkgKyBtX2lkZW50Lmxlbmd0aCgpOwogICAgIGlmIChMb2NhbCBsb2NhbCA9IGdlbmVyYXRvci5s
b2NhbChtX2lkZW50KSkgewogICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKICAgICAg
ICAgICAgIHJldHVybiBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBsb2NhbC5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRv
ciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3Vs
dERlc2NyaXB0b3IoKSkpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChsb2Nh
bC5pc0NhcHR1cmVkKCkKKyAgICAgICAgICAgIHx8IGdlbmVyYXRvci5pc0dlbmVyYXRpbmdIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkKICAgICAgICAgICAgIHx8IGdlbmVyYXRvci5sZWZ0SGFu
ZFNpZGVOZWVkc0NvcHkobV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2Vu
ZXJhdG9yKSkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUocmVz
dWx0LmdldCgpLCBsb2NhbC5nZXQoKSk7CiAgICAgICAgICAgICBlbWl0UmVhZE1vZGlmeUFzc2ln
bm1lbnQoZ2VuZXJhdG9yLCByZXN1bHQuZ2V0KCksIHJlc3VsdC5nZXQoKSwgbV9yaWdodCwgbV9v
cGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQt
PnJlc3VsdERlc2NyaXB0b3IoKSkpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0dlbmVy
YXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUobG9jYWwuZ2V0KCksIHJlc3VsdC5nZXQo
KSk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVk
ZWQoZHN0LCByZXN1bHQuZ2V0KCkpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFJl
Z2lzdGVySUQqIHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGxv
Y2FsLmdldCgpLCBsb2NhbC5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVz
KFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkp
OwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0
LCByZXN1bHQpOwogICAgIH0KIAotICAgIEpTVGV4dFBvc2l0aW9uIG5ld0Rpdm90ID0gZGl2b3RT
dGFydCgpICsgbV9pZGVudC5sZW5ndGgoKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIG1faWRlbnQpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0
KCksIG1faWRlbnQsIFRocm93SWZOb3RGb3VuZCk7CkBAIC0xNDQzLDkgKzE0NTAsMTEgQEAgUmVn
aXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlF
eGNlcHRpb25JZk5lZWRlZCgpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fcmlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVk
KCkpIHsKKyAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNHZW5l
cmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKSB7CiAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wRHN0LmdldCgpLCBtX3JpZ2h0KTsKKyAg
ICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGluZygpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0TW92ZShsb2NhbC5nZXQoKSwgdGVtcERzdC5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4g
Z2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCB0ZW1wRHN0LmdldCgpKTsK
ICAgICAgICAgfQpAQCAtMTU0OCwxMiArMTU1NywxMyBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xO
b2RlOjplbWl0Q29kZVNpbmdsZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogICAgICAg
ICBpZiAoIW1faW5pdCkKICAgICAgICAgICAgIHJldHVybiBsb2NhbC5nZXQoKTsKIAotICAgICAg
ICBpZiAobG9jYWwuaXNDYXB0dXJlZCgpKSB7CisgICAgICAgIC8vVE9ETzogbWF5YmUgcHV0IGVt
aXRFeHByZXNzaW9uSW5mbyBoZXJlCisgICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkgfHwg
Z2VuZXJhdG9yLmlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSkgewogICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGVtcERzdC5nZXQoKSwgbV9p
bml0KTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE1vdmUobG9jYWwuZ2V0KCks
IHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdE5vZGUobG9jYWwuZ2V0KCksIG1faW5pdCk7CiAgICAgfQogCkBAIC0xNjk2
LDcgKzE3MDYsNyBAQCBib29sIElmRWxzZU5vZGU6OnRyeUZvbGRCcmVha0FuZENvbnRpbnVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFN0YXRlbWVudAogdm9pZCBJZkVsc2VOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgIAorCiAg
ICAgUmVmUHRyPExhYmVsPiBiZWZvcmVUaGVuID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAg
UmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgUmVm
UHRyPExhYmVsPiBhZnRlckVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAgLTE3NTUsNyAr
MTc2NSw3IEBAIHZvaWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0
b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsKLSAgICAKKwog
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwpAQCAtMTc3Niw3ICsxNzg2LDcg
QEAgdm9pZCBGb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgaWYgKG1fZXhwcjEpCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2V4cHIxKTsKLSAgICAKKwog
ICAgIFJlZlB0cjxMYWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAg
aWYgKG1fZXhwcjIpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4
dChtX2V4cHIyLCB0b3BPZkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCBGYWxsVGhy
b3VnaE1lYW5zVHJ1ZSk7CkBAIC0xODU5LDcgKzE4NjksNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RlY3QgPSBwcm9wZXJ0eU5hbWU7CiAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFzc2lnbk5v
ZGUtPmJhc2UoKSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHN1YnNjcmlwdCA9IGdlbmVyYXRvci5l
bWl0Tm9kZShhc3NpZ25Ob2RlLT5zdWJzY3JpcHQoKSk7Ci0gICAgICAgIAorCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9k
ZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZCgpKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBzdWJzY3JpcHQsIHByb3BlcnR5TmFtZSk7CiAg
ICAgfSBlbHNlIHsKQEAgLTE4NzEsNyArMTg4MSw4IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAg
ICAgICAgICAgSWRlbnRpZmllciBpZGVudCA9IHNpbXBsZUJpbmRpbmctPmJvdW5kUHJvcGVydHko
KTsKICAgICAgICAgICAgIExvY2FsIGxvY2FsID0gZ2VuZXJhdG9yLmxvY2FsKGlkZW50KTsKICAg
ICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGxvY2FsLmdldCgpOwotICAgICAgICAgICAgaWYgKCFw
cm9wZXJ0eU5hbWUgfHwgbG9jYWwuaXNDYXB0dXJlZCgpKQorICAgICAgICAgICAgLy9UT0RPOiBt
YXliZSBlbWl0IGV4cHJlc3Npb24gaW5mbz8/PworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5h
bWUgfHwgbG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci5pc0dlbmVyYXRpbmdIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsaW5nKCkpCiAgICAgICAgICAgICAgICAgZ290byBnZW5lcmljQmluZGlu
ZzsKICAgICAgICAgICAgIGV4cGVjdGVkU3Vic2NyaXB0ID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5wdXNoT3B0aW1pc2VkRm9ySW4oZXhwZWN0ZWRTdWJzY3JpcHQuZ2V0KCksIGl0ZXIuZ2V0
KCksIGkuZ2V0KCksIHByb3BlcnR5TmFtZSk7CkBAIC0xOTA1LDkgKzE5MTYsOSBAQCB2b2lkIEZv
ck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKICAgICAgICAgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCAi
TGVmdCBzaWRlIG9mIGZvci1vZiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IGdl
bmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwotICAgIAorCiAgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBz
dGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgYXV0byBleHRyYWN0b3IgPSBb
dGhpcywgZHN0XShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiB2YWx1
ZSkKICAgICB7CkBAIC0xOTI2LDE0ICsxOTM3LDE0IEBAIHZvaWQgRm9yT2ZOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAg
ICAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBhc3NpZ25Ob2RlID0gc3RhdGljX2Nhc3Q8RG90QWNj
ZXNzb3JOb2RlKj4obV9sZXhwcik7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCA9IGFzc2lnbk5vZGUtPmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFzc2lnbk5vZGUtPmJhc2UoKSk7Ci0gICAg
ICAgICAgICAKKwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhhc3Np
Z25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25Ob2RlLT5kaXZvdFN0YXJ0KCksIGFzc2lnbk5vZGUtPmRp
dm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCks
IGlkZW50LCB2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9sZXhwci0+aXNCcmFja2V0QWNj
ZXNzb3JOb2RlKCkpIHsKICAgICAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGFzc2lnbk5v
ZGUgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4obV9sZXhwcik7CiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25O
b2RlLT5iYXNlKCkpOwogICAgICAgICAgICAgUmVnaXN0ZXJJRCogc3Vic2NyaXB0ID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFzc2lnbk5vZGUtPnN1YnNjcmlwdCgpKTsKLSAgICAgICAgICAgIAorCiAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90
KCksIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CiAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHN1YnNjcmlwdCwg
dmFsdWUpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTk2NSw3ICsxOTc2LDcgQEAgTGFiZWwqIENv
bnRpbnVlTm9kZTo6dHJpdmlhbFRhcmdldChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQog
dm9pZCBDb250aW51ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNl
dCgpKTsKLSAgICAKKwogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBnZW5lcmF0b3IuY29udGlu
dWVUYXJnZXQobV9pZGVudCk7CiAgICAgQVNTRVJUKHNjb3BlKTsKIApAQCAtMTk5Miw3ICsyMDAz
LDcgQEAgTGFiZWwqIEJyZWFrTm9kZTo6dHJpdmlhbFRhcmdldChCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yKQogdm9pZCBCcmVha05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVT
dGFydE9mZnNldCgpKTsKLSAgICAKKwogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBnZW5lcmF0
b3IuYnJlYWtUYXJnZXQobV9pZGVudCk7CiAgICAgQVNTRVJUKHNjb3BlKTsKIApAQCAtMjA0NCwx
MSArMjA1NSwxMSBAQCBpbmxpbmUgdm9pZCBDYXNlQ2xhdXNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ2FzZUJsb2NrTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1lbnVtIFN3aXRjaEtpbmQgeyAKK2VudW0gU3dpdGNoS2luZCB7CiAgICAgU3dp
dGNoVW5zZXQgPSAwLAotICAgIFN3aXRjaE51bWJlciA9IDEsIAotICAgIFN3aXRjaFN0cmluZyA9
IDIsIAotICAgIFN3aXRjaE5laXRoZXIgPSAzIAorICAgIFN3aXRjaE51bWJlciA9IDEsCisgICAg
U3dpdGNoU3RyaW5nID0gMiwKKyAgICBTd2l0Y2hOZWl0aGVyID0gMwogfTsKIAogc3RhdGljIHZv
aWQgcHJvY2Vzc0NsYXVzZUxpc3QoQ2xhdXNlTGlzdE5vZGUqIGxpc3QsIFZlY3RvcjxFeHByZXNz
aW9uTm9kZSosIDg+JiBsaXRlcmFsVmVjdG9yLCBTd2l0Y2hLaW5kJiB0eXBlRm9yVGFibGUsIGJv
b2wmIHNpbmdsZUNoYXJhY3RlclN3aXRjaCwgaW50MzJfdCYgbWluX251bSwgaW50MzJfdCYgbWF4
X251bSkKQEAgLTIwODcsNyArMjA5OCw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NDbGF1c2VMaXN0
KENsYXVzZUxpc3ROb2RlKiBsaXN0LCBWZWN0b3I8RXhwcmVzc2lvbk5vZGUqLCA4PiYKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIHR5cGVGb3JUYWJsZSA9IFN3aXRj
aE5laXRoZXI7Ci0gICAgICAgIGJyZWFrOyAgICAgICAgCisgICAgICAgIGJyZWFrOwogICAgIH0K
IH0KIApAQCAtMjEwOCwyMiArMjExOSwyMiBAQCBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBlIENhc2VC
bG9ja05vZGU6OnRyeVRhYmxlU3dpdGNoKFZlY3RvcjxFeHByZXNzaW9uTm9kZSosIDg+JgogCiAg
ICAgU3dpdGNoS2luZCB0eXBlRm9yVGFibGUgPSBTd2l0Y2hVbnNldDsKICAgICBib29sIHNpbmds
ZUNoYXJhY3RlclN3aXRjaCA9IHRydWU7Ci0gICAgCisKICAgICBwcm9jZXNzQ2xhdXNlTGlzdCht
X2xpc3QxLCBsaXRlcmFsVmVjdG9yLCB0eXBlRm9yVGFibGUsIHNpbmdsZUNoYXJhY3RlclN3aXRj
aCwgbWluX251bSwgbWF4X251bSk7CiAgICAgcHJvY2Vzc0NsYXVzZUxpc3QobV9saXN0MiwgbGl0
ZXJhbFZlY3RvciwgdHlwZUZvclRhYmxlLCBzaW5nbGVDaGFyYWN0ZXJTd2l0Y2gsIG1pbl9udW0s
IG1heF9udW0pOwotICAgIAorCiAgICAgaWYgKHR5cGVGb3JUYWJsZSA9PSBTd2l0Y2hVbnNldCB8
fCB0eXBlRm9yVGFibGUgPT0gU3dpdGNoTmVpdGhlcikKICAgICAgICAgcmV0dXJuIFN3aXRjaElu
Zm86OlN3aXRjaE5vbmU7Ci0gICAgCisKICAgICBpZiAodHlwZUZvclRhYmxlID09IFN3aXRjaE51
bWJlcikgewogICAgICAgICBpbnQzMl90IHJhbmdlID0gbWF4X251bSAtIG1pbl9udW07CiAgICAg
ICAgIGlmIChtaW5fbnVtIDw9IG1heF9udW0gJiYgcmFuZ2UgPD0gMTAwMCAmJiAocmFuZ2UgLyBs
aXRlcmFsVmVjdG9yLnNpemUoKSkgPCAxMCkKICAgICAgICAgICAgIHJldHVybiBTd2l0Y2hJbmZv
OjpTd2l0Y2hJbW1lZGlhdGU7CiAgICAgICAgIHJldHVybiBTd2l0Y2hJbmZvOjpTd2l0Y2hOb25l
OwotICAgIH0gCi0gICAgCisgICAgfQorCiAgICAgQVNTRVJUKHR5cGVGb3JUYWJsZSA9PSBTd2l0
Y2hTdHJpbmcpOwotICAgIAorCiAgICAgaWYgKHNpbmdsZUNoYXJhY3RlclN3aXRjaCkgewogICAg
ICAgICBpbnQzMl90IHJhbmdlID0gbWF4X251bSAtIG1pbl9udW07CiAgICAgICAgIGlmIChtaW5f
bnVtIDw9IG1heF9udW0gJiYgcmFuZ2UgPD0gMTAwMCAmJiAocmFuZ2UgLyBsaXRlcmFsVmVjdG9y
LnNpemUoKSkgPCAxMCkKQEAgLTIxNTcsNyArMjE2OCw3IEBAIHZvaWQgQ2FzZUJsb2NrTm9kZTo6
ZW1pdEJ5dGVjb2RlRm9yQmxvY2soQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJCiAgICAgICAgICAgICBsYWJlbFZlY3Rvci5hcHBlbmQoZ2VuZXJhdG9yLm5ld0xhYmVsKCkp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNsYXVzZVZhbC5nZXQoKSwg
bGFiZWxWZWN0b3JbbGFiZWxWZWN0b3Iuc2l6ZSgpIC0gMV0uZ2V0KCkpOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIGZvciAoQ2xhdXNlTGlzdE5vZGUqIGxpc3QgPSBtX2xpc3QyOyBs
aXN0OyBsaXN0ID0gbGlzdC0+Z2V0TmV4dCgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY2xhdXNlVmFsID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGNsYXVzZVZhbC5nZXQoKSwgbGlzdC0+Z2V0Q2xhdXNlKCktPmV4
cHIoKSk7CkBAIC0yMTk5LDcgKzIyMTAsNyBAQCB2b2lkIENhc2VCbG9ja05vZGU6OmVtaXRCeXRl
Y29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogdm9p
ZCBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0
KCkpOwotICAgIAorCiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJl
bFNjb3BlKExhYmVsU2NvcGU6OlN3aXRjaCk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAg
PSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKQEAgLTIyNDgsNyArMjI1OSw3IEBAIHZvaWQg
VHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIAogICAgIFJlZlB0cjxMYWJlbD4gdHJ5U3RhcnRMYWJlbCA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodHJ5U3RhcnRMYWJlbC5nZXQo
KSk7Ci0gICAgCisKICAgICBpZiAobV9maW5hbGx5QmxvY2spCiAgICAgICAgIGdlbmVyYXRvci5w
dXNoRmluYWxseUNvbnRleHQobV9maW5hbGx5QmxvY2spOwogICAgIFRyeURhdGEqIHRyeURhdGEg
PSBnZW5lcmF0b3IucHVzaFRyeSh0cnlTdGFydExhYmVsLmdldCgpKTsKQEAgLTIyNTcsMjAgKzIy
NjgsMjAgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgaWYgKG1fY2F0Y2hCbG9jaykgewogICAg
ICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoRW5kTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
LSAgICAgICAgCisKICAgICAgICAgLy8gTm9ybWFsIHBhdGg6IGp1bXAgb3ZlciB0aGUgY2F0Y2gg
YmxvY2suCiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChjYXRjaEVuZExhYmVsLmdldCgpKTsK
IAogICAgICAgICAvLyBVbmNhdWdodCBleGNlcHRpb24gcGF0aDogdGhlIGNhdGNoIGJsb2NrLgog
ICAgICAgICBSZWZQdHI8TGFiZWw+IGhlcmUgPSBnZW5lcmF0b3IuZW1pdExhYmVsKGdlbmVyYXRv
ci5uZXdMYWJlbCgpLmdldCgpKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlv
blJlZ2lzdGVyID0gZ2VuZXJhdG9yLnBvcFRyeUFuZEVtaXRDYXRjaCh0cnlEYXRhLCBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIGhlcmUuZ2V0KCkpOwotICAgICAgICAKKwogICAgICAgICBpZiAo
bV9maW5hbGx5QmxvY2spIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBjYXRjaCBibG9jayB0aHJv
d3MgYW4gZXhjZXB0aW9uIGFuZCB3ZSBoYXZlIGEgZmluYWxseSBibG9jaywgdGhlbiB0aGUgZmlu
YWxseQogICAgICAgICAgICAgLy8gYmxvY2sgc2hvdWxkICJjYXRjaCIgdGhhdCBleGNlcHRpb24u
CiAgICAgICAgICAgICB0cnlEYXRhID0gZ2VuZXJhdG9yLnB1c2hUcnkoaGVyZS5nZXQoKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXNoQ2F0Y2hTY29w
ZShtX2V4Y2VwdGlvbklkZW50LCBleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgRG9udERlbGV0ZSk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fY2F0Y2hCbG9jayk7CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0UG9wU2NvcGUoKTsKQEAgLTIyNzksNyArMjI5MCw3IEBAIHZvaWQgVHJ5
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIAogICAgIGlmIChtX2ZpbmFsbHlCbG9jaykgewogICAgICAgICBSZWZQdHI8TGFi
ZWw+IHByZUZpbmFsbHlMYWJlbCA9IGdlbmVyYXRvci5lbWl0TGFiZWwoZ2VuZXJhdG9yLm5ld0xh
YmVsKCkuZ2V0KCkpOwotICAgICAgICAKKwogICAgICAgICBnZW5lcmF0b3IucG9wRmluYWxseUNv
bnRleHQoKTsKIAogICAgICAgICBSZWZQdHI8TGFiZWw+IGZpbmFsbHlFbmRMYWJlbCA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOwpAQCAtMjM3MCw3ICsyMzgxLDcgQEAgdm9pZCBGdW5jdGlvbkJvZHlO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCopCiAgICAgICAgICAgICAgICAgJiYgcmhzRXhwcmVzc2lvbi0+aXNSZXNvbHZlTm9kZSgpCiAg
ICAgICAgICAgICAgICAgJiYgZ2VuZXJhdG9yLmlzQXJndW1lbnROdW1iZXIoc3RhdGljX2Nhc3Q8
UmVzb2x2ZU5vZGUqPihsaHNFeHByZXNzaW9uKS0+aWRlbnRpZmllcigpLCAwKQogICAgICAgICAg
ICAgICAgICYmIGdlbmVyYXRvci5pc0FyZ3VtZW50TnVtYmVyKHN0YXRpY19jYXN0PFJlc29sdmVO
b2RlKj4ocmhzRXhwcmVzc2lvbiktPmlkZW50aWZpZXIoKSwgMSkpIHsKLSAgICAgICAgICAgICAg
ICAKKwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5zZXRJc051bWVyaWNDb21wYXJlRnVuY3Rp
b24odHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIzODksNyArMjQwMCw3IEBA
IFJlZ2lzdGVySUQqIEZ1bmNFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiB7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TmV3
RnVuY3Rpb25FeHByZXNzaW9uKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHRoaXMp
OwogfQotICAgIAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVjb25zdHJ1
Y3RpbmdBc3NpZ25tZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLQogUmVnaXN0ZXJJRCogRGVjb25z
dHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKQEAgLTI0MDQsNyArMjQxNSw3IEBAIFJlZ2lz
dGVySUQqIERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhCiBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlOjp+RGVjb25zdHJ1
Y3Rpb25QYXR0ZXJuTm9kZSgpCiB7CiB9Ci0gICAgCisKIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6
YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykg
Y29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFyZ2V0UGF0dGVybnMuc2l6
ZSgpOyBpKyspIHsKQEAgLTI0MjcsNyArMjQzOCw3IEBAIFJlZ2lzdGVySUQqIEFycmF5UGF0dGVy
bk5vZGU6OmVtaXREaXJlY3RCaW5kaW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
CiAgICAgICAgICAgICBhdXRvIHRhcmdldCA9IG1fdGFyZ2V0UGF0dGVybnNbaV07CiAgICAgICAg
ICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IAorCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcCA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZCh0ZW1wLmdldCgpLCBq
c051bWJlcihpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEFyZ3VtZW50QnlWYWwo
dGVtcC5nZXQoKSwgZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCksIHRl
bXAuZ2V0KCkpOwpAQCAtMjQ1OCw3ICsyNDY5LDcgQEAgUmVnaXN0ZXJJRCogQXJyYXlQYXR0ZXJu
Tm9kZTo6ZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUK
ICAgICAgICAgaWYgKHJlc3VsdFJlZ2lzdGVyKQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeUluZGV4KHJlc3VsdFJlZ2lzdGVyLmdldCgpLCBpLCByZWdpc3RlcnMubGFzdCgpLmdldCgp
KTsKICAgICB9Ci0gICAgCisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFyZ2V0UGF0
dGVybnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKG1fdGFyZ2V0UGF0dGVybnNbaV0pCiAg
ICAgICAgICAgICBtX3RhcmdldFBhdHRlcm5zW2ldLT5iaW5kVmFsdWUoZ2VuZXJhdG9yLCByZWdp
c3RlcnNbaV0uZ2V0KCkpOwpAQCAtMjUwOCw3ICsyNTE5LDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJu
Tm9kZTo6dG9TdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKICAgICB9CiAgICAg
YnVpbGRlci5hcHBlbmQoJ30nKTsKIH0KLSAgICAKKwogdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6
YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykg
Y29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFyZ2V0UGF0dGVybnMuc2l6
ZSgpOyBpKyspIHsKQEAgLTI1NTIsNyArMjU2Myw3IEBAIHZvaWQgQmluZGluZ05vZGU6OmNvbGxl
Y3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYgaWRlbnRpZmllcnMpIGNvbnN0
CiB7CiAgICAgaWRlbnRpZmllcnMuYXBwZW5kKG1fYm91bmRQcm9wZXJ0eSk7CiB9Ci0gICAgCisK
IFJlZ2lzdGVySUQqIFNwcmVhZEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxODI1MGI5Li5lYzg0NzVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtOTY5LDYgKzk2OSw3IEBAIHZv
aWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQogI2lmIEVOQUJM
RShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0YUxvZ0YoIkpTQyBHQyBzdGFydGluZyBjb2xs
ZWN0aW9uLlxuIik7CiAjZW5kaWYKKyAgICB2bSgpLT51cGRhdGVIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZVN0YXRlKCk7CiAgICAgCiAgICAgZG91YmxlIGJlZm9yZSA9IDA7CiAgICAgaWYgKE9wdGlv
bnM6OmxvZ0dDKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMjMx
MzJmYy4uOTAxNjI2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTU4
Niw3ICs1ODYsMTQgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJj
ZShKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBTY3JpcHQKICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+c2NyaXB0UGFyc2VkKHNjcmlwdElEU3RyLCBzY3JpcHRVUkwsIHNjcmlwdC5zdGFy
dExpbmUsIHNjcmlwdC5zdGFydENvbHVtbiwgc2NyaXB0LmVuZExpbmUsIHNjcmlwdC5lbmRDb2x1
bW4sIGlzQ29udGVudFNjcmlwdCwgc291cmNlTWFwVVJMUGFyYW0sIGhhc1NvdXJjZVVSTFBhcmFt
KTsKIAogICAgIG1fc2NyaXB0cy5zZXQoc291cmNlSUQsIHNjcmlwdCk7Ci0KKyAgICAvL3ByaW50
ZigiYmVnaW4gcGFyc2VkIHNvdXJjZTpcbiIpOyAgCisgICAgLy9wcmludGYoIlx0c291cmNlSUQ9
JyVsdSdcbiIsIHNvdXJjZUlEKTsKKyAgICAvL3ByaW50ZigiXHR1cmw9JyVzJ1xuIiwgc2NyaXB0
LnVybC5hc2NpaSgpLmRhdGEoKSk7CisgICAgLy9wcmludGYoIlx0c291cmNlPSclcydcbiIsIHNj
cmlwdC5zb3VyY2UuYXNjaWkoKS5kYXRhKCkpOworICAgIC8vcHJpbnRmKCJcdHNvdXJjZVVSTD0n
JXMnXG4iLCBzY3JpcHQuc291cmNlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAvL3ByaW50Zigi
XHRzb3VyY2VNYXBwaW5nVVJMPSclcydcbiIsIHNjcmlwdC5zb3VyY2VNYXBwaW5nVVJMLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAvL3ByaW50ZigiXHRzdGFydC9lbmQgbGluZSA9WyVkLCAlZF0gc3Rh
cnQvZW5kIGNvbHVtbiA9IFslZCwgJWRdXG4iLCBzY3JpcHQuc3RhcnRMaW5lLCBzY3JpcHQuZW5k
TGluZSwgc2NyaXB0LnN0YXJ0Q29sdW1uLCBzY3JpcHQuZW5kQ29sdW1uKTsKKyAgICAvL3ByaW50
ZigiZW5kIHBhcnNlZCBzb3VyY2U6XG4iKTsgIAogICAgIGlmIChzY3JpcHRVUkwuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4
IGQ4ZDY5YTIuLmM2MjBmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJDb21wbGV0
aW9uLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCkBAIC0xOTEsNiArMTkyLDE0IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpydW4oRXJyb3JTdHJpbmcqKQogewogfQogCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Z2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5faWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbl9zdGFydExpbmUsIGludCBpbl9zdGFydENvbHVtbiwgaW50IGluX2VuZExpbmUsIGlu
dCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5cGVzKSAKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxWTSgpOworICAgIFN0cmluZyB0eXBlcyh2bS5nZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShp
bl9zdGFydExpbmUsIGluX3N0YXJ0Q29sdW1uLCBpbl9lbmRMaW5lLCBpbl9lbmRDb2x1bW4sIGlu
X3ZhcmlhYmxlTmFtZSwgaW5faWQpKTsKKyAgICAqb3V0X3R5cGVzID0gdHlwZXM7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggZDZjMWVlYS4uZjQ4NDM5MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgY29uc3QgYm9vbCogb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3Jp
cHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+
JiBpbnRlcm5hbFByb3BlcnRpZXMpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBy
ZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3Vw
KSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5nKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRS
YW5nZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5fdmFyaWFibGVOYW1lLCBjb25zdCBT
dHJpbmcmIGluX2lkLCBpbnQgaW5fc3RhcnRMaW5lLCBpbnQgaW5fc3RhcnRDb2x1bW4sIGludCBp
bl9lbmRMaW5lLCBpbnQgaW5fZW5kQ29sdW1uLCBTdHJpbmcqIG91dF90eXBlcykgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHNldFNjcmlwdERlYnVnU2VydmVyKFNjcmlwdERlYnVnU2VydmVyKiBzY3Jp
cHREZWJ1Z1NlcnZlcikgeyBtX3NjcmlwdERlYnVnU2VydmVyID0gc2NyaXB0RGVidWdTZXJ2ZXI7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9SdW50aW1lLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L1J1bnRpbWUuanNvbgppbmRleCBmN2JmMTMzLi42YzYxMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgpAQCAtMTk2
LDYgKzE5NiwyMSBAQAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJkaXNhYmxlIiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyByZXBvcnRpbmcgb2YgZXhlY3V0
aW9uIGNvbnRleHRzIGNyZWF0aW9uLiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICAgIm5hbWUiOiAiZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlIiwKKyAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFyaWFi
bGVOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlZhcmlhYmxlIHdlIHdh
bnQgdHlwZSBpbmZyb21hdGlvbiBmb3IuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
c291cmNlSUQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAic291cmNlSUQgdW5p
cXVlbHkgaWRlbnRpZnlpbmcgYSBzY3JpcHQiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzdGFydExpbmUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogInN0YXJ0IGxp
bmUgZm9yIHZhcmlhYmxlIG5hbWUiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFy
dENvbHVtbiIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAic3RhcnQgY29sdW1u
IGZvciB2YXJpYWJsZSBuYW1lIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5kTGlu
ZSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiZW5kIGxpbmUgZm9yIHZhcmlh
YmxlIG5hbWUiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRDb2x1bW4iLCAidHlw
ZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogImVuZCBjb2x1bW4gZm9yIHZhcmlhYmxlIG5h
bWUiIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInR5cGVzIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9u
IjogIlR5cGVzIGZvciByZXF1ZXN0ZWQgdmFyaWFibGUuIiB9CisgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgZGV0YWlsZWQgaW5mb3JtdGF0aW9uIG9u
IGdpdmVuIGZ1bmN0aW9uLiIKICAgICAgICAgfQogICAgIF0sCiAgICAgImV2ZW50cyI6IFsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAppbmRleCA2YTc2
ZDBhLi44NmU1MTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5oCkBAIC0xNjgsMTQgKzE2OCwxNCBAQCBuYW1lc3BhY2UgSlNDICB7CiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0RnJvbUNvZGVPcmln
aW5JbmRleCgpOwogI2VuZGlmCi0gICAgICAgIAorCiAgICAgICAgIC8vIFRoaXMgd2lsbCB0cnkg
dG8gZ2V0IHlvdSB0aGUgYnl0ZWNvZGUgb2Zmc2V0LCBidXQgeW91IHNob3VsZCBiZSBhd2FyZSB0
aGF0CiAgICAgICAgIC8vIHRoaXMgYnl0ZWNvZGUgb2Zmc2V0IG1heSBiZSBib2d1cyBpbiB0aGUg
cHJlc2VuY2Ugb2YgaW5saW5pbmcuIFRoaXMgd2lsbAogICAgICAgICAvLyBhbHNvIHJldHVybiAw
IGlmIHRoZSBjYWxsIGZyYW1lIGhhcyBubyBub3Rpb24gb2YgYnl0ZWNvZGUgb2Zmc2V0cyAoZm9y
CiAgICAgICAgIC8vIGV4YW1wbGUgaWYgaXQncyBuYXRpdmUgY29kZSkuCiAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE3NTQKICAgICAgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQoKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gVGhpcyB3aWxs
IGdldCB5b3UgYSBDb2RlT3JpZ2luLiBJdCB3aWxsIGFsd2F5cyBzdWNjZWVkLiBNYXkgcmV0dXJu
CiAgICAgICAgIC8vIENvZGVPcmlnaW4oMCkgaWYgd2UncmUgaW4gbmF0aXZlIGNvZGUuCiAgICAg
ICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbigpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJzKCk7CiAgICAgICAgICAg
ICByZXR1cm4gdG9wT2ZGcmFtZUludGVybmFsKCk7CiAgICAgICAgIH0KLSAgICAKKwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3QK
ICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA4ZjRiNmQ0Li5iY2ZhZjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQnV0dGVyZmx5
SW5saW5lcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgogI2luY2x1ZGUgIkNvcGllZFNwYWNl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKQEAgLTM3LDEyICszOCwx
NCBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRl
ICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJE
YXRhYmFzZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlN0YWNrVmlz
aXRvci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKKyNpbmNs
dWRlICJUeXBlU2V0LmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAj
aW5jbHVkZSA8c3RkbGliLmg+CkBAIC0zNDYsNiArMzQ5LDggQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOwog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5n
RmxhZ3MoRXhlY1N0YXRlKik7CiAjZW5kaWYKIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25QcmludFZhcmlhYmxlc0luQ29kZUJsb2NrR2l2ZW5SYW5nZShFeGVj
U3RhdGUqKTsKKwogc3RydWN0IFNjcmlwdCB7CiAgICAgYm9vbCBpc0ZpbGU7CiAgICAgY2hhciog
YXJndW1lbnQ7CkBAIC00ODcsNiArNDkyLDggQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAiY3JlYXRlSW1wdXJlR2V0dGVyIiwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0
ZXIsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldEltcHVyZUdldHRlckRlbGVnYXRl
IiwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSwgMik7CisKKyAgICAgICAgYWRkRnVu
Y3Rpb24odm0sICJwcmludFZhcmlhYmxlc0luQ29kZUJsb2NrR2l2ZW5SYW5nZSIsIGZ1bmN0aW9u
UHJpbnRWYXJpYWJsZXNJbkNvZGVCbG9ja0dpdmVuUmFuZ2UsIDQpOwogICAgICAgICAKICAgICAg
ICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMoKSwgMCk7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQpA
QCAtOTEyLDYgKzkxOSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
TWFrZU1hc3F1ZXJhZGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKE1hc3F1ZXJhZGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcmlu
dFZhcmlhYmxlc0luQ29kZUJsb2NrR2l2ZW5SYW5nZShFeGVjU3RhdGUqKQoreworICAgIC8vU2Ny
aXB0RXhlY3V0YWJsZSogZW5jbG9zaW5nRXhlY3V0YWJsZSA9IGV4ZWMtPnZtKCkuZmluZFNtYWxs
ZXN0RW5jbG9zaW5nU2NyaXB0RXhlY3V0YWJsZShleGVjLT5hcmd1bWVudCgwKS5hc1VJbnQzMigp
LCBleGVjLT5hcmd1bWVudCgxKS5hc1VJbnQzMigpLAorICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgyKS5hc1VJbnQzMigpLCBleGVjLT5hcmd1bWVu
dCgzKS5hc1VJbnQzMigpLAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpKTsKKyAgICAv
L3ByaW50ZigiXG5Gb3VuZCBTY3JpcHQgRXhlY3V0YWJsZVxuIik7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworCisKIC8vIFVzZSBTRUggZm9yIFJlbGVh
c2UgYnVpbGRzIG9ubHkgdG8gZ2V0IHJpZCBvZiB0aGUgY3Jhc2ggcmVwb3J0IGRpYWxvZwogLy8g
KGx1Y2tpbHkgdGhlIHNhbWUgdGVzdHMgZmFpbCBpbiBSZWxlYXNlIGFuZCBEZWJ1ZyBidWlsZHMg
c28gZmFyKS4gTmVlZCB0bwogLy8gYmUgaW4gYSBzZXBhcmF0ZSBtYWluIGZ1bmN0aW9uIGJlY2F1
c2UgdGhlIGpzY21haW4gZnVuY3Rpb24gcmVxdWlyZXMgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1YTEwOTY4Li4xMDMxZWUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
QEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgog
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTUzLDYg
KzU0LDggQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlN0cm9uZy5o
IgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5s
aW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCkBAIC0xNjcsNyAr
MTcwLDMwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAgICAgICBFeGVj
U3RhdGUqIF9fcmNmX2V4ZWMgPSAoZXhlY0NhbGxlZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBfX3JjZl9leGVjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQotICAgIAorCisjZGVm
aW5lIExMSU5UX1BVVF9UT19TQ09QRV9DT01NT04oKSBcCisgICAgTExJTlRfQkVHSU4oKTsgXAor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7IFwKKyAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJh
bmQpOyBcCisgICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJTlRfT1Ao
MSkuanNWYWx1ZSgpKTsgXAorICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKTsgXAorICAgIFJlc29sdmVNb2RlQW5kVHlwZSBtb2RlQW5kVHlwZSA9IFJlc29sdmVNb2Rl
QW5kVHlwZShwY1s0XS51Lm9wZXJhbmQpOyBcCisgXAorICAgIGlmIChtb2RlQW5kVHlwZS5tb2Rl
KCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFzY29wZS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQp
KSBcCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhl
YywgaWRlbnQpKTsgXAorIFwKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSk7IFwKKyAgICBzY29wZS0+bWV0aG9kVGFibGUoKS0+cHV0KHNj
b3BlLCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOyBcCisgXAorICAgIC8qIENvdmVycyBpbXBs
aWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhl
Y3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLiov
ICBcCisgICAgaWYgKG1vZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBtb2Rl
QW5kVHlwZS50eXBlKCkgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7
IFwKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiBzbG90LmJhc2UoKSA9PSBz
Y29wZSAmJiBzY29wZS0+c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUo
KSkgeyBcCisgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjb2RlQmxvY2st
Pm1fbG9jayk7IFwKKyAgICAgICAgICAgIHBjWzVdLnUuc3RydWN0dXJlLnNldChleGVjLT52bSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzY29wZS0+c3RydWN0dXJlKCkpOyBcCisg
ICAgICAgICAgICBwY1s2XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOyBcCisgICAg
ICAgIH0gXAorICAgIH0gXAorCiAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9t
V2hlcmUsIGludCBvcGVyYW5kKQogewpAQCAtMjk0LDE1ICszMjAsMTUgQEAgaW5saW5lIGJvb2wg
aml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIERlZmVyR0NGb3JBV2hp
bGUgZGVmZXJHQyh2bS5oZWFwKTsgLy8gTXkgY2FsbGVycyBkb24ndCBzZXQgdG9wIGNhbGxmcmFt
ZSwgc28gd2UgZG9uJ3Qgd2FudCB0byBHQyBoZXJlIGF0IGFsbC4KLSAgICAKKwogICAgIGNvZGVC
bG9jay0+dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlZGljdGlvbnMoKTsKLSAgICAKKwogICAgIGlm
ICghY29kZUJsb2NrLT5jaGVja0lmSklUVGhyZXNob2xkUmVhY2hlZCgpKSB7CiAgICAgICAgIGlm
IChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nRigiICAgIEpJVCB0
aHJlc2hvbGQgc2hvdWxkIGJlIGxpZnRlZC5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIAorCiAgICAgc3dpdGNoIChjb2RlQmxvY2stPmppdFR5cGUoKSkgewogICAgIGNh
c2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6IHsKICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSkKQEAgLTM0MiwxNCArMzY4LDE0IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgZW50
cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiosIENvZGVCbG9jayogY29kCiAgICAg
ICAgICAgICAqY29kZUJsb2NrLCAiOiBFbnRlcmVkICIsIG5hbWUsICIgd2l0aCBleGVjdXRlQ291
bnRlciA9ICIsCiAgICAgICAgICAgICBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSwg
IlxuIik7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKICAgICAg
ICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKICAgICAgICAgTExJTlRfUkVUVVJO
X1RXTygwLCAwKTsKICAgICB9CiAgICAgaWYgKCFqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyhj
b2RlQmxvY2ssIGV4ZWMpKQogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIDApOwotICAgIAor
CiAgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29k
ZUJsb2NrLT5qaXRDb2RlKCktPmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOwogICAgIEFTU0VSVChr
aW5kID09IEFyaXR5Q2hlY2spOwpAQCAtNDAwLDI2ICs0MjYsMjYgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0wobG9vcF9vc3IpCiAgICAgICAgICAgICAqY29kZUJsb2NrLCAiOiBFbnRlcmVkIGxvb3Bf
b3NyIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAiLAogICAgICAgICAgICAgY29kZUJsb2NrLT5sbGlu
dEV4ZWN1dGVDb3VudGVyKCksICJcbiIpOwogICAgIH0KLSAgICAKKwogICAgIGlmICghc2hvdWxk
SklUKGV4ZWMpKSB7CiAgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CiAg
ICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgMCk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFq
aXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyhjb2RlQmxvY2ssIGV4ZWMpKQogICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKDAsIDApOwotICAgIAorCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKLSAgICAKKwogICAgIFZlY3RvcjxCeXRlY29k
ZUFuZE1hY2hpbmVPZmZzZXQ+IG1hcDsKICAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVj
b2RlKG1hcCk7CiAgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5
U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQ+KG1hcCwgbWFwLnNpemUo
KSwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIEJ5dGVjb2RlQW5kTWFj
aGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleCk7CiAgICAgQVNTRVJUKG1hcHBpbmcpOwogICAg
IEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7Ci0gICAgCisKICAgICB2
b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmV4ZWN1dGFibGVBZGRyZXNz
QXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CiAgICAgQVNTRVJUKGp1bXBU
YXJnZXQpOwotICAgIAorCiAgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjLT50
b3BPZkZyYW1lKCkpOwogI2Vsc2UgLy8gRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0ocGMp
OwpAQCAtNDM4LDcgKzQ2NCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHJlcGxhY2UpCiAgICAg
ICAgICAgICAqY29kZUJsb2NrLCAiOiBFbnRlcmVkIHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291bnRl
ciA9ICIsCiAgICAgICAgICAgICBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSwgIlxu
Iik7CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNob3VsZEpJVChleGVjKSkKICAgICAgICAgaml0
Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoY29kZUJsb2NrLCBleGVjKTsKICAgICBlbHNlCkBAIC01
MzQsMTAgKzU2MCwxOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X3JlZ2V4
cCkKICAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOwogfQogCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxp
dHkpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0g
cGNbMl0udS5sb2NhdGlvbjsKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KTsKKyAgICB2bS5oaWdoRmlkZWxpdHlMb2coKS0+cmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9j
YXRpb24odiwgbG9jYXRpb24pOworICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpCiB7CiAgICAgTExJTlRf
QkVHSU4oKTsKLSAgICAKKwogICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKTsKICAgICBKU1ZhbHVlIGJhc2VWYWwgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKICAg
ICBpZiAoYmFzZVZhbC5pc09iamVjdCgpKSB7CkBAIC01NzEsMTYgKzYwNiwxNiBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgIEpTVmFsdWUgcmVzdWx0ID0g
YmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAgICAgTExJTlRfT1AoMSkgPSByZXN1bHQ7Ci0gICAgCisKICAgICBpZiAoIUxMSU5U
X0FMV0FZU19BQ0NFU1NfU0xPVwogICAgICAgICAmJiBiYXNlVmFsdWUuaXNDZWxsKCkKICAgICAg
ICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCiAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBi
YXNlVmFsdWUKICAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkpIHsKLSAgICAgICAg
CisKICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7Ci0gICAgICAg
IAorCiAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCiAg
ICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2Fj
aGluZygpCiAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLm5ld0ltcHVyZVBy
b3BlcnR5RmlyZXNXYXRjaHBvaW50cygpKSB7CkBAIC02MjYsNyArNjYxLDYgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKICAgICBMTElOVF9CRUdJTigpOwogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsK
LSAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOwog
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKICAgICBpZiAocGNbOF0udS5vcGVy
YW5kKQpAQCAtNjM0LDI0ICs2NjgsMjQgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3B1dF9ieV9pZCkKICAgICBlbHNlCiAgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQs
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKLSAgICAKKwogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCiAgICAgICAg
ICYmIGJhc2VWYWx1ZS5pc0NlbGwoKQogICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkp
IHsKLSAgICAgICAgCisKICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0Nl
bGwoKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJl
KCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGlj
dGlvbmFyeSgpCiAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0
c1Byb3BlcnR5Q2FjaGluZygpCiAgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2Uo
KSkgewotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQ
cm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgR0NTYWZlQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOwotICAgICAg
ICAgICAgCisKICAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkg
JiYgc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGluZUNhcGFjaXR5KCkgPT0gc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52
YWxpZGF0ZWQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCiAg
ICAgICAgICAgICAgICAgICAgIC8vIGJlbG93IG1heSBHQy4KICAgICAgICAgICAgICAgICAgICAg
cGNbMF0udS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CkBAIC02NzAs
NyArNzA0LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWluLnNldCgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOwotICAgICAgICAg
ICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFu
ZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChzbG90
LmNhY2hlZE9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0u
dS5vcGNvZGUgPSBMTEludDo6Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCk7CkBAIC02OTcsNyArNzMxLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9ieV9pZCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIExM
SU5UX0VORCgpOwogfQogCkBAIC03MjMsMTggKzc1NywxOCBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRC
eVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlw
dCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgfQotICAg
IAorCiAgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CiAgICAgICAgIHVpbnQzMl90IGkg
PSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVl
KSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKICAgICAgICAgICAgIHJl
dHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKLSAgICAgICAgCisK
ICAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CiAgICAgfQogCiAgICAgaWYg
KGlzTmFtZShzdWJzY3JpcHQpKQogICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBq
c0Nhc3Q8TmFtZUluc3RhbmNlKj4oc3Vic2NyaXB0LmFzQ2VsbCgpKS0+cHJpdmF0ZU5hbWUoKSk7
Ci0gICAgCisKICAgICBJZGVudGlmaWVyIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvU3RyaW5nKGV4
ZWMpLT50b0lkZW50aWZpZXIoZXhlYyk7CiAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywg
cHJvcGVydHkpOwogfQpAQCAtNzU1LDcgKzc4OSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKQogICAgICAgICBMTElOVF9PUCgyKSA9IGFyZ3Vt
ZW50czsKICAgICAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIoVmlydHVhbFJlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLm9mZnNldCgpKSA9IGFyZ3VtZW50
czsKICAgICB9Ci0gICAgCisKICAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfZ2V0X2FyZ3Vt
ZW50X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpOwogfQogCkBAIC03NjgsMTEgKzgwMiwxMSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2J5X3BuYW1lKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9ieV92YWwpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICAKKwogICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQg
PSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCk7Ci0gICAgCisKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQz
MigpKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CiAgICAg
ICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgewpAQCAtODAzLDcgKzgzNyw3IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0g
ICAgCisKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOwog
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOwpAQCAtODMwLDExICs4NjQsMTEg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiAgICAgTExJTlRf
QkVHSU4oKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgp
OwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOwot
ICAgIAorCiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsK
LSAgICAKKwogICAgIGJvb2wgY291bGREZWxldGU7Ci0gICAgCisKICAgICB1aW50MzJfdCBpOwog
ICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQogICAgICAgICBjb3VsZERlbGV0ZSA9IGJh
c2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0
LCBleGVjLCBpKTsKQEAgLTg0NiwxMCArODgwLDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9kZWxfYnlfdmFsKQogICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAg
ICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9w
ZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CiAgICAgfQotICAgIAorCiAgICAgaWYg
KCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAg
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7Ci0gICAgCisKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7CiB9CiAKQEAgLTg2NywxNiArOTAxLDE2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfZ2V0dGVyX3NldHRlcikKICAgICBMTElOVF9CRUdJTigpOwogICAgIEFTU0VS
VChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2VP
YmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOwotICAgIAorCiAgICAgR2V0dGVy
U2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtKTsKICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKLSAgICAKKwogICAgIEpTVmFsdWUgZ2V0dGVyID0gTExJTlRfT1Ao
MykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgc2V0dGVyID0gTExJTlRfT1AoNCkuanNWYWx1ZSgp
OwogICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBnZXR0ZXIuaXNVbmRlZmluZWQoKSk7
CiAgICAgQVNTRVJUKHNldHRlci5pc09iamVjdCgpIHx8IHNldHRlci5pc1VuZGVmaW5lZCgpKTsK
ICAgICBBU1NFUlQoZ2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzT2JqZWN0KCkpOwotICAg
IAorCiAgICAgaWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkKICAgICAgICAgYWNjZXNzb3ItPnNl
dEdldHRlcih2bSwgYXNPYmplY3QoZ2V0dGVyKSk7CiAgICAgaWYgKCFzZXR0ZXIuaXNVbmRlZmlu
ZWQoKSkKQEAgLTEwMDksNyArMTA0Myw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9uZXdfZnVuY19leHApCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5j
dGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgZXhlYy0+c2NvcGUoKSk7Ci0gICAgCisKICAgICBM
TElOVF9SRVRVUk4oZnVuYyk7CiB9CiAKQEAgLTEwMjAsNyArMTA1NCw3IEBAIHN0YXRpYyBTbG93
UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0
cnVjdGlvbiogcGMsCiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9nKCJQ
ZXJmb3JtaW5nIGhvc3QgY2FsbC5cbiIpOwogI2VuZGlmCi0gICAgCisKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAKQEAgLTEwMzEsMTcgKzEwNjUsMTcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBo
YW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywKICAg
ICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgewogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRh
KTsKLSAgICAKKwogICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7Ci0gICAg
CisKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgewogICAgICAgICAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWNDYWxsZWUpOwogICAgICAgICAg
ICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICAgICAg
dm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIExMSU5U
X0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpKTsKICAgICAgICAgfQotICAgICAgICAKKwogI2lmIExMSU5UX1NMT1dfUEFUSF9U
UkFDSU5HCiAgICAgICAgIGRhdGFMb2coIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAi
LCBjYWxsZWUsICJcbiIpOwogI2VuZGlmCkBAIC0xMDUxLDEyICsxMDg1LDEyIEBAIHN0YXRpYyBT
bG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJ
bnN0cnVjdGlvbiogcGMsCiAgICAgfQogCiAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0
cnVjdCk7Ci0gICAgCisKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgQ29u
c3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxsZWUsIGNvbnN0
cnVjdERhdGEpOwotICAgIAorCiAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0
VHlwZUpTKTsKLSAgICAKKwogICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVI
b3N0KSB7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjQ2Fs
bGVlKTsKICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwpA
QCAtMTA2NCw3ICsxMDk4LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0
Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywKIAogICAgICAgICBM
TElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSk7CiAgICAgfQotICAgIAorCiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJ
TkcKICAgICBkYXRhTG9nKCJDb25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICIs
IGNhbGxlZSwgIlxuIik7CiAjZW5kaWYKQEAgLTEwODIsMTMgKzExMTYsMTMgQEAgaW5saW5lIFNs
b3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVj
dGlvbiogcGMsIENvZGUKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNG
dW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKICAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQog
ICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFs
dWUsIGtpbmQpOwotICAgIAorCiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CiAgICAgSlNTY29wZSogc2NvcGUgPSBjYWxs
ZWUtPnNjb3BlVW5jaGVja2VkKCk7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOwogICAgIGV4
ZWNDYWxsZWUtPnNldFNjb3BlKHNjb3BlKTsKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJs
ZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwotICAgIAorCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGNvZGVQdHI7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOwogICAgIGlmIChleGVj
dXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQpAQCAtMTEwOCwxNiArMTE0MiwxNiBAQCBpbmxpbmUg
U2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3Ry
dWN0aW9uKiBwYywgQ29kZQogICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWly
ZWQ7CiAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Io
dm0sIGtpbmQsIGFyaXR5LCBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKTsKICAgICB9
Ci0gICAgCisKICAgICBBU1NFUlQoISFjb2RlUHRyKTsKLSAgICAKKwogICAgIGlmICghTExJTlRf
QUxXQVlTX0FDQ0VTU19TTE9XICYmIGNhbGxMaW5rSW5mbykgewogICAgICAgICBFeGVjU3RhdGUq
IGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwotICAgICAgICAKKwogICAg
ICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGV4ZWNDYWxsZXItPmNvZGVCbG9jaygp
OwogCiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNhbGxlckNvZGVCbG9jay0+
bV9sb2NrKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3Qo
KSkKICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CiAgICAgICAgIGNhbGxMaW5r
SW5mby0+Y2FsbGVlLnNldCh2bSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwg
Y2FsbGVlKTsKQEAgLTExMzcsMTUgKzExNzEsMTUgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlw
ZSBnZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWMK
ICAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vz
c2FyeS4KICAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hl
LgogICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2Fs
bCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgotICAgIAorCiAgICAgSlNWYWx1ZSBjYWxsZWVBc1Zh
bHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7Ci0gICAgCisKICAgICBFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUgPSBleGVjIC0gcGNbNF0udS5vcGVyYW5kOwotICAgIAorCiAgICAgZXhlY0NhbGxl
ZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbM10udS5vcGVyYW5kKTsKICAgICBl
eGVjQ2FsbGVlLT51bmNoZWNrZWRSKEpTU3RhY2s6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwog
ICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwotICAgIAorCiAgICAgQVNTRVJU
KHBjWzVdLnUuY2FsbExpbmtJbmZvKTsKICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUs
IHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBwY1s1XS51LmNhbGxMaW5rSW5mbyk7CiB9CkBAIC0x
MTY3LDExICsxMjAxLDExIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zaXplX2Zy
YW1lX2Zvcl92YXJhcmdzKQogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgLy8gVGhpcyBuZWVkcyB0
bzoKICAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFy
aWFibGUgYXJndW1lbnRzLgotICAgIAorCiAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gc2l6
ZUZyYW1lRm9yVmFyYXJncyhleGVjLCAmdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCksCiAgICAgICAg
IExMSU5UX09QX0MoNCkuanNWYWx1ZSgpLCBwY1s1XS51Lm9wZXJhbmQsIHBjWzZdLnUub3BlcmFu
ZCk7CiAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYyk7Ci0gICAgCisKICAgICB2
bS5uZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZSA9IGV4ZWNDYWxsZWU7CiAKICAgICBMTElOVF9SRVRV
Uk5fQ0FMTEVFX0ZSQU1FKGV4ZWNDYWxsZWUpOwpAQCAtMTE4Myw0OSArMTIxNyw0OSBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF92YXJhcmdzKQogICAgIC8vIFRoaXMgbmVl
ZHMgdG86CiAgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBp
ZiBuZWNlc3NhcnkuCiAgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRk
cmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCi0gICAgCisKICAgICBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKLSAgICAKKwogICAgIEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IHZtLm5ld0NhbGxGcmFtZVJldHVyblZhbHVlOwogCiAgICAg
bG9hZFZhcmFyZ3MoZXhlYywgZXhlY0NhbGxlZSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoNCkuanNWYWx1ZSgpLCBwY1s2XS51Lm9wZXJhbmQpOwogICAgIExMSU5UX0NBTExf
Q0hFQ0tfRVhDRVBUSU9OKGV4ZWMpOwotICAgIAorCiAgICAgZXhlY0NhbGxlZS0+dW5jaGVja2Vk
UihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBleGVjQ2FsbGVlLT5zZXRD
YWxsZXJGcmFtZShleGVjKTsKICAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBjKTsKLSAgICAKKwog
ICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVB
c1ZhbHVlKTsKIH0KLSAgICAKKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0
cnVjdF92YXJhcmdzKQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogICAgIC8vIFRo
aXMgbmVlZHMgdG86CiAgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGls
ZSBpdCBpZiBuZWNlc3NhcnkuCiAgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNv
ZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCi0gICAgCisKICAgICBK
U1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKLSAgICAKKwog
ICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IHZtLm5ld0NhbGxGcmFtZVJldHVyblZhbHVlOwot
ICAgIAorCiAgICAgbG9hZFZhcmFyZ3MoZXhlYywgZXhlY0NhbGxlZSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpLCBwY1s2XS51Lm9wZXJhbmQpOwogICAg
IExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMpOwotICAgIAorCiAgICAgZXhlY0NhbGxl
ZS0+dW5jaGVja2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBleGVj
Q2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKICAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBj
KTsKLSAgICAKKwogICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JD
b25zdHJ1Y3QsIGNhbGxlZUFzVmFsdWUpOwogfQotICAgIAorCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY2FsbF9ldmFsKQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwog
ICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKLSAgICAK
KwogICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgLSBwY1s0XS51Lm9wZXJhbmQ7Ci0g
ICAgCisKICAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1sz
XS51Lm9wZXJhbmQpOwogICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwogICAg
IGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoSlNTdGFjazo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7
CkBAIC0xMjMzLDEwICsxMjY3LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
YWxsX2V2YWwpCiAgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoTExJbnQ6OmdldENvZGVQdHIo
bGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKICAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxv
Y2soMCk7CiAgICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyk7Ci0gICAgCisKICAgICBpZiAoIWlz
SG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKICAgICAgICAgcmV0
dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUp
OwotICAgIAorCiAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7
CiAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogfQpAQCAtMTI4MSwxOCArMTMxNSwxOCBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3BuYW1lcykKICAgICAgICAgcGMgKz0gcGNbNV0u
dS5vcGVyYW5kOwogICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9Ci0gICAgCisKICAgICBKU09i
amVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBv
LT5zdHJ1Y3R1cmUoKTsKICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CiAgICAgaWYgKCFqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3Rv
dHlwZUNoYWluKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKICAgICAgICAg
anNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShl
eGVjLCBvKTsKLSAgICAKKwogICAgIExMSU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKTsKICAgICBMTElOVF9PUCgyKSA9IEpTVmFsdWUobyk7CiAgICAgTExJTlRfT1Ao
MykgPSBSZWdpc3Rlcjo6d2l0aEludCgwKTsKICAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3
aXRoSW50KGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7Ci0gICAgCisKICAgICBwYyAr
PSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOwogICAgIExMSU5UX0VORCgpOwogfQpAQCAt
MTMxNSw5ICsxMzQ5LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0
aF9zY29wZSkKICAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKICAgICBK
U09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7Ci0gICAgCisKICAgICBleGVjLT5zZXRTY29wZShKU1dpdGhTY29wZTo6Y3JlYXRlKGV4ZWMs
IG8pKTsKLSAgICAKKwogICAgIExMSU5UX0VORCgpOwogfQogCkBAIC0xMzY2LDcgKzE0MDAsNyBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVidWcpCiAgICAgTExJTlRfQkVHSU4o
KTsKICAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CiAgICAgdm0uaW50ZXJw
cmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCkp
OwotICAgIAorCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKQEAgLTE0MjgsMzAgKzE0NjIsMjAgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tX3Njb3BlKQogICAgIExMSU5U
X1JFVFVSTihzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSk7CiB9CiAKKwogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zY29wZSkKIHsKLSAgICBMTElOVF9CRUdJTigpOwot
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Ci0gICAgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5k
KTsKLSAgICBKU09iamVjdCogc2NvcGUgPSBqc0Nhc3Q8SlNPYmplY3QqPihMTElOVF9PUCgxKS5q
c1ZhbHVlKCkpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsK
LSAgICBSZXNvbHZlTW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUgPSBSZXNvbHZlTW9kZUFuZFR5cGUo
cGNbNF0udS5vcGVyYW5kKTsKLQotICAgIGlmIChtb2RlQW5kVHlwZS5tb2RlKCkgPT0gVGhyb3dJ
Zk5vdEZvdW5kICYmICFzY29wZS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKQotICAgICAgICBM
TElOVF9USFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Ci0K
LSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSk7Ci0gICAgc2NvcGUtPm1ldGhvZFRhYmxlKCktPnB1dChzY29wZSwgZXhlYywgaWRlbnQsIHZh
bHVlLCBzbG90KTsKLQotICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5
IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93
IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgotICAgIGlmIChtb2RlQW5kVHlwZS50eXBl
KCkgPT0gR2xvYmFsUHJvcGVydHkgfHwgbW9kZUFuZFR5cGUudHlwZSgpID09IEdsb2JhbFByb3Bl
cnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgewotICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJs
ZVB1dCgpICYmIHNsb3QuYmFzZSgpID09IHNjb3BlICYmIHNjb3BlLT5zdHJ1Y3R1cmUoKS0+cHJv
cGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBwY1s1XS51LnN0
cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc2Nv
cGUtPnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgIHBjWzZdLnUub3BlcmFuZCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgTExJTlRfUFVUX1RPX1NDT1BFX0NP
TU1PTigpOworICAgIExMSU5UX0VORCgpOworfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSkKK3sKKyAgICAvLyBwdXRfdG9fc2NvcGVf
d2l0aF9wcm9maWxlIHNjb3BlLCBpZCwgdmFsdWUsIFJlc29sdmVNb2RlQW5kVHlwZSwgU3RydWN0
dXJlLCBPcGVyYW5kLCBUeXBlTG9jYXRpb24qCisgICAgTExJTlRfUFVUX1RPX1NDT1BFX0NPTU1P
TigpOworICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSBwY1s3XS51LmxvY2F0aW9uOworICAg
IEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIHZtLmhpZ2hGaWRlbGl0
eUxvZygpLT5yZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbih2LCBsb2NhdGlvbik7CiAg
ICAgTExJTlRfRU5EKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmgKaW5kZXggOWM2ZjEyMi4uYzVhM2RlZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAogI2lmbmRlZiBMTEludFNsb3dQYXRoc19oCkBAIC0xMjQsNiArMTI0LDgg
QEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYW5kbGVfZXhjZXB0aW9u
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tX3Njb3BlKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlKTsKK0xM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlX3dpdGhfcHJv
ZmlsZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlw
ZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxs
aW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBXVEZf
SU5URVJOQUw7CiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKIGV4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDI4Njg3YS4uNzI5ZGVhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTA0
LDE1ICsxMDQsMTUgQEAgaWYgSlNWQUxVRTY0CiAgICAgY29uc3QgUEIgPSB0NgogICAgIGNvbnN0
IHRhZ1R5cGVOdW1iZXIgPSBjc3IxCiAgICAgY29uc3QgdGFnTWFzayA9IGNzcjIKLSAgICAKKwog
ICAgIG1hY3JvIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihvZmZzZXQsIGRlc3QpCiAgICAgICAgIGxv
YWRpcyBvZmZzZXQgKiA4W1BCLCBQQywgOF0sIGRlc3QKICAgICBlbmQKLSAgICAKKwogICAgIG1h
Y3JvIGxvYWRwRnJvbUluc3RydWN0aW9uKG9mZnNldCwgZGVzdCkKICAgICAgICAgbG9hZHAgb2Zm
c2V0ICogOFtQQiwgUEMsIDhdLCBkZXN0CiAgICAgZW5kCi0gICAgCisKICAgICBtYWNybyBzdG9y
ZXBUb0luc3RydWN0aW9uKHZhbHVlLCBvZmZzZXQpCiAgICAgICAgIHN0b3JlcCB2YWx1ZSwgb2Zm
c2V0ICogOFtQQiwgUEMsIDhdCiAgICAgZW5kCkBAIC0xMjIsNyArMTIyLDcgQEAgZWxzZQogICAg
IG1hY3JvIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihvZmZzZXQsIGRlc3QpCiAgICAgICAgIGxvYWRp
cyBvZmZzZXQgKiA0W1BDXSwgZGVzdAogICAgIGVuZAotICAgIAorCiAgICAgbWFjcm8gbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24ob2Zmc2V0LCBkZXN0KQogICAgICAgICBsb2FkcCBvZmZzZXQgKiA0W1BD
XSwgZGVzdAogICAgIGVuZApAQCAtNDQyLDcgKzQ0Miw3IEBAIGVuZAogCiBtYWNybyBhcnJheVBy
b2ZpbGUoY2VsbEFuZEluZGV4aW5nVHlwZSwgcHJvZmlsZSwgc2NyYXRjaCkKICAgICBjb25zdCBj
ZWxsID0gY2VsbEFuZEluZGV4aW5nVHlwZQotICAgIGNvbnN0IGluZGV4aW5nVHlwZSA9IGNlbGxB
bmRJbmRleGluZ1R5cGUgCisgICAgY29uc3QgaW5kZXhpbmdUeXBlID0gY2VsbEFuZEluZGV4aW5n
VHlwZQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc2NyYXRjaAogICAg
IHN0b3JlaSBzY3JhdGNoLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFtwcm9m
aWxlXQogICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0sIGluZGV4aW5nVHlw
ZQpAQCAtNTM4LDcgKzUzOCw3IEBAIGVsc2UKIGVuZAogCiAgICAgY29kZUJsb2NrU2V0dGVyKHQx
KQotICAgIAorCiAgICAgbW92ZVN0YWNrUG9pbnRlckZvckNvZGVCbG9jayh0MSwgdDIpCiAKICAg
ICAjIFNldCB1cCB0aGUgUEMuCkBAIC01ODIsNyArNTgyLDcgQEAgbWFjcm8gZnVuY3Rpb25Jbml0
aWFsaXphdGlvbihwcm9maWxlQXJnU2tpcCkKICAgICBlbmQKICAgICBiYWRkcG56IC04LCB0MCwg
LmFyZ3VtZW50UHJvZmlsZUxvb3AKIC5hcmd1bWVudFByb2ZpbGVEb25lOgotICAgICAgICAKKwog
ICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgogICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxs
ZWVSZWdpc3RlcnNbdDFdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV92bVt0MV0sIHQyCkBA
IC02MDIsMTggKzYwMiwxOCBAQCBtYWNybyBhbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvciwgc3Ry
dWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzbG93Q2FzZSkKICAgICBpZiBBTFdBWVNfQUxMT0NB
VEVfU0xPVwogICAgICAgICBqbXAgc2xvd0Nhc2UKICAgICBlbHNlCi0gICAgICAgIGNvbnN0IG9m
ZnNldE9mRmlyc3RGcmVlQ2VsbCA9IAotICAgICAgICAgICAgTWFya2VkQWxsb2NhdG9yOjptX2Zy
ZWVMaXN0ICsgCisgICAgICAgIGNvbnN0IG9mZnNldE9mRmlyc3RGcmVlQ2VsbCA9CisgICAgICAg
ICAgICBNYXJrZWRBbGxvY2F0b3I6Om1fZnJlZUxpc3QgKwogICAgICAgICAgICAgTWFya2VkQmxv
Y2s6OkZyZWVMaXN0OjpoZWFkCiAKLSAgICAgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBm
cmVlIGxpc3QuICAgCisgICAgICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0
LgogICAgICAgICBsb2FkcCBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbYWxsb2NhdG9yXSwgcmVzdWx0
CiAgICAgICAgIGJ0cHogcmVzdWx0LCBzbG93Q2FzZQotICAgICAgICAKKwogICAgICAgICAjIFJl
bW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KICAgICAgICAgbG9hZHAgW3Jlc3Vs
dF0sIHNjcmF0Y2gxCiAgICAgICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zmc2V0T2ZGaXJzdEZyZWVD
ZWxsW2FsbG9jYXRvcl0KLSAgICAKKwogICAgICAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4K
ICAgICAgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2J1dHRlcmZseVtyZXN1bHRdCiAgICAgICAg
IHN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKHJlc3VsdCwgc3RydWN0dXJlLCBzY3JhdGNoMSkK
QEAgLTc3OCwxMyArNzc4LDEzIEBAIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToK
ICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRf
dHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCiAgICAgZnVuY3Rpb25Jbml0aWFsaXph
dGlvbigwKQogICAgIGRpc3BhdGNoKDApCi0gICAgCisKIAogX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfcHJvbG9ndWU6CiAgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2Rl
QmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0KQogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKICAgICBkaXNwYXRjaCgw
KQotICAgIAorCiAKIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKICAgICBw
cm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2Nr
U2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9s
bGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQpAQCAtMTA4OCw3ICsxMDg4LDcgQEAgX2xs
aW50X29wX2NvbnN0cnVjdF92YXJhcmdzOgogCiBfbGxpbnRfb3BfY2FsbF9ldmFsOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKLSAgICAKKwogICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2Yg
dHdvIG1vZGVzOgogICAgICMKICAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52
b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCkBAIC0xMTIxLDcgKzExMjEsNyBAQCBfbGxp
bnRfb3BfY2FsbF9ldmFsOgogICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0
IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKICAgICAjIGFuZCBhIFBDIHRvIGNhbGws
IGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAogICAgICMgcmV0dXJu
cyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KLSAgICAKKwogICAgIHNsb3dQ
YXRoRm9yQ2FsbChfbGxpbnRfc2xvd19wYXRoX2NhbGxfZXZhbCkKIAogCkBAIC0xMTk5LDcgKzEx
OTksNyBAQCBfbGxpbnRfb3BfZGVidWc6CiAgICAgbG9hZGkgQ29kZUJsb2NrOjptX2RlYnVnZ2Vy
UmVxdWVzdHNbdDBdLCB0MAogICAgIGJ0aXogdDAsIC5vcERlYnVnRG9uZQogICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2RlYnVnKQotLm9wRGVidWdEb25lOiAgICAgICAgICAgICAg
ICAgICAgCisub3BEZWJ1Z0RvbmU6CiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC0xMjMyLDMgKzEy
MzIsMTEgQEAgZW5kCiBfbGxpbnRfb3BfaW5pdF9nbG9iYWxfY29uc3Rfbm9wOgogICAgIGRpc3Bh
dGNoKDUpCiAKK19sbGludF9vcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9m
aWRlbGl0eSkKKyAgICBkaXNwYXRjaCg0KQorCitfbGxpbnRfb3BfcHV0X3RvX3Njb3BlX3dpdGhf
cHJvZmlsZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSkKKyAgICBkaXNwYXRjaCg4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQppbmRleCA3MmU5MWFmLi4yMDI3ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjcwLDcgKzI3MCw3
IEBAIG1hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCB0ZW1wKQogICAgICAgICBzdG9y
ZXAgbHIsIDhbc3BdCiAgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSB0ZW1wCiAgICAgZWxzZQotICAg
ICAgICBhZGRwIDE2LCBzcCAKKyAgICAgICAgYWRkcCAxNiwgc3AKICAgICAgICAgY2FsbCB0ZW1w
CiAgICAgICAgIHN1YnAgMTYsIHNwCiAgICAgZW5kCkBAIC0zOTQsNyArMzk0LDcgQEAgbWFjcm8g
d3JpdGVCYXJyaWVyT25PcGVyYW5kKGNlbGxPcGVyYW5kKQogICAgIGlmIEdHQwogICAgICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oY2VsbE9wZXJhbmQsIHQxKQogICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlQ2VsbCh0MSwgdDIsIC53cml0ZUJhcnJpZXJEb25lKQotICAgICAgICBjaGVj
a01hcmtCeXRlKHQyLCB0MSwgdDMsIAorICAgICAgICBjaGVja01hcmtCeXRlKHQyLCB0MSwgdDMs
CiAgICAgICAgICAgICBtYWNybyhnY0RhdGEpCiAgICAgICAgICAgICAgICAgYnRibnogZ2NEYXRh
LCAud3JpdGVCYXJyaWVyRG9uZQogICAgICAgICAgICAgICAgIHB1c2ggUEIsIFBDCkBAIC00MTEs
NyArNDExLDcgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhjZWxsT3BlcmFuZCwgdmFs
dWVPcGVyYW5kKQogICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24odmFsdWVPcGVyYW5kLCB0
MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDEsIHQwLCAud3JpdGVCYXJy
aWVyRG9uZSkKICAgICAgICAgYnRweiB0MCwgLndyaXRlQmFycmllckRvbmUKLSAgICAKKwogICAg
ICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoY2VsbE9wZXJhbmQpCiAgICAgLndyaXRlQmFycmll
ckRvbmU6CiAgICAgZW5kCkBAIC00MjIsNyArNDIyLDcgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25H
bG9iYWxPYmplY3QodmFsdWVPcGVyYW5kKQogICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
dmFsdWVPcGVyYW5kLCB0MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDEs
IHQwLCAud3JpdGVCYXJyaWVyRG9uZSkKICAgICAgICAgYnRweiB0MCwgLndyaXRlQmFycmllckRv
bmUKLSAgICAKKwogICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDMKICAgICAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0M10sIHQzCiAgICAgICAgIGNoZWNrTWFya0J5
dGUodDMsIHQxLCB0MiwKQEAgLTQ4Miw3ICs0ODIsNyBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hl
Y2soZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICAjIHQxIHBvaW50cyB0byBBcml0eUNoZWNrRGF0
YS4KICAgICBsb2FkcCBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhOjp0aHVua1RvQ2Fs
bFt0MV0sIHQyCiAgICAgYnRweiB0MiwgLnByb2NlZWRJbmxpbmUKLSAgICAKKwogICAgIGxvYWRw
IENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0RhdGE6OnJldHVyblBDW3QxXSwgdDcKICAgICBs
b2FkcCBDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhOjpwYWRkZWRTdGFja1NwYWNlW3Qx
XSwgdDAKICAgICBjYWxsIHQyCkBAIC0xMDgzLDcgKzEwODMsNyBAQCBfbGxpbnRfb3BfaW5zdGFu
Y2VvZjoKICAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5j
ZW9mU2xvdwogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlQ2VsbCh0MCwgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQotICAgIAorCiAgICAg
IyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKICAgICBtb3ZlIDEs
IHQwCiAub3BJbnN0YW5jZW9mTG9vcDoKQEAgLTEyMjUsNyArMTIyNSw3IEBAIG1hY3JvIGdldEJ5
SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgICAgICAgICAgdmFsdWVQcm9maWxlKHNjcmF0Y2gs
IDgsIHQxKQogICAgICAgICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAgZW5kKQotICAgICAgICAg
ICAgCisKICAgICAub3BHZXRCeUlkU2xvdzoKICAgICAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAgICBkaXNwYXRjaCg5KQpAQCAtMTQwMiw3ICsxNDAy
LDcgQEAgX2xsaW50X29wX2dldF9ieV92YWw6CiAgICAgZmQycSBmdDAsIHQyCiAgICAgc3VicSB0
YWdUeXBlTnVtYmVyLCB0MgogICAgIGptcCAub3BHZXRCeVZhbERvbmUKLSAgICAKKwogLm9wR2V0
QnlWYWxOb3REb3VibGU6CiAgICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKICAgICBiaWEg
dDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRC
eVZhbFNsb3cKQEAgLTE2MTcsNyArMTYxNyw3IEBAIGVuZAogX2xsaW50X29wX2plcV9udWxsOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBlcXVhbE51bGwoCi0gICAgICAgIG1hY3JvIChzdHJ1
Y3R1cmUsIHZhbHVlLCB0YXJnZXQpIAorICAgICAgICBtYWNybyAoc3RydWN0dXJlLCB2YWx1ZSwg
dGFyZ2V0KQogICAgICAgICAgICAgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
Lm5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MAogICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0s
IHQwCkBAIC0xNjMwLDcgKzE2MzAsNyBAQCBfbGxpbnRfb3BfamVxX251bGw6CiBfbGxpbnRfb3Bf
am5lcV9udWxsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBlcXVhbE51bGwoCi0gICAgICAg
IG1hY3JvIChzdHJ1Y3R1cmUsIHZhbHVlLCB0YXJnZXQpIAorICAgICAgICBtYWNybyAoc3RydWN0
dXJlLCB2YWx1ZSwgdGFyZ2V0KQogICAgICAgICAgICAgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCwgdGFyZ2V0CiAgICAgICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAK
ICAgICAgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYmI4NWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyX2gKKyNkZWZpbmUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gKKworI2luY2x1
ZGUgIk9wZXJhbmRzLmgiCisjaW5jbHVkZSAiVHlwZVNldC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworICAgIGNsYXNzIFR5cGVTZXQ7CisKKworY2xhc3MgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
IHsKKworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBhbmFseXplQWxsVHlwZXMoT3BlcmFuZHM8
VHlwZVNldD4mLCBDb2RlQmxvY2sqKTsKKyAgICB2aXJ0dWFsIH5IaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIoKTsKK307CisKKworfSAvL25hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDVmOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1bXAu
Y3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisKKy8vI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1
bXAuaCIKKy8vCisvL3ZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcDo6YW5hbHl6ZUFs
bFR5cGVzKE9wZXJhbmRzPFR5cGVTZXQ+JiBvcGVyYW5kcywgQ29kZUJsb2NrKiBjb2RlQmxvY2sp
IG92ZXJyaWRlCisvL3sKKy8vICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGggPSBvcGVyYW5kcy5z
aXplKCk7IGkgPCBzaXplOyBpKyspIHsKKy8vICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgciA9IG9w
ZXJhbmRzLnZpcnR1YWxSZWdpc3RlckF0KGkpOworLy8gICAgICAgIFR5cGVTZXQmIHR5cGVTZXQg
PSBvcGVyYW5kcy5hdChpKTsKKy8vICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gY29kZUJsb2Nr
LT5uYW1lRm9yUmVnaXN0ZXIocikuYXNjaWkoKS5kYXRhKCk7CisvLyAgICAgICAgcHJpbnRmKCJy
ZWcgbmFtZT0lcywgdHlwZXM9JXMiLCBuYW1lLCB0eXBlU2V0LnNlZW5UeXBlcygpLmFzY2lpKCku
ZGF0YSgpKTsKKy8vICAgIH0gICAgICAgICAgIAorLy99CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJEdW1wLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVt
cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMDdjNzUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyRHVtcC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyNpZm5kZWYgSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyRHVtcF9oCisvLyNkZWZpbmUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyRHVtcF9oCisv
LworLy8jaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCisvLworLy9uYW1lc3Bh
Y2UgSlNDIHsKKy8vCisvL2NsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlckR1bXAgOiBIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIgeworLy8KKy8vICAgIHZvaWQgYW5hbHl6ZUFsbFR5cGVzKE9w
ZXJhbmRzPFR5cGVTZXQ+JiwgQ29kZUJsb2NrKikgb3ZlcnJpZGU7CisvLworLy99OworLy8KKy8v
CisvL30gLy9uYW1lc3BhY2UgSlNDCisvLworLy8jZW5kaWYgLy9IaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXJEdW1wX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXN1bHRzLy5y
dW5uZXIvTWFrZWZpbGUgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVzdWx0cy8ucnVubmVyL01h
a2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNGYwMmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVzdWx0cy8ucnVubmVyL01ha2Vm
aWxlCkBAIC0wLDAgKzEgQEAKK2FsbDogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVzdWx0cy8udm0vSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1Jlc291cmNlcy9qc2MgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVzdWx0cy8udm0vSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
L1Jlc291cmNlcy9qc2MKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMC4uNzQ0Nzgw
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXN1bHRzLy52bS9K
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUmVzb3VyY2VzL2pzYwpAQCAtMCwwICsxIEBACisvVm9s
dW1lcy9EYXRhL1dlYktpdC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
CmluZGV4IGRlMzg4ZTEuLjhlOGZmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIK
KyNpbmNsdWRlICJUeXBlU2V0LmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYjU4YTU3
Yi4uZDgzMTVjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5o
IgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJUeXBlU2V0LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45MzA2Mjk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKKworI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBIaWdoRmlkZWxpdHlMb2c6OmluaXRpYWxpemVIaWdo
RmlkZWxpdHlMb2coKQoreworICAgIG1faGlnaEZpZGVsaXR5TG9nU2l6ZSA9IDEwMDAwOworICAg
IG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQdHIgPSAoTG9nM1R1cGxlKiopIG1hbGxvYyhzaXplb2Yo
TG9nM1R1cGxlKikgKiBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUpOworICAgIExvZzNUdXBsZSoqIHB0
ciA9IG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQdHI7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsgaSsrKSB7CisgICAgICAgICpwdHIgPSBuZXcgTG9n
M1R1cGxlOyAKKyAgICAgICAgcHRyKys7CisgICAgfQorCisgICAgbV9oaWdoRmlkZWxpdHlMb2dD
dXJyZW50UHJvY2Vzc09mZnNldCA9IDA7Cit9CisKK0hpZ2hGaWRlbGl0eUxvZzo6fkhpZ2hGaWRl
bGl0eUxvZygpCit7CisgICAgTG9nM1R1cGxlKiogcHRyID0gbV9oaWdoRmlkZWxpdHlMb2dTdGFy
dFB0cjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsg
aSsrKSB7CisgICAgICAgIGRlbGV0ZSAqcHRyOworICAgICAgICBwdHIrKzsKKyAgICB9CisKKyAg
ICBmcmVlKG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQdHIpOworfQorCit2b2lkIEhpZ2hGaWRlbGl0
eUxvZzo6cmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2LCBUeXBlTG9j
YXRpb24qIGxvY2F0aW9uKQoreworICAgIEFTU0VSVChtX2hpZ2hGaWRlbGl0eUxvZ1N0YXJ0UHRy
KTsKKyAgICBBU1NFUlQobV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldCA8IG1f
aGlnaEZpZGVsaXR5TG9nU2l6ZSk7CisKKyAgICBMb2czVHVwbGUqIHR1cGxlID0gKihtX2hpZ2hG
aWRlbGl0eUxvZ1N0YXJ0UHRyICsgbV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNl
dCk7CisgICAgdHVwbGUtPmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgdHVwbGUtPnZhbHVlID0g
djsKKyAgICB0dXBsZS0+c3RydWN0dXJlSUQgPSAodi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0
cnVjdHVyZUlEKCkgOiAwKTsgLy8wIGlzIGludmFsaWQgc3RydWN0dXJlSUQKKworICAgIG1faGln
aEZpZGVsaXR5TG9nQ3VycmVudFByb2Nlc3NPZmZzZXQgKz0gMTsKKyAgICBpZiAobV9oaWdoRmlk
ZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldCA9PSBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUpCisg
ICAgICAgIHByb2Nlc3NIaWdoRmlkZWxpdHlMb2coKTsKK30KKwordm9pZCBIaWdoRmlkZWxpdHlM
b2c6OnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coKQoreworICAgIExvZzNUdXBsZSoqIHB0ciA9IG1f
aGlnaEZpZGVsaXR5TG9nU3RhcnRQdHI7CisgICAgc2l6ZV90IGkgPSAwOworICAgIHdoaWxlIChp
IDwgbV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldCkgeworICAgICAgICBMb2cz
VHVwbGUqIHR1cGxlID0gKnB0cjsKKyAgICAgICAgVHlwZVNldCogdHlwZVNldCA9IHR1cGxlLT5s
b2NhdGlvbi0+dHlwZVNldDsKKyAgICAgICAgLy9UT0RPOiBNYXliZSBhYnN0cmFjdCB0aGlzIGF3
YXkgaW4gSGVhcAorICAgICAgICB0eXBlU2V0LT5hZGRUeXBlRm9yVmFsdWUodHVwbGUtPnZhbHVl
LCB0dXBsZS0+c3RydWN0dXJlSUQgPyBIZWFwOjpoZWFwKHR1cGxlLT52YWx1ZSktPnN0cnVjdHVy
ZUlEVGFibGUoKS5nZXQodHVwbGUtPnN0cnVjdHVyZUlEKSA6IG51bGxwdHIpOworICAgICAgICBw
dHIrKzsKKyAgICAgICAgaSsrOworICAgIH0KKworICAgIG1faGlnaEZpZGVsaXR5TG9nQ3VycmVu
dFByb2Nlc3NPZmZzZXQgPSAwOworfQorCisKK30gLy9uYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZjZmNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaApAQCAtMCwwICsxLDc0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SGlnaEZpZGVsaXR5TG9nX2gKKyNkZWZpbmUgSGlnaEZpZGVsaXR5TG9nX2gKKworI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKKyNp
bmNsdWRlICJTdHJ1Y3R1cmUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICBjbGFzcyBUeXBl
TG9jYXRpb247CisKKworY2xhc3MgSGlnaEZpZGVsaXR5TG9nIHsKKworcHVibGljOgorCisgICAg
c3RydWN0IExvZzNUdXBsZSB7CisgICAgICAgIHB1YmxpYzoKKworICAgICAgICBKU1ZhbHVlIHZh
bHVlOworICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uOyAvL1R5cGVMb2NhdGlvbiogYXJl
IGFsbG9jYXRlZCBkdXJpbmcgbGluayB0aW1lIGluIGEgQ29kZUJsb2NrLiBUaGlzIGNvZGUgYXNz
dW1lcyB0aGF0IG5vIGNvZGUgYmxvY2tzIGRpZSBiZWZvcmUgd2UgcHJvY2VzcyB0aGUgbG9nLgor
ICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRDsKKyAgICB9OworCisgICAgSGlnaEZpZGVs
aXR5TG9nKCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKKyAg
ICB9CisKKyAgICB+SGlnaEZpZGVsaXR5TG9nKCk7CisKKyAgICB2b2lkIHJlY29yZFR5cGVJbmZv
cm1hdGlvbkZvckxvY2F0aW9uKEpTVmFsdWUgdiwgVHlwZUxvY2F0aW9uKik7CisgICAgdm9pZCBw
cm9jZXNzSGlnaEZpZGVsaXR5TG9nKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0aWFsaXpl
SGlnaEZpZGVsaXR5TG9nKCk7CisKKyAgICB1bnNpZ25lZCBtX2hpZ2hGaWRlbGl0eUxvZ1NpemU7
CisgICAgc2l6ZV90IG1faGlnaEZpZGVsaXR5TG9nQ3VycmVudFByb2Nlc3NPZmZzZXQ7CisgICAg
TG9nM1R1cGxlKiogbV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0cjsKKworfTsKKworfSAvL25hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vSGlnaEZpZGVsaXR5TG9nX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZDExZTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCisKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK1N0cmluZyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldFR5
cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgLCB1bnNp
Z25lZCAsIHVuc2lnbmVkICwgY29uc3QgU3RyaW5nJiAsIGludHB0cl90IHNvdXJjZUlEKQorewor
ICAgIGF1dG8gaXRlciA9IG1fZ2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwLmZpbmQoZ2V0TG9j
YXRpb25CYXNlZEhhc2goc291cmNlSUQsIHN0YXJ0TGluZSkpOworICAgIGF1dG8gZW5kID0gbV9n
bG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXAuZW5kKCk7CisgICAgaWYgKGl0ZXIgPT0gZW5kKSB7
IC8vbG9va3VwIGJ5IHNwZWNpZmljIGxvY2F0aW9uCisgICAgICAgIGF1dG8gaXRlciA9IG1fZ2xv
YmFsTG9jYXRpb25NYXAuZmluZChnZXRMb2NhdGlvbkJhc2VkSGFzaChzb3VyY2VJRCwgc3RhcnRM
aW5lKSk7CisgICAgICAgIGF1dG8gZW5kID0gbV9nbG9iYWxMb2NhdGlvbk1hcC5lbmQoKTsKKyAg
ICAgICAgLy9UT0RPOiB0aGlzIGFzc3NlcnRpb24gc2hvdWxkIGFsd2F5cyBob2xkLCBidXQgZG9l
c24ndAorICAgICAgICAvL0FTU0VSVChpdGVyICE9IGVuZCk7CisgICAgICAgIGlmIChpdGVyID09
IGVuZCkKKyAgICAgICAgICAgIHJldHVybiAgIiI7CisKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZh
bHVlLnNlZW5UeXBlcygpOworICAgIH0gZWxzZSB7IC8vbG9va3VwIGJ5IGdsb2JhbCBpZAorICAg
ICAgICBhdXRvIGl0ZXIyID0gbV9nbG9iYWxJRE1hcC5maW5kKGl0ZXItPnZhbHVlKTsKKyAgICAg
ICAgYXV0byBlbmQyID0gbV9nbG9iYWxJRE1hcC5lbmQoKTsKKyAgICAgICAgaWYgKGl0ZXIyID09
IGVuZDIpCisgICAgICAgICAgICByZXR1cm4gIiI7CisKKyAgICAgICAgcmV0dXJuIGl0ZXIyLT52
YWx1ZS5zZWVuVHlwZXMoKTsKKyAgICB9Cit9CisKK3ZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyOjptZXJnZUluVHlwZXNGb3JMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQorewor
ICAgIGlmIChsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCAhPSBIaWdoRmlkZWxpdHlOb0dsb2Jh
bElERXhpc3RzKSB7CisgICAgICAgIEFTU0VSVChtX2dsb2JhbElETWFwLmlzVmFsaWRLZXkobG9j
YXRpb24tPmdsb2JhbFZhcmlhYmxlSUQpKTsKKyAgICAgICAgYXV0byBpdGVyID0gbV9nbG9iYWxJ
RE1hcC5maW5kKGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlEKTsKKyAgICAgICAgYXV0byBlbmQg
PSBtX2dsb2JhbElETWFwLmVuZCgpOworICAgICAgICBUeXBlU2V0IHR5cGVTZXQgPSAqKGxvY2F0
aW9uLT50eXBlU2V0KTsKKyAgICAgICAgaWYgKGl0ZXIgIT0gZW5kKSAKKyAgICAgICAgICAgIHR5
cGVTZXQubWVyZ2VXaXRoVHlwZVNldChpdGVyLT52YWx1ZSk7CisKKyAgICAgICAgbV9nbG9iYWxJ
RE1hcC5zZXQobG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQsIHR5cGVTZXQpOworICAgIH0KKwor
ICAgIFN0cmluZyBoYXNoU3RyaW5nKGdldExvY2F0aW9uQmFzZWRIYXNoKGxvY2F0aW9uLT5zb3Vy
Y2VJRCwgbG9jYXRpb24tPmxpbmUpKTsKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dsb2JhbExv
Y2F0aW9uTWFwLmlzVmFsaWRLZXkoaGFzaFN0cmluZykpOworICAgICAgICBhdXRvIGl0ZXIgPSBt
X2dsb2JhbExvY2F0aW9uTWFwLmZpbmQoaGFzaFN0cmluZyk7CisgICAgICAgIGF1dG8gZW5kID0g
bV9nbG9iYWxMb2NhdGlvbk1hcC5lbmQoKTsKKyAgICAgICAgVHlwZVNldCB0eXBlU2V0ID0gKihs
b2NhdGlvbi0+dHlwZVNldCk7CisgICAgICAgIGlmIChpdGVyICE9IGVuZCkgCisgICAgICAgICAg
ICB0eXBlU2V0Lm1lcmdlV2l0aFR5cGVTZXQoaXRlci0+dmFsdWUpOworCisgICAgICAgIG1fZ2xv
YmFsTG9jYXRpb25NYXAuc2V0KGhhc2hTdHJpbmcsIHR5cGVTZXQpOworICAgIH0gCisKKyAgICBp
ZiAobG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQgIT0gSGlnaEZpZGVsaXR5Tm9HbG9iYWxJREV4
aXN0cykgLy9idWlsZCB0aGUgcmVsYXRpb25zaGlwIE1hcDpoYXNoU3RyaW5nPT5nbG9iYWxJZCwg
TWFwMjpnbG9iYWxJRD0+VHlwZVNldAorICAgICAgICBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJ
RE1hcC5zZXQoaGFzaFN0cmluZywgbG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQpOworCisKK30K
KworV1RGOjpTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRMb2NhdGlvbkJhc2Vk
SGFzaChpbnRwdHJfdCBpZCwgdW5zaWduZWQgbGluZSkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpu
dW1iZXIoaWQpICsgU3RyaW5nKCI6IikgKyBTdHJpbmc6Om51bWJlcihsaW5lKTsKK30KKworCit9
IC8vbmFtZXNwYWNlIEpTQworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjhlYmE1MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaApAQCAtMCwwICsxLDE3MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gKKyNkZWZpbmUgSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyX2gKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYg
eworICAgIGNsYXNzIFN0cmluZzsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICBjbGFzcyBU
eXBlTG9jYXRpb247CisKKworY2xhc3MgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyIHsKKworcHVi
bGljOgorCisKKyAgICBXVEY6OlN0cmluZyBnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNp
Z25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1
bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFdURjo6U3RyaW5nJiB2YXJpYWJsZU5hbWUsIGludHB0
cl90IHNvdXJjZUlEKTsKKyAgICB2b2lkIG1lcmdlSW5UeXBlc0ZvckxvY2F0aW9uKFR5cGVMb2Nh
dGlvbiopOworICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZ2V0TG9jYXRp
b25CYXNlZEhhc2goaW50cHRyX3QsIHVuc2lnbmVkKTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxX
VEY6OlN0cmluZywgVHlwZVNldD4gR2xvYmFsTG9jYXRpb25NYXA7IC8vKGZvciBub3csIGhhY2sg
aXQgYW5kIHNheSBNYXA6ICJJRDpMaW5lIiA9PiBUeXBlU2V0LiBPYnZpb3VzbHksIHRoaXMgYXNz
dW1lcyBhbGwgYXNzaWdubWVudHMgYXJlIG9uIGRpc2NyZXRlIGxpbmVzKS4KKyAgICB0eXBlZGVm
IEhhc2hNYXA8aW50NjRfdCwgVHlwZVNldD4gR2xvYmFsSURNYXA7IAorICAgIHR5cGVkZWYgSGFz
aE1hcDxXVEY6OlN0cmluZywgaW50NjRfdD4gR2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwOwor
CisgICAgR2xvYmFsSURNYXAgbV9nbG9iYWxJRE1hcDsKKyAgICBHbG9iYWxMb2NhdGlvbk1hcCBt
X2dsb2JhbExvY2F0aW9uTWFwOworICAgIEdsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcCBtX2ds
b2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
Y2xhc3MgTmVhcmVzdFRleHR1YWxCbG9jayB7CitwdWJsaWM6CisKKyAgICBOZWFyZXN0VGV4dHVh
bEJsb2NrKHVuc2lnbmVkIGludCBzdGFydExpbmUsIHVuc2lnbmVkIGludCBzdGFydENvbHVtbiwg
dW5zaWduZWQgaW50IGVuZExpbmUsIHVuc2lnbmVkIGludCBlbmRDb2x1bW4sIGludHB0cl90IHNv
dXJjZUlEKSAKKyAgICAgICAgOiBtX3RhcmdldFN0YXJ0TGluZShzdGFydExpbmUpCisgICAgICAg
ICwgbV90YXJnZXRTdGFydENvbHVtbihzdGFydENvbHVtbikKKyAgICAgICAgLCBtX3RhcmdldEVu
ZExpbmUoZW5kTGluZSkKKyAgICAgICAgLCBtX3RhcmdldEVuZENvbHVtbihlbmRDb2x1bW4pIAor
ICAgICAgICAsIG1fc291cmNlSUQoc291cmNlSUQpCisgICAgICAgICwgbV9mb3VuZEFUYXJnZXQo
ZmFsc2UpCisgICAgeworICAgIH0KKworICAgIHZvaWQgdXBkYXRlKHVuc2lnbmVkIHN0YXJ0TGlu
ZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENv
bHVtbiwgaW50cHRyX3Qgc291cmNlSUQsIFQgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgaWYgKHNv
dXJjZUlEICE9IG1fc291cmNlSUQpCisgICAgICAgICAgICByZXR1cm4gOworCisgICAgICAgIGlm
ICghZW5jbG9zZXNUYXJnZXRSYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBl
bmRDb2x1bW4pKSAKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoc3RhcnRMaW5l
ID4gbV9zdGFydExpbmUgfHwgKHN0YXJ0TGluZSA9PSBtX3N0YXJ0TGluZSAmJiBzdGFydENvbHVt
biA+IG1fc3RhcnRDb2x1bW4pKSB7CisgICAgICAgICAgICBtX3RhcmdldCA9IHRhcmdldDsKKyAg
ICAgICAgICAgIG1fc3RhcnRMaW5lID0gc3RhcnRMaW5lOworICAgICAgICAgICAgbV9zdGFydENv
bHVtbiA9IHN0YXJ0Q29sdW1uOworICAgICAgICAgICAgbV9lbmRMaW5lID0gZW5kTGluZTsKKyAg
ICAgICAgICAgIG1fZW5kQ29sdW1uID0gZW5kQ29sdW1uOworICAgICAgICAgICAgbV9mb3VuZEFU
YXJnZXQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgVCYgYmVzdFRhcmdldCgpIHsg
cmV0dXJuIG1fdGFyZ2V0OyB9CisgICAgYm9vbCBmb3VuZEFUYXJnZXQoKSB7IHJldHVybiBtX2Zv
dW5kQVRhcmdldDsgfQorCitwcml2YXRlOgorCisgICAgdW5zaWduZWQgbV9zdGFydExpbmUgPSAw
OworICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW4gPSAwOworICAgIHVuc2lnbmVkIG1fZW5kTGlu
ZSA9IFVJTlRfTUFYOworICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uID0gVUlOVF9NQVg7CisKKyAg
ICB1bnNpZ25lZCBtX3RhcmdldFN0YXJ0TGluZTsKKyAgICB1bnNpZ25lZCBtX3RhcmdldFN0YXJ0
Q29sdW1uOworICAgIHVuc2lnbmVkIG1fdGFyZ2V0RW5kTGluZTsKKyAgICB1bnNpZ25lZCBtX3Rh
cmdldEVuZENvbHVtbjsKKworICAgIGludHB0cl90IG1fc291cmNlSUQ7CisKKyAgICBib29sIG1f
Zm91bmRBVGFyZ2V0OworICAgIFQgbV90YXJnZXQ7CisKKworICAgIGJvb2wgZW5jbG9zZXNUYXJn
ZXRSYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4pCisgICAgeworICAgICAgIC8vZW5zdXJlIHdl
IGhhdmUgc29tZXRoaW5nIGxpa2UgdGhpcyB3aXRoIHRoZSBmaXJzdCBjb21wYXJpc29uCisgICAg
ICAgLy9mdW5jdGlvbiBjaGVjaygpIHsKKyAgICAgICAvLyAgICBmdW5jdGlvbiB0YXJnZXQoKSB7
CisgICAgICAgLy8gICAgfQorICAgICAgIC8vfQorICAgICAgIC8vCisgICAgICAgLy9vciB0aGlz
OgorICAgICAgIC8vZnVuY3Rpb24gY2hlY2soKSB7IGZ1bmN0aW9uIHRhcmdldCgpe30gfQorICAg
ICAgIC8vCisgICAgICAgLy9vciBhIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28KKyAgICAgICAKKyAg
ICAgICBpZiAoIShzdGFydExpbmUgPD0gbV90YXJnZXRTdGFydExpbmUgJiYgZW5kTGluZSA+PSBt
X3RhcmdldEVuZExpbmUpKQorICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICBpZiAo
c3RhcnRMaW5lIDwgbV90YXJnZXRTdGFydExpbmUpIHsKKyAgICAgICAgICAgaWYgKGVuZExpbmUg
PiBtX3RhcmdldEVuZExpbmUpCisgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICAgICBBU1NFUlQoZW5kTGluZSA9PSBtX3RhcmdldEVuZExpbmUpOworCisgICAgICAgICAgIGlm
IChlbmRDb2x1bW4gPj0gbV90YXJnZXRFbmRDb2x1bW4pCisgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAgICBBU1NFUlQoZW5kQ29sdW1uIDwgbV90YXJnZXRFbmRDb2x1bW4p
OworICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgfQorCisgICAgICAgQVNTRVJUKHN0
YXJ0TGluZSA9PSBtX3RhcmdldFN0YXJ0TGluZSk7CisKKyAgICAgICBpZiAoc3RhcnRDb2x1bW4g
PD0gbV90YXJnZXRTdGFydENvbHVtbikgeworCisgICAgICAgICAgIGlmIChlbmRMaW5lID4gbV90
YXJnZXRFbmRMaW5lKQorICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgIAor
ICAgICAgICAgICBBU1NFUlQoZW5kTGluZSA9PSBtX3RhcmdldEVuZExpbmUpOworCisgICAgICAg
ICAgIGlmIChlbmRDb2x1bW4gPj0gbV90YXJnZXRFbmRDb2x1bW4pIAorICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgQVNTRVJUKGVuZENvbHVtbiA8IG1fdGFyZ2V0RW5k
Q29sdW1uKTsKKyAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgIH0gCisKKyAgICAgICBB
U1NFUlQoc3RhcnRDb2x1bW4gPiBtX3RhcmdldFN0YXJ0Q29sdW1uKTsKKyAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfTsKKworCit9IC8vbmFtZXNwYWNlIEpTQworCisKKyNlbmRpZiAvL0hp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5MTQ3MWFhLi43M2E3OWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0y
NDUsOSArMjQ1LDkgQEAgSlNHbG9iYWxPYmplY3Q6Ok5ld0dsb2JhbFZhciBKU0dsb2JhbE9iamVj
dDo6YWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImIGlkZW4KICAgICBpZiAoY29uc3RhbnRN
b2RlID09IElzVmFyaWFibGUpCiAgICAgICAgIG5ld0VudHJ5LnByZXBhcmVUb1dhdGNoKHN5bWJv
bFRhYmxlKCkpOwogICAgIFN5bWJvbFRhYmxlOjpNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1i
b2xUYWJsZSgpLT5hZGQobG9ja2VyLCBpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKLSAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpCisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
IGFkZFJlZ2lzdGVycygxKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIGluZGV4ID0g
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXRJbmRleCgpOwogICAgIE5ld0dsb2JhbFZhciB2YXI7
CiAgICAgdmFyLnJlZ2lzdGVyTnVtYmVyID0gaW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuY3BwCmluZGV4IDk2MWZkZWMuLjdhOWEwZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC0yNjAsNiArMjYwLDcgQEAgc3RhdGlj
IHZvaWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiAgICAgd2hpbGUgKChzdGF0aWNfY2Fz
dDxpbnQ2NF90PihPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgp
KSA8PCAoT3B0aW9uczo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgoKSArIDEpKSA8PSBz
dGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkp
CiAgICAgICAgIE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KCkrKzsKIAor
ICAgIE9wdGlvbnM6OnByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSA9IHRydWU7CiAgICAg
QVNTRVJUKChzdGF0aWNfY2FzdDxpbnQ2NF90PihPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6
ZUFmdGVyTG9uZ1dhcm1VcCgpKSA8PCBPcHRpb25zOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRl
ck1heCgpKSA+IDApOwogICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oT3B0aW9uczo6
dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSkgPDwgT3B0aW9uczo6cmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50ZXJNYXgoKSkgPD0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAppbmRleCBjOWU4MTM0Li4xYjMyOWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0yNjksNyArMjY5LDkgQEAgdHlwZWRlZiBjb25z
dCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihib29sLCBkaXNhYmxlR0MsIGZhbHNlKSBcCiAg
ICAgdih1bnNpZ25lZCwgZ2NNYXhIZWFwU2l6ZSwgMCkgXAogICAgIHYoYm9vbCwgcmVjb3JkR0NQ
YXVzZVRpbWVzLCBmYWxzZSkgXAotICAgIHYoYm9vbCwgbG9nSGVhcFN0YXRpc3RpY3NBdEV4aXQs
IGZhbHNlKQorICAgIHYoYm9vbCwgbG9nSGVhcFN0YXRpc3RpY3NBdEV4aXQsIGZhbHNlKSBcCisg
ICAgdihib29sLCBwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5LCBmYWxzZSkKKyAgICAKIAog
Y2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAppbmRleCBhMmQxNzFmLi41ZDY4ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEwNTgsNiArMTA1OCwzOCBAQCBib29s
IFN0cnVjdHVyZTo6cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKFZNJiB2bSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TgogICAgIH0KIH0KIAorCitTdHJ1Y3R1cmVTaGFwZSBTdHJ1Y3R1
cmU6OnRvU3RydWN0dXJlU2hhcGUoKQoreworICAgIFZlY3RvcjxTdHJ1Y3R1cmUqLCA4PiBzdHJ1
Y3R1cmVzOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgIFByb3BlcnR5VGFibGUqIHRh
YmxlOworICAgIFN0cnVjdHVyZVNoYXBlIHJlcHJlc2VudGF0aW9uOworCisgICAgZmluZFN0cnVj
dHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oc3RydWN0dXJlcywgc3RydWN0dXJlLCB0YWJs
ZSk7CisgICAgCisgICAgaWYgKHRhYmxlKSB7CisgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJh
dG9yIGl0ZXIgPSB0YWJsZS0+YmVnaW4oKTsKKyAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0
b3IgZW5kID0gdGFibGUtPmVuZCgpOworCisgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytp
dGVyKSB7CisgICAgICAgICAgICByZXByZXNlbnRhdGlvbi5tX3Byb3BlcnRpZXMuYXBwZW5kKGl0
ZXItPmtleSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0cnVjdHVyZS0+bV9sb2Nr
LnVubG9jaygpOworICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdHJ1Y3R1cmVz
LnNpemUoKTsgaS0tOykgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0cnVjdHVy
ZXNbaV07CisgICAgICAgIGlmICghc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgcmVwcmVzZW50YXRpb24ubV9wcm9wZXJ0aWVzLmFw
cGVuZChzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0KCkpOworICAgIH0KKworICAgIHJl
dHVybiByZXByZXNlbnRhdGlvbjsKK30KKwogdm9pZCBTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwg
Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAppbmRleCAzMWU2Y2RkLi45OGVkODk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
IlN0cnVjdHVyZUlEQmxvYi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgiCisjaW5jbHVkZSAiVHlwZVNldC5oIgog
I2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVk
ZSAiV2Vhay5oIgpAQCAtMzgxLDYgKzM4Miw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0OwogICAgIH0KKworICAgIFN0cnVjdHVyZVNo
YXBlIHRvU3RydWN0dXJlU2hhcGUoKTsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4
dCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
Y3BwCmluZGV4IGY2MGM4NmEuLjkwZmVhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0Rl
c3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJT
bG90VmlzaXRvcklubGluZXMuaCIKKy8vI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
ci5oIgogI2luY2x1ZGUgIlZhcmlhYmxlV2F0Y2hwb2ludFNldElubGluZXMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0xNDksNyArMTUwLDkgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpj
bG9uZUNhcHR1cmVkTmFtZXMoVk0mIHZtKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IHJlc3VsdC0+bV9tYXAuYWRkKAogICAgICAgICAgICAgaXRlci0+a2V5LAotICAgICAgICAgICAg
U3ltYm9sVGFibGVFbnRyeShpdGVyLT52YWx1ZS5nZXRJbmRleCgpLCBpdGVyLT52YWx1ZS5nZXRB
dHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgICAgIC8vaXRlci0+dmFsdWUpOworICAgICAgICAgICAg
U3ltYm9sVGFibGVFbnRyeShpdGVyLT52YWx1ZSkpOworICAgICAgICAgICAgLy9PUklHSU5BTDog
U3ltYm9sVGFibGVFbnRyeShpdGVyLT52YWx1ZS5nZXRJbmRleCgpLCBpdGVyLT52YWx1ZS5nZXRB
dHRyaWJ1dGVzKCkpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKG1fc2xvd0FyZ3VtZW50cykgewpA
QCAtMTU3LDkgKzE2MCwzMyBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNsb25lQ2FwdHVy
ZWROYW1lcyhWTSYgdm0pCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHBhcmFtZXRlckNvdW50
KCk7IGktLTspCiAgICAgICAgICAgICByZXN1bHQtPm1fc2xvd0FyZ3VtZW50c1tpXSA9IG1fc2xv
d0FyZ3VtZW50c1tpXTsKICAgICB9CisKKyAgICByZXN1bHQtPm1fdW5pcXVlSURNYXAgPSBtX3Vu
aXF1ZUlETWFwOworICAgIHJlc3VsdC0+bV9yZWdpc3RlclRvVmFyaWFibGVNYXAgPSBtX3JlZ2lz
dGVyVG9WYXJpYWJsZU1hcDsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitpbnQ2NF90
IFN5bWJvbFRhYmxlOjp1bmlxdWVJREZvclZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2Nr
ZXImLCBTdHJpbmdJbXBsKiBrZXksIFZNJiB2bSkKK3sKKyAgICBhdXRvIGl0ZXIgPSBtX3VuaXF1
ZUlETWFwLmZpbmQoa2V5KTsKKyAgICBhdXRvIGVuZCA9IG1fdW5pcXVlSURNYXAuZW5kKCk7Cisg
ICAgQVNTRVJUKGl0ZXIgIT0gZW5kKTsKKworICAgIGludDY0X3QmIGlkID0gaXRlci0+dmFsdWU7
CisgICAgaWYgKGlkID09IEhpZ2hGaWRlbGl0eU5lZWRzVW5pcXVlSURHZW5lcmF0aW9uKSAKKyAg
ICAgICAgaWQgPSB2bS5nZXROZXh0VW5pcXVlVmFyaWFibGVJRCgpOworCisgICAgcmV0dXJuIGlk
OworfQorCitpbnQ2NF90IFN5bWJvbFRhYmxlOjp1bmlxdWVJREZvclJlZ2lzdGVyKGNvbnN0IENv
bmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgaW50IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSkKK3sK
KyAgICBhdXRvIGl0ZXIgPSBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcC5maW5kKHJlZ2lzdGVySW5k
ZXgpOworICAgIGF1dG8gZW5kID0gbV9yZWdpc3RlclRvVmFyaWFibGVNYXAuZW5kKCk7CisgICAg
QVNTRVJUKGl0ZXIgIT0gZW5kKTsKKyAgICByZXR1cm4gdW5pcXVlSURGb3JWYXJpYWJsZShsb2Nr
ZXIsIGl0ZXItPnZhbHVlLmdldCgpLCB2bSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAppbmRleCA1YWMyZTQx
Li4zM2FmOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJWYXJpYWJsZVdhdGNocG9pbnRTZXQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL0hhc2hUcmFpdHMuaD4KQEAgLTk1LDEyICs5NiwxMiBAQCBzdHJ1Y3QgU3ltYm9sVGFibGVF
bnRyeSB7CiAgICAgICAgICAgICA6IG1fYml0cyhTbGltRmxhZykKICAgICAgICAgewogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIEFMV0FZU19JTkxJTkUgRmFzdChjb25zdCBTeW1ib2xU
YWJsZUVudHJ5JiBlbnRyeSkKICAgICAgICAgICAgIDogbV9iaXRzKGVudHJ5LmJpdHMoKSkKICAg
ICAgICAgewogICAgICAgICB9Ci0gICAgCisKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdAog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gIShtX2JpdHMgJiB+U2xpbUZsYWcpOwpAQCAt
MTEwLDEyICsxMTEsMTIgQEAgc3RydWN0IFN5bWJvbFRhYmxlRW50cnkgewogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2JpdHMgPj4gRmxhZ0JpdHMpOwog
ICAgICAgICB9Ci0gICAgCisKICAgICAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIFJlYWRPbmx5RmxhZzsKICAgICAgICAg
fQotICAgICAgICAKKwogICAgICAgICB1bnNpZ25lZCBnZXRBdHRyaWJ1dGVzKCkgY29uc3QKICAg
ICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7CkBAIC0xMzAsNyAr
MTMxLDcgQEAgc3RydWN0IFN5bWJvbFRhYmxlRW50cnkgewogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gIShtX2JpdHMgJiBTbGltRmxhZyk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAg
ICBwcml2YXRlOgogICAgICAgICBmcmllbmQgc3RydWN0IFN5bWJvbFRhYmxlRW50cnk7CiAgICAg
ICAgIGludHB0cl90IG1fYml0czsKQEAgLTE1NCwxOCArMTU1LDE4IEBAIHN0cnVjdCBTeW1ib2xU
YWJsZUVudHJ5IHsKICAgICAgICAgQVNTRVJUKGlzVmFsaWRJbmRleChpbmRleCkpOwogICAgICAg
ICBwYWNrKGluZGV4LCBhdHRyaWJ1dGVzICYgUmVhZE9ubHksIGF0dHJpYnV0ZXMgJiBEb250RW51
bSk7CiAgICAgfQotICAgIAorCiAgICAgflN5bWJvbFRhYmxlRW50cnkoKQogICAgIHsKICAgICAg
ICAgZnJlZUZhdEVudHJ5KCk7CiAgICAgfQotICAgIAorCiAgICAgU3ltYm9sVGFibGVFbnRyeShj
b25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikKICAgICAgICAgOiBtX2JpdHMoU2xpbUZsYWcp
CiAgICAgewogICAgICAgICAqdGhpcyA9IG90aGVyOwogICAgIH0KLSAgICAKKwogICAgIFN5bWJv
bFRhYmxlRW50cnkmIG9wZXJhdG9yPShjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBvdGhlcikKICAg
ICB7CiAgICAgICAgIGlmIChVTkxJS0VMWShvdGhlci5pc0ZhdCgpKSkKQEAgLTE3NCw3ICsxNzUs
NyBAQCBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7CiAgICAgICAgIG1fYml0cyA9IG90aGVyLm1f
Yml0czsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhKGJpdHMoKSAmIH5TbGltRmxhZyk7
CkBAIC0xODQsMTIgKzE4NSwxMiBAQCBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7CiAgICAgewog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihiaXRzKCkgPj4gRmxhZ0JpdHMpOwogICAg
IH0KLSAgICAKKwogICAgIEFMV0FZU19JTkxJTkUgRmFzdCBnZXRGYXN0KCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBGYXN0KCp0aGlzKTsKICAgICB9Ci0gICAgCisKICAgICBBTFdBWVNf
SU5MSU5FIEZhc3QgZ2V0RmFzdChib29sJiB3YXNGYXQpIGNvbnN0CiAgICAgewogICAgICAgICBG
YXN0IHJlc3VsdDsKQEAgLTIwMCw3ICsyMDEsNyBAQCBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7
CiAgICAgICAgICAgICByZXN1bHQubV9iaXRzID0gbV9iaXRzOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KLSAgICAKKwogICAgIHVuc2lnbmVkIGdldEF0dHJpYnV0ZXMoKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIGdldEZhc3QoKS5nZXRBdHRyaWJ1dGVzKCk7CkBAIC0yMTUs
MzQgKzIxNiwzNCBAQCBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7CiAgICAgewogICAgICAgICBy
ZXR1cm4gYml0cygpICYgUmVhZE9ubHlGbGFnOwogICAgIH0KLSAgICAKKwogICAgIEpTVmFsdWUg
aW5mZXJyZWRWYWx1ZSgpOwotICAgIAorCiAgICAgdm9pZCBwcmVwYXJlVG9XYXRjaChTeW1ib2xU
YWJsZSopOwotICAgIAorCiAgICAgdm9pZCBhZGRXYXRjaHBvaW50KFdhdGNocG9pbnQqKTsKLSAg
ICAKKwogICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCgpCiAgICAgewog
ICAgICAgICBpZiAoIWlzRmF0KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0
dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7CiAgICAgfQotICAgIAorCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIG5vdGlmeVdyaXRlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBub3RpZnlXcml0ZVNsb3codm0sIHZhbHVlKTsKICAgICB9Ci0gICAgCisKIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IFNsaW1GbGFnID0gMHgxOwogICAgIHN0YXRp
YyBjb25zdCBpbnRwdHJfdCBSZWFkT25seUZsYWcgPSAweDI7CiAgICAgc3RhdGljIGNvbnN0IGlu
dHB0cl90IERvbnRFbnVtRmxhZyA9IDB4NDsKICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgTm90
TnVsbEZsYWcgPSAweDg7CiAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IEZsYWdCaXRzID0gNDsK
LSAgICAKKwogICAgIGNsYXNzIEZhdEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgpAQCAtMjUwLDU1ICsyNTEsNTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIDogbV9iaXRzKGJpdHMgJiB+U2xpbUZsYWcpCiAgICAgICAgIHsKICAgICAgICAgfQot
ICAgICAgICAKKwogICAgICAgICBpbnRwdHJfdCBtX2JpdHM7IC8vIGFsd2F5cyBoYXMgRmF0Rmxh
ZyBzZXQgYW5kIGV4YWN0bHkgbWF0Y2hlcyB3aGF0IHRoZSBiaXRzIHdvdWxkIGhhdmUgYmVlbiBp
ZiB0aGlzIHdhc24ndCBmYXQuCi0gICAgICAgIAogICAgICAgICBSZWZQdHI8VmFyaWFibGVXYXRj
aHBvaW50U2V0PiBtX3dhdGNocG9pbnRzOwogICAgIH07Ci0gICAgCisKICAgICBTeW1ib2xUYWJs
ZUVudHJ5JiBjb3B5U2xvdyhjb25zdCBTeW1ib2xUYWJsZUVudHJ5Jik7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBub3RpZnlXcml0ZVNsb3coVk0mLCBKU1ZhbHVlKTsKLSAgICAKKwogICAg
IGJvb2wgaXNGYXQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICEobV9iaXRzICYgU2xp
bUZsYWcpOwogICAgIH0KLSAgICAKKwogICAgIGNvbnN0IEZhdEVudHJ5KiBmYXRFbnRyeSgpIGNv
bnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CiAgICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8Y29uc3QgRmF0RW50cnkqPihtX2JpdHMpOwogICAgIH0KLSAgICAKKwogICAgIEZh
dEVudHJ5KiBmYXRFbnRyeSgpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNGYXQoKSk7CiAgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RmF0RW50cnkqPihtX2JpdHMpOwogICAgIH0KLSAgICAK
KwogICAgIEZhdEVudHJ5KiBpbmZsYXRlKCkKICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkoaXNG
YXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKTsKICAgICAgICAgcmV0dXJuIGlu
ZmxhdGVTbG93KCk7CiAgICAgfQotICAgIAorCiAgICAgRmF0RW50cnkqIGluZmxhdGVTbG93KCk7
Ci0gICAgCisKICAgICBBTFdBWVNfSU5MSU5FIGludHB0cl90IGJpdHMoKSBjb25zdAogICAgIHsK
ICAgICAgICAgaWYgKGlzRmF0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV9i
aXRzOwogICAgICAgICByZXR1cm4gbV9iaXRzOwogICAgIH0KLSAgICAKKwogICAgIEFMV0FZU19J
TkxJTkUgaW50cHRyX3QmIGJpdHMoKQogICAgIHsKICAgICAgICAgaWYgKGlzRmF0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV9iaXRzOwogICAgICAgICByZXR1cm4gbV9iaXRz
OwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgZnJlZUZhdEVudHJ5KCkKICAgICB7CiAgICAgICAg
IGlmIChMSUtFTFkoIWlzRmF0KCkpKQpAQCAtMzE4LDcgKzMxOCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmIChkb250RW51bSkKICAgICAgICAgICAgIGJpdHNSZWYgfD0gRG9udEVudW1GbGFnOwog
ICAgIH0KLSAgICAKKwogICAgIGJvb2wgaXNWYWxpZEluZGV4KGludCBpbmRleCkKICAgICB7CiAg
ICAgICAgIHJldHVybiAoKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgRmxhZ0JpdHMp
ID4+IEZsYWdCaXRzKSA9PSBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpOwpAQCAtMzM2LDYg
KzMzNiw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgU3ltYm9sVGFibGVFbnRyeSwgSWRlbnRpZmll
clJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFN0cmluZ0ltcGw+PiwgU3ltYm9sVGFibGVJbmRl
eEhhc2hUcmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+
LCBpbnQ2NF90PiBVbmlxdWVJRE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8
U3RyaW5nSW1wbD4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPGludD4+IFJlZ2lzdGVyVG9WYXJpYWJsZU1hcDsKIAogICAgIHN0YXRpYyBTeW1i
b2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKICAgICB7CkBAIC0zNTcsOTMgKzM1OSwxMDYgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWFwLmZpbmQoa2V5KTsKICAgICB9Ci0gICAg
CisKICAgICBNYXA6Oml0ZXJhdG9yIGZpbmQoY29uc3QgR0NTYWZlQ29uY3VycmVudEpJVExvY2tl
ciYsIFN0cmluZ0ltcGwqIGtleSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX21hcC5maW5kKGtl
eSk7CiAgICAgfQotICAgIAorCiAgICAgU3ltYm9sVGFibGVFbnRyeSBnZXQoY29uc3QgQ29uY3Vy
cmVudEpJVExvY2tlciYsIFN0cmluZ0ltcGwqIGtleSkKICAgICB7CiAgICAgICAgIHJldHVybiBt
X21hcC5nZXQoa2V5KTsKICAgICB9Ci0gICAgCisKICAgICBTeW1ib2xUYWJsZUVudHJ5IGdldChT
dHJpbmdJbXBsKiBrZXkpCiAgICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihtX2xvY2spOwogICAgICAgICByZXR1cm4gZ2V0KGxvY2tlciwga2V5KTsKICAgICB9Ci0gICAg
CisKICAgICBTeW1ib2xUYWJsZUVudHJ5IGlubGluZUdldChjb25zdCBDb25jdXJyZW50SklUTG9j
a2VyJiwgU3RyaW5nSW1wbCoga2V5KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWFwLmlubGlu
ZUdldChrZXkpOwogICAgIH0KLSAgICAKKwogICAgIFN5bWJvbFRhYmxlRW50cnkgaW5saW5lR2V0
KFN0cmluZ0ltcGwqIGtleSkKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CiAgICAgICAgIHJldHVybiBpbmxpbmVHZXQobG9ja2VyLCBrZXkpOwogICAg
IH0KLSAgICAKKwogICAgIE1hcDo6aXRlcmF0b3IgYmVnaW4oY29uc3QgQ29uY3VycmVudEpJVExv
Y2tlciYpCiAgICAgewogICAgICAgICByZXR1cm4gbV9tYXAuYmVnaW4oKTsKICAgICB9Ci0gICAg
CisKICAgICBNYXA6Oml0ZXJhdG9yIGVuZChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJikKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX21hcC5lbmQoKTsKICAgICB9Ci0gICAgCisKICAgICBNYXA6
Oml0ZXJhdG9yIGVuZChjb25zdCBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2VyJikKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX21hcC5lbmQoKTsKICAgICB9Ci0gICAgCisKICAgICBzaXplX3Qgc2l6
ZShjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBtX21hcC5zaXplKCk7CiAgICAgfQotICAgIAorCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdAog
ICAgIHsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAg
ICAgcmV0dXJuIHNpemUobG9ja2VyKTsKICAgICB9Ci0gICAgCisKICAgICBNYXA6OkFkZFJlc3Vs
dCBhZGQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIFN0cmluZ0ltcGwqIGtleSwgY29uc3Qg
U3ltYm9sVGFibGVFbnRyeSYgZW50cnkpCiAgICAgeworICAgICAgICAvL3VzZSAtMSBhcyBhIGZs
YWcgdG8gaW5kaWNhdGUgd2UgbmVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIElEIGJlY2F1c2Ugd2Ug
bmVlZCB0aGUgVk0gdG8gZG8gdGhpcy4gCisgICAgICAgIC8vV2hlbiBsaW5raW5nLCB3ZSBjYW4g
cHJvZHVjZSB0aGlzIHVuaXF1ZSBJRCBhcyB3ZSBoYXZlIGFjY2VzcyB0byBWTQorICAgICAgICBp
ZiAoT3B0aW9uczo6cHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgICAg
ICBtX3VuaXF1ZUlETWFwLnNldChrZXksIEhpZ2hGaWRlbGl0eU5lZWRzVW5pcXVlSURHZW5lcmF0
aW9uKTsgCisgICAgICAgICAgICBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcC5zZXQoZW50cnkuZ2V0
SW5kZXgoKSwga2V5KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGtleSwg
ZW50cnkpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgYWRkKFN0cmluZ0ltcGwqIGtleSwgY29u
c3QgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkpCiAgICAgewogICAgICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBhZGQobG9ja2VyLCBrZXksIGVudHJ5KTsK
ICAgICB9Ci0gICAgCisKICAgICBNYXA6OkFkZFJlc3VsdCBzZXQoY29uc3QgQ29uY3VycmVudEpJ
VExvY2tlciYsIFN0cmluZ0ltcGwqIGtleSwgY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkp
CiAgICAgeworICAgICAgICBpZiAoT3B0aW9uczo6cHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0
eSgpKSB7CisgICAgICAgICAgICBtX3VuaXF1ZUlETWFwLnNldChrZXksIEhpZ2hGaWRlbGl0eU5l
ZWRzVW5pcXVlSURHZW5lcmF0aW9uKTsgCisgICAgICAgICAgICBtX3JlZ2lzdGVyVG9WYXJpYWJs
ZU1hcC5zZXQoZW50cnkuZ2V0SW5kZXgoKSwga2V5KTsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm4gbV9tYXAuc2V0KGtleSwgZW50cnkpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgc2V0KFN0
cmluZ0ltcGwqIGtleSwgY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkpCiAgICAgewogICAg
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBzZXQobG9j
a2VyLCBrZXksIGVudHJ5KTsKICAgICB9Ci0gICAgCisKICAgICBib29sIGNvbnRhaW5zKGNvbnN0
IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXkpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9tYXAuY29udGFpbnMoa2V5KTsKICAgICB9Ci0gICAgCisKICAgICBib29sIGNvbnRh
aW5zKFN0cmluZ0ltcGwqIGtleSkKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CiAgICAgICAgIHJldHVybiBjb250YWlucyhsb2NrZXIsIGtleSk7CiAg
ICAgfQotICAgIAorCisgICAgaW50NjRfdCB1bmlxdWVJREZvclZhcmlhYmxlKGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXksIFZNJiB2bSk7CisgICAgaW50NjRfdCB1
bmlxdWVJREZvclJlZ2lzdGVyKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgaW50
IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSk7CisKICAgICBib29sIHVzZXNOb25TdHJpY3RFdmFsKCkg
eyByZXR1cm4gbV91c2VzTm9uU3RyaWN0RXZhbDsgfQogICAgIHZvaWQgc2V0VXNlc05vblN0cmlj
dEV2YWwoYm9vbCB1c2VzTm9uU3RyaWN0RXZhbCkgeyBtX3VzZXNOb25TdHJpY3RFdmFsID0gdXNl
c05vblN0cmljdEV2YWw7IH0KIApAQCAtNDU0LDcgKzQ2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENhcHR1cmVFbmQoaW50IGNhcHR1cmVFbmQpIHsgbV9jYXB0dXJlRW5kID0gY2FwdHVyZUVu
ZDsgfQogCiAgICAgaW50IGNhcHR1cmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIC0obV9jYXB0dXJl
RW5kIC0gbV9jYXB0dXJlU3RhcnQpOyB9Ci0gICAgCisKICAgICBib29sIGlzQ2FwdHVyZWQoaW50
IG9wZXJhbmQpCiAgICAgewogICAgICAgICByZXR1cm4gb3BlcmFuZCA8PSBjYXB0dXJlU3RhcnQo
KSAmJiBvcGVyYW5kID4gY2FwdHVyZUVuZCgpOwpAQCAtNDY3LDcgKzQ4Miw3IEBAIHB1YmxpYzoK
ICAgICAvLyAwIGlmIHdlIGRvbid0IGNhcHR1cmUgYW55IGFyZ3VtZW50czsgcGFyYW1ldGVyQ291
bnQoKSBpbiBsZW5ndGggaWYgd2UgZG8uCiAgICAgY29uc3QgU2xvd0FyZ3VtZW50KiBzbG93QXJn
dW1lbnRzKCkgeyByZXR1cm4gbV9zbG93QXJndW1lbnRzLmdldCgpOyB9CiAgICAgdm9pZCBzZXRT
bG93QXJndW1lbnRzKHN0ZDo6dW5pcXVlX3B0cjxTbG93QXJndW1lbnRbXT4gc2xvd0FyZ3VtZW50
cykgeyBtX3Nsb3dBcmd1bWVudHMgPSBzdGQ6Om1vdmUoc2xvd0FyZ3VtZW50cyk7IH0KLSAgICAK
KwogICAgIFN5bWJvbFRhYmxlKiBjbG9uZUNhcHR1cmVkTmFtZXMoVk0mKTsKIAogICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTQ4MiwxOSAr
NDk3LDIxIEBAIHByaXZhdGU6CiAgICAgcHVibGljOgogICAgICAgICBXYXRjaHBvaW50Q2xlYW51
cChTeW1ib2xUYWJsZSopOwogICAgICAgICB2aXJ0dWFsIH5XYXRjaHBvaW50Q2xlYW51cCgpOwot
ICAgICAgICAKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KCkgb3ZlcnJpZGU7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTeW1i
b2xUYWJsZSogbV9zeW1ib2xUYWJsZTsKICAgICB9OwotICAgIAorCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgU3ltYm9sVGFibGUoVk0mKTsKICAgICB+U3ltYm9sVGFibGUoKTsKIAogICAgIE1hcCBt
X21hcDsKLSAgICAKKyAgICBVbmlxdWVJRE1hcCBtX3VuaXF1ZUlETWFwOworICAgIFJlZ2lzdGVy
VG9WYXJpYWJsZU1hcCBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcDsKKwogICAgIGludCBtX3BhcmFt
ZXRlckNvdW50SW5jbHVkaW5nVGhpczsKICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWw7CiAK
QEAgLTUwMiwxMiArNTE5LDEyIEBAIHByaXZhdGU6CiAgICAgaW50IG1fY2FwdHVyZUVuZDsKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93QXJndW1lbnRbXT4gbV9zbG93QXJndW1lbnRzOwotICAg
IAorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRDbGVhbnVwPiBtX3dhdGNocG9pbnRD
bGVhbnVwOwogCiBwdWJsaWM6CiAgICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX2Z1bmN0aW9uRW50
ZXJlZE9uY2U7Ci0gICAgCisKICAgICBtdXRhYmxlIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRhOGM4ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0wLDAgKzEsMTU5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlR5cGVTZXQuaCIKKworI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitUeXBlU2V0OjpUeXBlU2V0KCkK
KyAgICA6IG1fc2VlblR5cGVzKFR5cGVOb3RoaW5nKQoreworfQorCitSdW50aW1lVHlwZSBUeXBl
U2V0OjpnZXRSdW50aW1lVHlwZUZvclZhbHVlKEpTVmFsdWUgdiwgU3RydWN0dXJlKikKK3sKKyAg
ICBSdW50aW1lVHlwZSByZXQ7CisgICAgaWYgKHYuaXNGdW5jdGlvbigpKQorICAgICAgICByZXQg
PSBUeXBlRnVuY3Rpb247CisgICAgZWxzZSBpZiAodi5pc1VuZGVmaW5lZCgpKQorICAgICAgICBy
ZXQgPSBUeXBlVW5kZWZpbmVkOworICAgIGVsc2UgaWYgKHYuaXNOdWxsKCkpCisgICAgICAgIHJl
dCA9IFR5cGVOdWxsOworICAgIGVsc2UgaWYgKHYuaXNCb29sZWFuKCkpCisgICAgICAgIHJldCA9
IFR5cGVCb29sZWFuOworICAgIGVsc2UgaWYgKHYuaXNNYWNoaW5lSW50KCkpCisgICAgICAgIHJl
dCA9IFR5cGVNYWNoaW5lSW50OworICAgIGVsc2UgaWYgKHYuaXNOdW1iZXIoKSkKKyAgICAgICAg
cmV0ID0gVHlwZU51bWJlcjsKKyAgICBlbHNlIGlmICh2LmlzU3RyaW5nKCkpCisgICAgICAgIHJl
dCA9IFR5cGVTdHJpbmc7CisgICAgZWxzZSBpZiAodi5pc1ByaW1pdGl2ZSgpKQorICAgICAgICBy
ZXQgPSBUeXBlUHJpbWl0aXZlOworICAgIGVsc2UgaWYgKHYuaXNHZXR0ZXJTZXR0ZXIoKSkKKyAg
ICAgICAgcmV0ID0gVHlwZUdldHRlclNldHRlcjsKKyAgICBlbHNlIGlmICh2LmlzQ3VzdG9tR2V0
dGVyU2V0dGVyKCkpCisgICAgICAgIHJldCA9IFR5cGVDdXN0b21HZXR0ZXJTZXR0ZXI7CisgICAg
ZWxzZSBpZiAodi5pc09iamVjdCgpKQorICAgICAgICByZXQgPSBUeXBlT2JqZWN0OworICAgIGVs
c2UKKyAgICAgICAgQ1JBU0goKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKKy8vc3RydWN0dXJl
IG1heSBiZSBudWxsCit2b2lkIFR5cGVTZXQ6OmFkZFR5cGVGb3JWYWx1ZShKU1ZhbHVlIHYsIFN0
cnVjdHVyZSogc3RydWN0dXJlKSAKK3sKKyAgICBSdW50aW1lVHlwZSB0ID0gZ2V0UnVudGltZVR5
cGVGb3JWYWx1ZSh2LCBzdHJ1Y3R1cmUpOworICAgIG1fc2VlblR5cGVzID0gbV9zZWVuVHlwZXMg
fCB0OworICAgIGlmIChzdHJ1Y3R1cmUpIHsKKyAgICAgICAgLy9wcmludGYoImdldHRpbmcgc3Ry
dWN0dXJlIHJlcHJlc2VudGF0aW9uXG4iKTsKKyAgICAgICAgU3RydWN0dXJlU2hhcGUgcmVwcmVz
ZW50YXRpb24gPSBzdHJ1Y3R1cmUtPnRvU3RydWN0dXJlU2hhcGUoKTsKKyAgICAgICAgbV9zdHJ1
Y3R1cmVIaXN0b3J5LmFwcGVuZChyZXByZXNlbnRhdGlvbik7CisgICAgfQorfQorCit2b2lkIFR5
cGVTZXQ6Om1lcmdlV2l0aFR5cGVTZXQoY29uc3QgVHlwZVNldCYgb3RoZXIpCit7CisgICAgbV9z
ZWVuVHlwZXMgfD0gb3RoZXIubV9zZWVuVHlwZXM7CisgICAgLy9UT0RPOiBPKG5eMiksIG1heWJl
IGRvIHRoaXMgcmVtb3ZhbCBvZiBkdXBsaWNhdGVzIG9ubHkgd2hlbiBzZWVuVHlwZXMoKSBpcyBj
YWxsZWQKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG90aGVyLm1fc3RydWN0dXJlSGlzdG9y
eS5zaXplKCk7IGkrKykKKyAgICAgICAgaWYgKCFtX3N0cnVjdHVyZUhpc3RvcnkuY29udGFpbnMo
b3RoZXIubV9zdHJ1Y3R1cmVIaXN0b3J5LmF0KGkpKSkKKyAgICAgICAgICAgIG1fc3RydWN0dXJl
SGlzdG9yeS5hcHBlbmQob3RoZXIubV9zdHJ1Y3R1cmVIaXN0b3J5LmF0KGkpKTsKK30KKworV1RG
OjpTdHJpbmcgVHlwZVNldDo6c2VlblR5cGVzKCkgCit7CisgICAgaWYgKG1fc2VlblR5cGVzID09
IFR5cGVOb3RoaW5nKQorICAgICAgICByZXR1cm4gIihVbnJlYWNoZWQgU3RhdGVtZW50KSI7CisK
KyAgICBXVEY6OlN0cmluZyBzZWVuKCIiKTsKKworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVG
dW5jdGlvbikKKyAgICAgICAgIHNlZW4uYXBwZW5kKCJGdW5jdGlvbiAiKTsKKyAgICBpZiAobV9z
ZWVuVHlwZXMgJiBUeXBlVW5kZWZpbmVkKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIlVuZGVmaW5l
ZCAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTnVsbCkKKyAgICAgICAgIHNlZW4uYXBw
ZW5kKCJOdWxsICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVCb29sZWFuKQorICAgICAg
ICAgc2Vlbi5hcHBlbmQoIkJvb2xlYW4gIik7CisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU1h
Y2hpbmVJbnQpCisgICAgICAgICBzZWVuLmFwcGVuZCgiTWFjaGluZUludCAiKTsKKyAgICBpZiAo
bV9zZWVuVHlwZXMgJiBUeXBlTnVtYmVyKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIk51bWJlciAi
KTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlU3RyaW5nKQorICAgICAgICAgc2Vlbi5hcHBl
bmQoIlN0cmluZyAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlUHJpbWl0aXZlKQorICAg
ICAgICAgc2Vlbi5hcHBlbmQoIlByaW1pdGl2ZSAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBU
eXBlR2V0dGVyU2V0dGVyKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIkdldHRlclNldHRlciAiKTsK
KyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQ3VzdG9tR2V0dGVyU2V0dGVyKQorICAgICAgICAg
c2Vlbi5hcHBlbmQoIkN1c3RvbUdldHRlclNldHRlciAiKTsKKyAgICAvL2lmIChtX3NlZW5UeXBl
cyAmIFR5cGVPYmplY3QpCisgICAgLy8gICAgIHNlZW4uYXBwZW5kKCJPYmplY3QgIik7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCk7IGkrKykg
eworICAgICAgICBTdHJ1Y3R1cmVTaGFwZSByZXByZXNlbnRhdGlvbiA9IG1fc3RydWN0dXJlSGlz
dG9yeS5hdChpKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoInsiKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaiA9IDA7IGogPCByZXByZXNlbnRhdGlvbi5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBqKyspIHsK
KyAgICAgICAgICAgIFN0cmluZyBwcm9wKHJlcHJlc2VudGF0aW9uLm1fcHJvcGVydGllcy5hdChq
KS5nZXQoKSk7CisgICAgICAgICAgICBzZWVuLmFwcGVuZChwcm9wKTsKKyAgICAgICAgICAgIGlm
IChqICsgMSA8IHJlcHJlc2VudGF0aW9uLm1fcHJvcGVydGllcy5zaXplKCkpCisgICAgICAgICAg
ICAgICAgc2Vlbi5hcHBlbmQoIiwgIik7CisgICAgICAgIH0KKyAgICAgICAgc2Vlbi5hcHBlbmQo
In0gIik7CisgICAgfQorCisgICAgcmV0dXJuIHNlZW47Cit9CisKK3ZvaWQgVHlwZVNldDo6ZHVt
cFNlZW5UeXBlcygpCit7CisgICAgcHJpbnRmKCIlcyIsIHNlZW5UeXBlcygpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICBwcmludGYoIlxuIik7Cit9CisKK2Jvb2wgU3RydWN0dXJlU2hhcGU6Om9wZXJh
dG9yPT0oY29uc3QgU3RydWN0dXJlU2hhcGUmIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3By
b3BlcnRpZXMuc2l6ZSgpICE9IG90aGVyLm1fcHJvcGVydGllcy5zaXplKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbV9wcm9wZXJ0aWVz
LnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBpZiAoU3RyaW5nKG1fcHJvcGVydGll
cy5hdChpKSkgIT0gU3RyaW5nKG90aGVyLm1fcHJvcGVydGllcy5hdChpKSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy9uYW1l
c3BhY2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzM3MDQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCkBAIC0wLDAgKzEsODMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFR5cGVTZXRfaAorI2RlZmluZSBUeXBlU2V0X2gKKworCisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICBjbGFzcyBKU1ZhbHVlOworICAgIGNsYXNz
IFN0cnVjdHVyZTsKKworICAgIGVudW0gUnVudGltZVR5cGUgeworICAgICAgICBUeXBlTm90aGlu
ZyAgICAgICAgICAgID0gMHgwLAorICAgICAgICBUeXBlRnVuY3Rpb24gICAgICAgICAgID0gMHgx
LAorICAgICAgICBUeXBlVW5kZWZpbmVkICAgICAgICAgID0gMHgyLAorICAgICAgICBUeXBlTnVs
bCAgICAgICAgICAgICAgID0gMHg0LAorICAgICAgICBUeXBlQm9vbGVhbiAgICAgICAgICAgID0g
MHg4LAorICAgICAgICBUeXBlTWFjaGluZUludCAgICAgICAgID0gMHgxMCwKKyAgICAgICAgVHlw
ZU51bWJlciAgICAgICAgICAgICA9IDB4MjAsCisgICAgICAgIFR5cGVTdHJpbmcgICAgICAgICAg
ICAgPSAweDQwLAorICAgICAgICBUeXBlUHJpbWl0aXZlICAgICAgICAgID0gMHg4MCwKKyAgICAg
ICAgVHlwZUdldHRlclNldHRlciAgICAgICA9IDB4MTAwLAorICAgICAgICBUeXBlQ3VzdG9tR2V0
dGVyU2V0dGVyID0gMHgyMDAsCisgICAgICAgIFR5cGVPYmplY3QgICAgICAgICAgICAgPSAweDQw
MCwKKyAgICB9OworCisKK2NsYXNzIFN0cnVjdHVyZVNoYXBlIHsKKworcHVibGljOgorICAgIFZl
Y3RvcjxSZWZQdHI8V1RGOjpTdHJpbmdJbXBsPj4gbV9wcm9wZXJ0aWVzOyAgICAgICAgIAorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJ1Y3R1cmVTaGFwZSYgb3RoZXIpIGNvbnN0OworCit9
OworCisKK2NsYXNzIFR5cGVTZXQgeworCitwdWJsaWM6CisgICAgVHlwZVNldCgpOworICAgIHZv
aWQgYWRkVHlwZUZvclZhbHVlKEpTVmFsdWUgdiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBtZXJn
ZVdpdGhUeXBlU2V0KGNvbnN0IFR5cGVTZXQmKTsKKyAgICBzdGF0aWMgUnVudGltZVR5cGUgZ2V0
UnVudGltZVR5cGVGb3JWYWx1ZShKU1ZhbHVlLCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBXVEY6OlN0cmluZyBzZWVuVHlwZXMoKTsKKworcHJpdmF0ZToKKyAgICB1aW50MzJf
dCBtX3NlZW5UeXBlczsKKyAgICB2b2lkIGR1bXBTZWVuVHlwZXMoKTsKKyAgICBWZWN0b3I8U3Ry
dWN0dXJlU2hhcGU+IG1fc3RydWN0dXJlSGlzdG9yeTsKKworfTsKKworCit9IC8vbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy9UeXBlU2V0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAppbmRleCBmMTBhOTJmLi4wYmVkMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC02LDEzICs2LDEzIEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAi
REZHTG9uZ0xpdmVkU3RhdGUuaCIKICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUg
IkRlYnVnZ2VyQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRl
ICJFcnJvckluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgpAQCAtNDgsNiArNDksOCBAQAogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUu
aCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKKyNpbmNsdWRlICJIaWdo
RmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVk
ZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgpAQCAtMjMw
LDYgKzIzMyw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICAsIG1fY29kZUNhY2hlKENvZGVDYWNoZTo6Y3JlYXRlKCkpCiAgICAgLCBtX2VuYWJsZWRQcm9m
aWxlcihudWxscHRyKQogICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMoQnVpbHRpbkV4ZWN1dGFi
bGVzOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9uZXh0VW5pcXVlVmFyaWFibGVJRCgxKQorICAg
ICwgbV9uZXh0VW5pcXVlSW5zdHJ1Y3Rpb25JRCgxKQogewogICAgIGludGVycHJldGVyID0gbmV3
IEludGVycHJldGVyKCp0aGlzKTsKICAgICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERh
dGEoKS5zdGFjaygpOwpAQCAtMjkwLDE3ICsyOTUsMTcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlKQogI2lmIEVOQUJMRShGVExfSklUKQogICAgIGZ0bFRodW5rcyA9
IHN0ZDo6bWFrZV91bmlxdWU8RlRMOjpUaHVua3M+KCk7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9K
SVQpCi0gICAgCisKICAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VKSVQo
KSk7Ci0gICAgCisKICNpZiBFTkFCTEUoSklUKQogICAgIGluaXRpYWxpemVIb3N0Q2FsbFJldHVy
blZhbHVlKCk7IC8vIFRoaXMgaXMgbmVlZGVkIHRvIGNvbnZpbmNlIHRoZSBsaW5rZXIgbm90IHRv
IGRyb3AgaG9zdCBjYWxsIHJldHVybiBzdXBwb3J0LgogI2VuZGlmCiAKICAgICBoZWFwLm5vdGlm
eUlzU2FmZVRvQ29sbGVjdCgpOwotICAgIAorCiAgICAgTExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3Nl
cnRpb25zKCp0aGlzKTsKLSAgICAKKwogICAgIGlmIChPcHRpb25zOjplbmFibGVQcm9maWxlcigp
KSB7CiAgICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IGFkb3B0UHRyKG5ldyBQcm9maWxl
cjo6RGF0YWJhc2UoKnRoaXMpKTsKIApAQCAtMzE4LDE3ICszMjMsMjMgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGlmIChjYW5Vc2VKSVQoKSkKICAgICAg
ICAgZGZnU3RhdGUgPSBhZG9wdFB0cihuZXcgREZHOjpMb25nTGl2ZWRTdGF0ZSgpKTsKICNlbmRp
ZgotICAgIAorCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGlzIGxhc3QsIGFzIGEgZnJlZSB3YXkgb2Yg
YXNzZXJ0aW5nIHRoYXQgVk0gaW5pdGlhbGl6YXRpb24gaXRzZWxmCiAgICAgLy8gd29uJ3QgdXNl
IHRoaXMuCiAgICAgbV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVU
eXBlZEFycmF5Q29udHJvbGxlcigpKTsKKworICAgIC8vVE9ETzogY29uZGl0aW9uYWxseSBhbGxv
Y2F0ZSBhbGwgdGhpcyBzdHVmZiBiYXNlZCBvbiBpZiB0aGlzIG1vZGUgaXMgZW5hYmxlZCBzb21l
aG93IHcvIGluc3BlY3Rvci4KKyAgICBpZiAoT3B0aW9uczo6cHJvZmlsZVR5cGVzV2l0aEhpZ2hG
aWRlbGl0eSgpKSB7CisgICAgICAgIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI+KCk7CisgICAgICAgIG1faGlnaEZp
ZGVsaXR5TG9nID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdoRmlkZWxpdHlMb2c+KCk7CisgICAgfQog
fQogCiBWTTo6flZNKCkKIHsKICAgICAvLyBOZXZlciBHQywgZXZlciBhZ2Fpbi4KICAgICBoZWFw
LmluY3JlbWVudERlZmVycmFsRGVwdGgoKTsKLSAgICAKKwogI2lmIEVOQUJMRShERkdfSklUKQog
ICAgIC8vIE1ha2Ugc3VyZSBjb25jdXJyZW50IGNvbXBpbGF0aW9ucyBhcmUgZG9uZSwgYnV0IGRv
bid0IGluc3RhbGwgdGhlbSwgc2luY2UgdGhlcmUgaXMKICAgICAvLyBubyBwb2ludCB0byBkb2lu
ZyBzby4KQEAgLTMzOSwxMCArMzUwLDEwIEBAIFZNOjp+Vk0oKQogICAgICAgICB9CiAgICAgfQog
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotICAgIAorCiAgICAgLy8gQ2xlYXIgdGhpcyBmaXJz
dCB0byBlbnN1cmUgdGhhdCBub2JvZHkgdHJpZXMgdG8gcmVtb3ZlIHRoZW1zZWx2ZXMgZnJvbSBp
dC4KICAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIuY2xlYXIoKTsKLSAgICAKKwogICAgIEFTU0VS
VChtX2FwaUxvY2stPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwogICAgIG1fYXBpTG9j
ay0+d2lsbERlc3Ryb3lWTSh0aGlzKTsKICAgICBoZWFwLmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7
CkBAIC01NjcsNyArNTc4LDcgQEAgc3RydWN0IFN0YWNrUHJlc2VydmluZ1JlY29tcGlsZXIgOiBw
dWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKIHZvaWQgVk06OnJlbGVhc2VFeGVjdXRh
YmxlTWVtb3J5KCkKIHsKICAgICB3YWl0Rm9yQ29tcGlsYXRpb25zVG9Db21wbGV0ZSgpOwotICAg
IAorCiAgICAgaWYgKGVudHJ5U2NvcGUpIHsKICAgICAgICAgU3RhY2tQcmVzZXJ2aW5nUmVjb21w
aWxlciByZWNvbXBpbGVyOwogICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2Nv
cGUoaGVhcCk7CkBAIC01OTAsNyArNjAxLDcgQEAgdm9pZCBWTTo6cmVsZWFzZUV4ZWN1dGFibGVN
ZW1vcnkoKQogICAgICAgICAgICAgZXhlY3V0YWJsZS0+dW5saW5rQ2FsbHMoKTsKICAgICAgICAg
ICAgIGlmIChleGVjdXRhYmxlLT5pbmhlcml0cyhGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSkp
CiAgICAgICAgICAgICAgICAgcmVjb21waWxlci5jdXJyZW50bHlFeGVjdXRpbmdGdW5jdGlvbnMu
YWRkKHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpKTsKLSAgICAg
ICAgICAgICAgICAKKwogICAgICAgICB9CiAgICAgICAgIGhlYXAub2JqZWN0U3BhY2UoKS5mb3JF
YWNoTGl2ZUNlbGw8U3RhY2tQcmVzZXJ2aW5nUmVjb21waWxlcj4oaXRlcmF0aW9uU2NvcGUsIHJl
Y29tcGlsZXIpOwogICAgIH0KQEAgLTYwMSwzMyArNjEyLDMzIEBAIHZvaWQgVk06OnJlbGVhc2VF
eGVjdXRhYmxlTWVtb3J5KCkKIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpCiB7CiAgICAgZXhjZXB0aW9uLT5jbGVhckFwcGVuZFNvdXJjZVRvTWVzc2FnZSgp
OwotICAgIAorCiAgICAgaWYgKCFjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5oYXNFeHByZXNzaW9u
SW5mbygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpbnQgc3RhcnRPZmZzZXQgPSAw
OwogICAgIGludCBlbmRPZmZzZXQgPSAwOwogICAgIGludCBkaXZvdFBvaW50ID0gMDsKICAgICB1
bnNpZ25lZCBsaW5lID0gMDsKICAgICB1bnNpZ25lZCBjb2x1bW4gPSAwOwotICAgIAorCiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIGNvZGVC
bG9jay0+ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGRp
dm90UG9pbnQsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7Ci0gICAgCisK
ICAgICBpbnQgZXhwcmVzc2lvblN0YXJ0ID0gZGl2b3RQb2ludCAtIHN0YXJ0T2Zmc2V0OwogICAg
IGludCBleHByZXNzaW9uU3RvcCA9IGRpdm90UG9pbnQgKyBlbmRPZmZzZXQ7Ci0gICAgCisKICAg
ICBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyA9IGNvZGVCbG9jay0+c291cmNlKCktPnNvdXJj
ZSgpOwogICAgIGlmICghZXhwcmVzc2lvblN0b3AgfHwgZXhwcmVzc2lvblN0YXJ0ID4gc3RhdGlj
X2Nhc3Q8aW50Pihzb3VyY2VTdHJpbmcubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47Ci0gICAg
CisKICAgICBWTSogdm0gPSAmY2FsbEZyYW1lLT52bSgpOwogICAgIEpTVmFsdWUganNNZXNzYWdl
ID0gZXhjZXB0aW9uLT5nZXREaXJlY3QoKnZtLCB2bS0+cHJvcGVydHlOYW1lcy0+bWVzc2FnZSk7
CiAgICAgaWYgKCFqc01lc3NhZ2UgfHwgIWpzTWVzc2FnZS5pc1N0cmluZygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgCisKICAgICBTdHJpbmcgbWVzc2FnZSA9IGFzU3RyaW5nKGpzTWVzc2FnZSkt
PnZhbHVlKGNhbGxGcmFtZSk7Ci0gICAgCisKICAgICBpZiAoZXhwcmVzc2lvblN0YXJ0IDwgZXhw
cmVzc2lvblN0b3ApCiAgICAgICAgIG1lc3NhZ2UgPSAgbWFrZVN0cmluZyhtZXNzYWdlLCAiIChl
dmFsdWF0aW5nICciLCBjb2RlQmxvY2stPnNvdXJjZSgpLT5nZXRSYW5nZShleHByZXNzaW9uU3Rh
cnQsIGV4cHJlc3Npb25TdG9wKSwgIicpIik7CiAgICAgZWxzZSB7CkBAIC02NDgsMjggKzY1OSwy
OCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBFcnJvckluc3RhbmNlKiBleGNlcHRpb24sCiAgICAgICAgICAgICBzdG9wLS07CiAgICAgICAg
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKG1lc3NhZ2UsICIgKG5lYXIgJy4uLiIsIGNvZGVCbG9jay0+
c291cmNlKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSwgIi4uLicpIik7CiAgICAgfQotICAgIAor
CiAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKnZtLCB2bS0+cHJvcGVydHlOYW1lcy0+bWVzc2Fn
ZSwganNTdHJpbmcodm0sIG1lc3NhZ2UpKTsKIH0KLSAgICAKKwogSlNWYWx1ZSBWTTo6dGhyb3dF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKQogewogICAgIGlmIChPcHRp
b25zOjpicmVha09uVGhyb3coKSkgewogICAgICAgICBkYXRhTG9nKCJJbiBjYWxsIGZyYW1lICIs
IFJhd1BvaW50ZXIoZXhlYyksICIgZm9yIGNvZGUgYmxvY2sgIiwgKmV4ZWMtPmNvZGVCbG9jaygp
LCAiXG4iKTsKICAgICAgICAgQ1JBU0goKTsKICAgICB9Ci0gICAgCisKICAgICBBU1NFUlQoZXhl
YyA9PSB0b3BDYWxsRnJhbWUgfHwgZXhlYyA9PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKSB8fCBleGVjID09IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpKTsKLSAgICAKKwogICAgIFZlY3RvcjxTdGFja0ZyYW1lPiBzdGFja1RyYWNlOwog
ICAgIGludGVycHJldGVyLT5nZXRTdGFja1RyYWNlKHN0YWNrVHJhY2UpOwogICAgIG1fZXhjZXB0
aW9uU3RhY2sgPSBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4oc3RhY2tUcmFjZSk7CiAgICAg
bV9leGNlcHRpb24gPSBlcnJvcjsKLSAgICAKKwogICAgIGlmIChzdGFja1RyYWNlLmlzRW1wdHko
KSB8fCAhZXJyb3IuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgIEpTT2Jq
ZWN0KiBleGNlcHRpb24gPSBhc09iamVjdChlcnJvcik7Ci0gICAgCisKICAgICBTdGFja0ZyYW1l
IHN0YWNrRnJhbWU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCA7IGkgPCBzdGFja1RyYWNlLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIHN0YWNrRnJhbWUgPSBzdGFja1RyYWNlLmF0KGkpOwpAQCAt
NzA0LDExICs3MTUsMTEgQEAgSlNWYWx1ZSBWTTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGVycm9yKQogCiAgICAgaWYgKGV4Y2VwdGlvbi0+aGFzUHJvcGVydHkoZXhl
YywgdGhpcy0+cHJvcGVydHlOYW1lcy0+c3RhY2spKQogICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgCisKICAgICBleGNlcHRpb24tPnB1dERpcmVjdCgqdGhpcywgcHJvcGVydHlOYW1lcy0+c3Rh
Y2ssIGludGVycHJldGVyLT5zdGFja1RyYWNlQXNTdHJpbmcodG9wQ2FsbEZyYW1lLCBzdGFja1Ry
YWNlKSwgRG9udEVudW0pOwogICAgIHJldHVybiBlcnJvcjsKIH0KLSAgICAKKwogSlNPYmplY3Qq
IFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikKIHsK
ICAgICByZXR1cm4gYXNPYmplY3QodGhyb3dFeGNlcHRpb24oZXhlYywgSlNWYWx1ZShlcnJvcikp
KTsKQEAgLTg1NSwxNSArODY2LDE1IEBAIHZvaWQgVk06OmR1bXBSZWdFeHBUcmFjZSgpCiB7CiAg
ICAgLy8gVGhlIGZpcnN0IFJlZ0V4cCBvYmplY3QgaXMgaWdub3JlZC4gIEl0IGlzIGNyZWF0ZSBi
eSB0aGUgUmVnRXhwUHJvdG90eXBlIGN0b3IgYW5kIG5vdCB1c2VkLgogICAgIFJUVHJhY2VMaXN0
OjppdGVyYXRvciBpdGVyID0gKyttX3J0VHJhY2VMaXN0LT5iZWdpbigpOwotICAgIAorCiAgICAg
aWYgKGl0ZXIgIT0gbV9ydFRyYWNlTGlzdC0+ZW5kKCkpIHsKICAgICAgICAgZGF0YUxvZ0YoIlxu
UmVnRXhwIFRyYWNpbmdcbiIpOwogICAgICAgICBkYXRhTG9nRigiUmVndWxhciBFeHByZXNzaW9u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCBCaXQgICAgICAgICAgMTYgQml0ICAgICAg
ICBtYXRjaCgpICAgIE1hdGNoZXMgICAgQXZlcmFnZVxuIik7CiAgICAgICAgIGRhdGFMb2dGKCIg
PE1hdGNoIG9ubHkgLyBNYXRjaD4gICAgICAgICAgICAgICAgICAgICAgICAgSklUIEFkZHIgICAg
ICBKSVQgQWRkcmVzcyAgICAgICBjYWxscyAgICAgIGZvdW5kICAgU3RyaW5nIGxlblxuIik7CiAg
ICAgICAgIGRhdGFMb2dGKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0r
LS0tLS0tLS0tLS1cbiIpOwotICAgIAorCiAgICAgICAgIHVuc2lnbmVkIHJlQ291bnQgPSAwOwot
ICAgIAorCiAgICAgICAgIGZvciAoOyBpdGVyICE9IG1fcnRUcmFjZUxpc3QtPmVuZCgpOyArK2l0
ZXIsICsrcmVDb3VudCkgewogICAgICAgICAgICAgKCppdGVyKS0+cHJpbnRUcmFjZURhdGEoKTsK
ICAgICAgICAgICAgIGdjVW5wcm90ZWN0KCppdGVyKTsKQEAgLTg3MSw3ICs4ODIsNyBAQCB2b2lk
IFZNOjpkdW1wUmVnRXhwVHJhY2UoKQogCiAgICAgICAgIGRhdGFMb2dGKCIlZCBSZWd1bGFyIEV4
cHJlc3Npb25zXG4iLCByZUNvdW50KTsKICAgICB9Ci0gICAgCisKICAgICBtX3J0VHJhY2VMaXN0
LT5jbGVhcigpOwogfQogI2Vsc2UKQEAgLTkxNCw2ICs5MjUsMjggQEAgdm9pZCBWTTo6c2V0RW5h
YmxlZFByb2ZpbGVyKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlcikKICAgICB9CiB9CiAKK1N0cmlu
ZyBWTTo6Z2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNp
Z25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBj
b25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VJREFzU3RyaW5n
KQoreworICAgIGJvb2wgb2theTsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRCA9IHNvdXJjZUlEQXNT
dHJpbmcudG9JbnRQdHJTdHJpY3QoJm9rYXkpOworICAgIGlmICghb2theSkKKyAgICAgICAgQ1JB
U0goKTsKKworICAgIHVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUoKTsKKyAgICBw
cmludGYoIkdldHRpbmcgdHlwZSBmb3IgdmFyaWFibGUgZ2l2ZW4gc291cmNlSUQ6JyVsZCcgbGlu
ZTonJXUnXG4iLCBzb3VyY2VJRCwgc3RhcnRMaW5lKTsKKyAgICByZXR1cm4gbV9oaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXItPmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHN0YXJ0TGluZSwgc3Rh
cnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7Cit9
CisKK3ZvaWQgVk06OnVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUoKQoreworICAg
IGhpZ2hGaWRlbGl0eUxvZygpLT5wcm9jZXNzSGlnaEZpZGVsaXR5TG9nKCk7CisgICAgSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyKiBwcm9maWxlciA9IG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LmdldCgpOworICAgIGZvciAoQmFnPFR5cGVMb2NhdGlvbj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2xv
Y2F0aW9uSW5mby5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgeworICAgICAgICBUeXBlTG9jYXRp
b24qIGxvY2F0aW9uID0gKml0ZXI7CisgICAgICAgIHByb2ZpbGVyLT5tZXJnZUluVHlwZXNGb3JM
b2NhdGlvbihsb2NhdGlvbik7CisgICAgfQorfQorCiB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShW
TSogdm0pCiB7CiAgICAgbG9nU2FuaXRpemVTdGFjayh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCBiYTliYzAxLi4zNmVkNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTYsMTMgKzYsMTMgQEAKICAqIGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKICAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTQ2LDkgKzQ2LDExIEBACiAjaW5jbHVk
ZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlw
ZWRBcnJheUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJXYXRjaGRvZy5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlICJXZWFrUmFu
ZG9tLmgiCisjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFs
bG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CkBAIC03NCw2ICs3Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENvbW1v
bklkZW50aWZpZXJzOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBIYW5kbGVTdGFj
azsKKyAgICBjbGFzcyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI7CisgICAgY2xhc3MgSGlnaEZp
ZGVsaXR5TG9nOwogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSW50ZXJwcmV0ZXI7
CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CkBAIC04NCw2ICs4OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7
CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CisgICAgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKICAg
ICBjbGFzcyBTb3VyY2VQcm92aWRlcjsKICAgICBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlOwog
ICAgIHN0cnVjdCBTdGFja0ZyYW1lOwpAQCAtOTYsNiArMTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKKyAg
ICBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiAgICAgY2xhc3MgVk1FbnRyeVNjb3BlOwogICAgIGNs
YXNzIFdhdGNocG9pbnQ7CiAgICAgY2xhc3MgV2F0Y2hwb2ludFNldDsKQEAgLTEyNyw3ICsxMzMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgaW5jcmVtZW50KDAuMCkKICAgICAg
ICAgewogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgcmVzZXQoKQogICAgICAg
ICB7CiAgICAgICAgICAgICBvZmZzZXQgPSBMb2NhbFRpbWVPZmZzZXQoKTsKQEAgLTE5Miw3ICsx
OTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gdGhhbiB0aGUgb2xkIHNpbmdsZXRv
biBBUElTaGFyZWQgVk0gY3JlYXRlZCBmb3IgdXNlIGJ5CiAgICAgICAgIC8vIHRoZSBvcmlnaW5h
bCBBUEkuCiAgICAgICAgIGVudW0gVk1UeXBlIHsgRGVmYXVsdCwgQVBJQ29udGV4dEdyb3VwLCBB
UElTaGFyZWQgfTsKLSAgICAgICAgCisKICAgICAgICAgc3RydWN0IENsaWVudERhdGEgewogICAg
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+Q2xpZW50RGF0YSgpID0gMDsKICAg
ICAgICAgfTsKQEAgLTIwOCw3ICsyMTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgflZNKCk7CiAKICAgICAgICAgdm9pZCBtYWtlVXNhYmxlRnJvbU11bHRp
cGxlVGhyZWFkcygpIHsgaGVhcC5tYWNoaW5lVGhyZWFkcygpLm1ha2VVc2FibGVGcm9tTXVsdGlw
bGVUaHJlYWRzKCk7IH0KLSAgICAgICAgCisKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0
cjxKU0xvY2s+IG1fYXBpTG9jazsKIApAQCAtMjIyLDcgKzIyOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAvLyBUaGUgaGVhcCBzaG91bGQgYmUganVzdCBhZnRlciBleGVjdXRhYmxlQWxs
b2NhdG9yIGFuZCBiZWZvcmUgb3RoZXIgbWVtYmVycyB0byBlbnN1cmUgdGhhdCBpdCdzCiAgICAg
ICAgIC8vIGRlc3RydWN0ZWQgYWZ0ZXIgYWxsIHRoZSBvYmplY3RzIHRoYXQgcmVmZXJlbmNlIGl0
LgogICAgICAgICBIZWFwIGhlYXA7Ci0gICAgICAgIAorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgICAgIE93blB0cjxERkc6OkxvbmdMaXZlZFN0YXRlPiBkZmdTdGF0ZTsKICNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKQEAgLTMxNSw2ICszMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICB2b2lkKiBlbmFibGVkUHJvZmlsZXJBZGRyZXNzKCkgeyByZXR1cm4gJm1fZW5hYmxlZFBy
b2ZpbGVyOyB9CiAKKwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShMTElOVCkKICAgICAgICAg
Ym9vbCBjYW5Vc2VKSVQoKSB7IHJldHVybiBtX2NhblVzZUpJVDsgfQogI2VsaWYgRU5BQkxFKEpJ
VCkKQEAgLTM0Niw3ICszNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBqaXRTdHVicy0+Y3RpU3R1Yih0aGlzLCBnZW5lcmF0b3IpOwogICAgICAgICB9CiAgICAgICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljKTsKLSAgICAgICAgCisKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFyaXR5Q2hlY2tGYWls
UmV0dXJuVGh1bmtzPiBhcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tbW9uU2xvd1BhdGhzOjpBcml0eUNo
ZWNrRGF0YT4gYXJpdHlDaGVja0RhdGE7CkBAIC0zODAsNyArMzg4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihF
eGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7Ci0gICAgICAgIAorCiAgICAg
ICAgIHZvaWQqIHN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tQ
b2ludGVyQXRWTUVudHJ5OyB9CiAgICAgICAgIHZvaWQgc2V0U3RhY2tQb2ludGVyQXRWTUVudHJ5
KHZvaWQqKTsKIApAQCAtNDIyLDEyICs0MzAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQqIG9zckV4aXRKdW1wRGVzdGluYXRpb247CiAgICAgICAgIFZlY3RvcjxTY3JhdGNoQnVm
ZmVyKj4gc2NyYXRjaEJ1ZmZlcnM7CiAgICAgICAgIHNpemVfdCBzaXplT2ZMYXN0U2NyYXRjaEJ1
ZmZlcjsKLSAgICAgICAgCisKICAgICAgICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlckZv
clNpemUoc2l6ZV90IHNpemUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghc2l6ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAo
c2l6ZSA+IHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgLy8gUHJv
dGVjdCBhZ2FpbnN0IGEgTl4yIG1lbW9yeSB1c2FnZSBwYXRob2xvZ3kgYnkgZW5zdXJpbmcKICAg
ICAgICAgICAgICAgICAvLyB0aGF0IGF0IHdvcnN0LCB3ZSBnZXQgYSBnZW9tZXRyaWMgc2VyaWVz
LCBtZWFuaW5nIHRoYXQgdGhlCkBAIC00NTIsNyArNDYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEhhc2hTZXQ8SlNPYmplY3QqPiBzdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmpl
Y3RzOwogCiAgICAgICAgIExvY2FsVGltZU9mZnNldENhY2hlIGxvY2FsVGltZU9mZnNldENhY2hl
OwotICAgICAgICAKKwogICAgICAgICBTdHJpbmcgY2FjaGVkRGF0ZVN0cmluZzsKICAgICAgICAg
ZG91YmxlIGNhY2hlZERhdGVTdHJpbmdWYWx1ZTsKIApAQCAtNDg1LDcgKzQ5Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlbGVhc2VFeGVjdXRh
YmxlTWVtb3J5KCk7CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLSAgICAgICAgYm9vbCBp
c0luaXRpYWxpemluZ09iamVjdCgpIGNvbnN0OyAKKyAgICAgICAgYm9vbCBpc0luaXRpYWxpemlu
Z09iamVjdCgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEluaXRpYWxpemluZ09iamVjdENsYXNz
KGNvbnN0IENsYXNzSW5mbyopOwogI2VuZGlmCiAKQEAgLTUwMiwyMCArNTEwLDI5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBDb2RlQ2FjaGUqIGNvZGVDYWNoZSgpIHsgcmV0dXJuIG1fY29k
ZUNhY2hlLmdldCgpOyB9CiAKICAgICAgICAgdm9pZCB3YWl0Rm9yQ29tcGlsYXRpb25zVG9Db21w
bGV0ZSgpOwotICAgICAgICAKKwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRpc2Nh
cmRBbGxDb2RlKCk7CiAKICAgICAgICAgdm9pZCByZWdpc3RlcldhdGNocG9pbnRGb3JJbXB1cmVQ
cm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hwb2ludCopOwogICAgICAgICAvLyBGSVhN
RTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJZGVudGlmaWVyLgog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEltcHVyZVByb3BlcnR5KGNvbnN0IFN0
cmluZyYpOwotICAgICAgICAKKwogICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5F
eGVjdXRhYmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKKyAg
ICAgICAgYm9vbCBpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpIHsgcmV0dXJuICEh
bV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI7IH0KKyAgICAgICAgU3RyaW5nIGdldFR5cGVzRm9y
VmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4s
IHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5nJiB2YXJp
YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOworICAgICAgICBIaWdoRmlkZWxpdHlM
b2cqIGhpZ2hGaWRlbGl0eUxvZygpIHsgcmV0dXJuIG1faGlnaEZpZGVsaXR5TG9nLmdldCgpOyB9
CisgICAgICAgIHZvaWQgdXBkYXRlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVTdGF0ZSgpOworICAg
ICAgICBUeXBlTG9jYXRpb24qIG5leHRMb2NhdGlvbigpIHsgcmV0dXJuIG1fbG9jYXRpb25JbmZv
LmFkZCgpOyB9IC8vVE9ETzogcG9zc2libGUgb3B0bWl6YXRpb246IHdoZW4gY29kZWJsb2NrcyBk
aWUsIHJlcG9ydCB3aGljaCBsb2NhdGlvbnMgYXJlIG5vIGxvbmdlciBiZWluZyBjaGFuZ2VkIHNv
IHdlIGRvbid0IHdhbGsgb3ZlciB0aGVtCisKKyAgICAgICAgdWludDY0X3QgZ2V0TmV4dFVuaXF1
ZVZhcmlhYmxlSUQoKSB7IHJldHVybiBtX25leHRVbmlxdWVWYXJpYWJsZUlEKys7IH0KKyAgICAg
ICAgdWludDY0X3QgZ2V0TmV4dFVuaXF1ZUluc3RydWN0aW9uSUQoKSB7IHJldHVybiBtX25leHRV
bmlxdWVJbnN0cnVjdGlvbklEKys7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDbGVhckV4
Y2VwdGlvblNjb3BlOwogICAgICAgICBmcmllbmQgY2xhc3MgUmVjdXJzaXZlQWxsb2NhdGlvblNj
b3BlOwotICAgICAgICAKKwogICAgICAgICBWTShWTVR5cGUsIEhlYXBUeXBlKTsKICAgICAgICAg
c3RhdGljIFZNKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNyZWF0
ZU5hdGl2ZVRodW5rKCk7CkBAIC01NTksNiArNTc2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5FeGVjdXRhYmxlczsKICAg
ICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7CiAgICAg
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+IG1faW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50U2V0czsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlcj4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxIaWdoRmlkZWxpdHlMb2c+IG1faGlnaEZpZGVsaXR5TG9nOworICAgICAgICAvL3Vp
bnQ2NF90IG1fbmV4dFVuaXF1ZVZhcmlhYmxlSUQ7CisgICAgICAgIGludDY0X3QgbV9uZXh0VW5p
cXVlVmFyaWFibGVJRDsKKyAgICAgICAgdWludDY0X3QgbV9uZXh0VW5pcXVlSW5zdHJ1Y3Rpb25J
RDsKKyAgICAgICAgQmFnPFR5cGVMb2NhdGlvbj4gbV9sb2NhdGlvbkluZm87CiAgICAgfTsKIAog
I2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9C
aWRpQ29udGV4dC5oCmluZGV4IDVjNTZiNzguLjZlZWQwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAg
IEJpZGlDb250ZXh0KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudC5nZXQoKTsgfQog
ICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2xldmVsOyB9CiAgICAg
VUNoYXJEaXJlY3Rpb24gZGlyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VUNoYXJEaXJl
Y3Rpb24+KG1fZGlyZWN0aW9uKTsgfQotICAgIGJvb2wgb3ZlcnJpZGUoKSBjb25zdCB7IHJldHVy
biBtX292ZXJyaWRlOyB9Citib29sIG92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlk
ZTsgfQogICAgIEJpZGlFbWJlZGRpbmdTb3VyY2Ugc291cmNlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8QmlkaUVtYmVkZGluZ1NvdXJjZT4obV9zb3VyY2UpOyB9CiAKICAgICBQYXNzUmVm
UHRyPEJpZGlDb250ZXh0PiBjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvclRva2VuVHJh
Y2tpbmdDb250cm9sbGVyLmpzCmluZGV4IDNhMDQyZTMuLmRhMmI3YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JU
b2tlblRyYWNraW5nQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIu
anMKQEAgLTQ5LDcgKzQ5LDggQEAgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5n
Q29udHJvbGxlci5Nb2RlID0gewogICAgIE5vbmU6ICJub25lIiwKICAgICBOb25TeW1ib2xUb2tl
bnM6ICJub24tc3ltYm9sLXRva2VucyIsCiAgICAgSmF2YVNjcmlwdEV4cHJlc3Npb246ICJqYXZh
c2NyaXB0LWV4cHJlc3Npb24iLAotICAgIE1hcmtlZFRva2VuczogIm1hcmtlZC10b2tlbnMiCisg
ICAgTWFya2VkVG9rZW5zOiAibWFya2VkLXRva2VucyIsCisgICAgUG9zdEphdmFTY3JpcHRFeHBy
ZXNzaW9uOiAicG9zdC1qYXZhc2NyaXB0LWV4cHJlc3Npb24iIAogfQogCiBXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKQEAgLTE5Myw3
ICsxOTQsOSBAQCBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVy
LnByb3RvdHlwZSA9IHsKIAogICAgIF9zdGFydFRyYWNraW5nOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdHJhY2tpbmcpOworICAgICAgICAvL2lmICh0
aGlzLl90cmFja2luZykKKyAgICAgICAgLy8gICAgY29uc29sZS5sb2coKG5ldyBFcnJvcigiQWxy
ZWFkeSB0cmFja2luZyIpKS5zdGFjaykKKyAgICAgICAgLy9jb25zb2xlLmFzc2VydCghdGhpcy5f
dHJhY2tpbmcpOwogICAgICAgICBpZiAodGhpcy5fdHJhY2tpbmcpCiAgICAgICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggYzRlY2VlMS4uNDU3
YTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTk3NCw3ICs5NzQs
MTAgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIG1vZGUgPSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250
cm9sbGVyLk1vZGUuTWFya2VkVG9rZW5zOwogICAgICAgICBlbHNlIGlmICgodGhpcy5fc291cmNl
Q29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZSB8fCB0aGlzLl9z
b3VyY2VDb2RlLnNvdXJjZU1hcHMubGVuZ3RoICE9PSAwKSAmJiBXZWJJbnNwZWN0b3IubW9kaWZp
ZXJLZXlzLm1ldGFLZXkgJiYgIVdlYkluc3BlY3Rvci5tb2RpZmllcktleXMuYWx0S2V5ICYmICFX
ZWJJbnNwZWN0b3IubW9kaWZpZXJLZXlzLnNoaWZ0S2V5KQogICAgICAgICAgICAgbW9kZSA9IFdl
Ykluc3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuTW9kZS5Ob25TeW1i
b2xUb2tlbnM7CisgICAgICAgIC8vZWxzZQorICAgICAgICAvLyAgICBtb2RlID0gV2ViSW5zcGVj
dG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLlBvc3RKYXZhU2NyaXB0
RXhwcmVzc2lvbjsKIAorICAgICAgICAvL2NvbnNvbGUubG9nKCJUb2tlbiB0cmFja2luZyBtb2Rl
ID0gIiArIG1vZGUpCiAgICAgICAgIHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuZW5hYmxl
ZCA9IG1vZGUgIT09IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xs
ZXIuTW9kZS5Ob25lOwogCiAgICAgICAgIGlmIChtb2RlID09PSB0aGlzLnRva2VuVHJhY2tpbmdD
b250cm9sbGVyLm1vZGUpCkBAIC05OTIsNiArOTk1LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2Rpc21pc3NQb3Bv
dmVyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUuSmF2YVNjcmlwdEV4cHJlc3Npb246
CisgICAgICAgIC8vY2FzZSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250
cm9sbGVyLk1vZGUuUG9zdEphdmFTY3JpcHRFeHByZXNzaW9uOgogICAgICAgICAgICAgdGhpcy50
b2tlblRyYWNraW5nQ29udHJvbGxlci5tb3VzZU92ZXJEZWxheUR1cmF0aW9uID0gV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkR1cmF0aW9uVG9Nb3VzZU92ZXJUb2tlblRvTWFrZUhv
dmVyZWRUb2tlbjsKICAgICAgICAgICAgIHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW91
c2VPdXRSZWxlYXNlRGVsYXlEdXJhdGlvbiA9IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5EdXJhdGlvblRvTW91c2VPdXRPZkhvdmVyZWRUb2tlblRvUmVsZWFzZTsKICAgICAgICAg
ICAgIHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuY2xhc3NOYW1lRm9ySGlnaGxpZ2h0ZWRS
YW5nZSA9IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5Ib3ZlcmVkRXhwcmVzc2lv
bkhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lOwpAQCAtMTAyOSw2ICsxMDMzLDcgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
X2Rpc21pc3NQb3BvdmVyKCk7CiAgICAgfSwKIAorCiAgICAgdG9rZW5UcmFja2luZ0NvbnRyb2xs
ZXJIaWdobGlnaHRlZFJhbmdlV2FzQ2xpY2tlZDogZnVuY3Rpb24odG9rZW5UcmFja2luZ0NvbnRy
b2xsZXIpCiAgICAgewogICAgICAgICBpZiAodGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5t
b2RlICE9PSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1v
ZGUuTm9uU3ltYm9sVG9rZW5zKQpAQCAtMTA0NywxMiArMTA1MiwxNSBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogCiAgICAgdG9rZW5UcmFja2luZ0Nv
bnRyb2xsZXJOZXdIaWdobGlnaHRDYW5kaWRhdGU6IGZ1bmN0aW9uKHRva2VuVHJhY2tpbmdDb250
cm9sbGVyLCBjYW5kaWRhdGUpCiAgICAgeworICAgICAgICAvL2NvbnNvbGUubG9nKCJ0b2tlblRy
YWNraW5nQ29udHJvbGxlck5ld0hpZ2hsaWdodENhbmRpZGF0ZSwgbW9kZSA9ICIgKyB0aGlzLnRv
a2VuVHJhY2tpbmdDb250cm9sbGVyLm1vZGUpCisKICAgICAgICAgaWYgKHRoaXMudG9rZW5UcmFj
a2luZ0NvbnRyb2xsZXIubW9kZSA9PT0gV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNr
aW5nQ29udHJvbGxlci5Nb2RlLk5vblN5bWJvbFRva2VucykgewogICAgICAgICAgICAgdGhpcy50
b2tlblRyYWNraW5nQ29udHJvbGxlci5oaWdobGlnaHRSYW5nZShjYW5kaWRhdGUuaG92ZXJlZFRv
a2VuUmFuZ2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW9kZSA9PT0gV2ViSW5zcGVjdG9yLkNvZGVN
aXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLkphdmFTY3JpcHRFeHByZXNzaW9uKSB7
CisgICAgICAgICAgICAvL3x8IHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW9kZSA9PT0g
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLlBvc3RK
YXZhU2NyaXB0RXhwcmVzc2lvbikgewogICAgICAgICAgICAgdGhpcy5fdG9rZW5UcmFja2luZ0Nv
bnRyb2xsZXJIaWdobGlnaHRlZEphdmFTY3JpcHRFeHByZXNzaW9uKGNhbmRpZGF0ZSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwNzcsMzkgKzEwODUsNzEgQEAgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5j
dGlvbiBwb3B1bGF0ZShlcnJvciwgcmVzdWx0LCB3YXNUaHJvd24pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChlcnJvciB8fCB3YXNUaHJvd24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
CiAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlICE9PSB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9s
bGVyLmNhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHZh
ciBkYXRhID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZXN1bHQpOwot
ICAgICAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgImZ1bmN0
aW9uIjoKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvckZ1bmN0aW9uKGRhdGEp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKLSAg
ICAgICAgICAgICAgICBpZiAoZGF0YS5zdWJ0eXBlID09PSAicmVnZXhwIikgCi0gICAgICAgICAg
ICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yUmVnRXhwKGRhdGEpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JPYmplY3Qo
ZGF0YSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzdHJpbmci
OgotICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yU3RyaW5nKGRhdGEpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKLSAgICAgICAg
ICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvck51bWJlcihkYXRhKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgotICAgICAgICAgICAgICAgIHRo
aXMuX3Nob3dQb3BvdmVyRm9yQm9vbGVhbihkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgInVuZGVmaW5lZCI6Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2hv
d1BvcG92ZXJGb3JVbmRlZmluZWQoZGF0YSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB2YXIgZGF0YQorICAgICAgICAgICAgICAgLCBzb3VyY2VJRCA9IHRoaXMuX3NvdXJj
ZUNvZGUuX3NjcmlwdHNbMF0uX2lkCisgICAgICAgICAgICAgICAsIGRpc3BsYXkgPSBfZGlzcGxh
eS5iaW5kKHRoaXMpCisKKyAgICAgICAgICAgIGlmIChlcnJvciB8fCB3YXNUaHJvd24pIHsKKyAg
ICAgICAgICAgICAgICAvL3JldHVybjsKKyAgICAgICAgICAgICAgICAvL215IG93biBzcGVjaWFs
IG1vZGUKKyAgICAgICAgICAgICAgICBkYXRhID0geyB0eXBlIDogIm51bWJlciIsIF9kZXNjcmlw
dGlvbiA6ICIiIH0KKyAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCJcbmNyZWF0aW5nIG93
biBkYXRhIikKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGF0YSA9IFdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0KQogICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBfZGlzcGxheSgpIHsKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKGRhdGEudHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JGdW5jdGlvbihkYXRhKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3VidHlwZSA9PT0gInJlZ2V4cCIpIAorICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JSZWdFeHAoZGF0YSk7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3No
b3dQb3BvdmVyRm9yT2JqZWN0KGRhdGEpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgorICAgICAgICAgICAgICAgICAgICB0aGlzLl9z
aG93UG9wb3ZlckZvclN0cmluZyhkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5f
c2hvd1BvcG92ZXJGb3JOdW1iZXIoZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgorICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9zaG93UG9wb3ZlckZvckJvb2xlYW4oZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgInVuZGVmaW5lZCI6CisgICAgICAgICAgICAgICAgICAg
IHRoaXMuX3Nob3dQb3BvdmVyRm9yVW5kZWZpbmVkKGRhdGEpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChjYW5kaWRhdGUuaG92ZXJlZFRva2VuLnN0YXRlLmxhc3RUeXBlID09PSAidmFyaWFibGUi
KSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlcihlcnJvciwgdHlwZVN0cmluZykg
eworICAgICAgICAgICAgICAgICAgICBkYXRhLl9kZXNjcmlwdGlvbiArPSAiXG4iICsgIlR5cGVz
OiB7IiArIHR5cGVTdHJpbmcgKyAifSIKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheSgpCisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdmFyIHJhbmdlID0gY2FuZGlkYXRl
LmhvdmVyZWRUb2tlblJhbmdlCisgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiXG5TdGFy
dCBsaW5lOiAiICsgcmFuZ2Uuc3RhcnQubGluZSArICIgICBlbmRMaW5lOiAiICsgcmFuZ2UuZW5k
LmxpbmUpCisgICAgICAgICAgICAgICAgUnVudGltZUFnZW50LmdldFJ1bnRpbWVUeXBlRm9yVmFy
aWFibGVJblRleHRSYW5nZShjYW5kaWRhdGUuaG92ZXJlZFRva2VuLnN0cmluZywgc291cmNlSUQs
IHJhbmdlLnN0YXJ0LmxpbmUgKyAxLCByYW5nZS5zdGFydC5jaCwgcmFuZ2UuZW5kLmxpbmUgKyAx
LCByYW5nZS5lbmQuY2gsIGhhbmRsZXIpCisgICAgICAgICAgICB9IGVsc2UgaWYgKCEoZXJyb3Ig
fHwgd2FzVGhyb3duKSkgeworICAgICAgICAgICAgICAgIGRpc3BsYXkoKQorICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCJcbm5vdCBzaG93aW5nIGEg
cG9wb3ZlciIpCisgICAgICAgICAgICB9CisKKwogICAgICAgICB9CiAKLSAgICAgICAgRGVidWdn
ZXJBZ2VudC5ldmFsdWF0ZU9uQ2FsbEZyYW1lLmludm9rZSh7Y2FsbEZyYW1lSWQ6IFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLmlkLCBleHByZXNzaW9uOiBjYW5k
aWRhdGUuZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXA6ICJwb3BvdmVyIiwgZG9Ob3RQYXVzZU9uRXhj
ZXB0aW9uc0FuZE11dGVDb25zb2xlOiB0cnVlfSwgcG9wdWxhdGUuYmluZCh0aGlzKSk7CisgICAg
ICAgIGlmICh0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLm1vZGUgPT09IFdlYkluc3BlY3Rv
ci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuTW9kZS5Qb3N0SmF2YVNjcmlwdEV4
cHJlc3Npb24pIHsKKyAgICAgICAgICAgIC8vY29uc29sZS5sb2coIlxuY2FsbGluZyBwb3B1bGF0
ZSB3LyByYW5kb20gdmFsdWVzIikKKyAgICAgICAgICAgIHBvcHVsYXRlKHRydWUsIG51bGwsIHRy
dWUpCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgRGVidWdnZXJBZ2VudC5ldmFsdWF0ZU9u
Q2FsbEZyYW1lLmludm9rZSh7Y2FsbEZyYW1lSWQ6IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFn
ZXIuYWN0aXZlQ2FsbEZyYW1lLmlkLCBleHByZXNzaW9uOiBjYW5kaWRhdGUuZXhwcmVzc2lvbiwg
b2JqZWN0R3JvdXA6ICJwb3BvdmVyIiwgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25z
b2xlOiB0cnVlfSwgcG9wdWxhdGUuYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF9zaG93UG9w
b3ZlcjogZnVuY3Rpb24oY29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCmluZGV4IDM4ZTYwNmEuLjc4ZjY2
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGV4dEVkaXRvci5qcwpAQCAtNjcsNiArNjcsNDYgQEAgV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3IgPSBmdW5jdGlvbihlbGVtZW50LCBtaW1lVHlwZSwgZGVsZWdhdGUpCiAgICAgdGhpcy5f
Zm9ybWF0dGVyU291cmNlTWFwID0gbnVsbDsKIAogICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdh
dGUgfHwgbnVsbDsKKworICAgIGZ1bmN0aW9uIG1vdXNlVXBUZXN0KGV2ZW50KSB7CisKKyAgICAg
ICAgaWYgKCFkZWxlZ2F0ZSB8fCAhZGVsZWdhdGUuX3NvdXJjZUNvZGUgfHwgIWRlbGVnYXRlLl9z
b3VyY2VDb2RlLl9zY3JpcHRzIHx8ICFkZWxlZ2F0ZS5fc291cmNlQ29kZS5fc2NyaXB0c1swXSkK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRoaXMuX3Rva2VuVHJhY2tpbmdDb250cm9s
bGVyLmVuYWJsZWQgPSB0cnVlCisKKyAgICAgICAgdmFyIHNjcmlwdCA9IGRlbGVnYXRlLl9zb3Vy
Y2VDb2RlLl9zY3JpcHRzWzBdCisgICAgICAgICAgICwgc291cmNlSUQgPSBzY3JpcHQuX2lkCisg
ICAgICAgICAgICwgdG9rZW5JbmZvID0gdGhpcy5fdG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuX2hv
dmVyZWRUb2tlbkluZm8KKyAgICAgICAgICAgLCB0b2tlbiAKKworICAgICAgICBpZiAoIXRva2Vu
SW5mbyB8fCAhdG9rZW5JbmZvLnRva2VuKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAg
dG9rZW4gPSB0b2tlbkluZm8udG9rZW4KKyAgICAgICAgLy9jb25zb2xlLmxvZyhKU09OLnN0cmlu
Z2lmeSh0b2tlbkluZm8sIHVuZGVmaW5lZCwgMikpCisgICAgICAgIGlmICh0b2tlbi5zdGF0ZS5s
YXN0VHlwZSA9PT0gInZhcmlhYmxlIikgeworCisgICAgICAgICAgICAvL2RlbGVnYXRlLnNvdXJj
ZUNvZGUuX3NjcmlwdHMuZm9yRWFjaChmdW5jdGlvbihlLCBpZHgpIHsKKyAgICAgICAgICAgIC8v
ICAgIGNvbnNvbGUubG9nKCJcbklEWDogIiArIGlkeCArICJcblVSTDogIiArIGUuX3VybCArICJc
bklEOiAiICsgZS5faWQpCisgICAgICAgICAgICAvL30pCisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGNhbGxiYWNrKGVycm9yLCB0eXBlU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9y
KSAKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkVSUk9SIGZyb20gaGFuZGxlcjog
IiArIGVycm9yKQorCisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlxuXHRnb3QgcnVudGlt
ZSB0eXBlcyBpbiB1cmw6IFwiIiArIHNjcmlwdC5fdXJsICsgIlwiIiArICJcblx0UnVudGltZSB0
eXBlcyBmb3IgdmFyaWFibGU6ICciICsgdG9rZW4uc3RyaW5nICsgIicgaXM6ICciICsgdHlwZVN0
cmluZyArICInIikKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vY29uc29sZS5sb2coIlxu
U3RhcnQgbGluZTogIiArIHRva2VuSW5mby5wb3NpdGlvbi5saW5lKQorCisgICAgICAgICAgICB2
YXIgbGluZSA9IHRva2VuSW5mby5wb3NpdGlvbi5saW5lICsgMQorICAgICAgICAgICAgUnVudGlt
ZUFnZW50LmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZSh0b2tlbi5zdHJpbmcs
IHNvdXJjZUlELCBsaW5lLCB0b2tlbkluZm8ucG9zaXRpb24uY2gsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSwgdG9r
ZW5JbmZvLnBvc2l0aW9uLmNoICsgdG9rZW4uc3RyaW5nLmxlbmd0aCwgY2FsbGJhY2spCisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUi
LCBtb3VzZVVwVGVzdC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICAKIH07CiAKIFdlYkluc3BlY3Rv
ci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3Ip
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233311</attachid>
            <date>2014-06-18 09:34:24 -0700</date>
            <delta_ts>2014-06-19 17:13:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>newdiff.diff</filename>
            <type>text/plain</type>
            <size>96638</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODFjY2IxYy4uMzNiNGQ5NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgyMyw2ICs4MjMsMTMgQEAKIAkJNDEzNTlDRjMw
RkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0
ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZvdW5k
YXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
ICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAwRUY3
QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1MjJBQkFGMjE5NDc2QjIyMDA4QjFDODUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjJB
QkFGMTE5NDc2QjIyMDA4QjFDODUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTIyQUJBRjQxOTQ3
NkI0MzAwOEIxQzg1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjJBQkFGMzE5NDc2QjQzMDA4QjFD
ODUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCAqLzsgfTsKKwkJNTIyQUJBRjcxOTQ3
NkJGQzAwOEIxQzg1IC8qIFR5cGVTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTIyQUJBRjUxOTQ3NkJGQzAwOEIxQzg1IC8qIFR5cGVTZXQuY3Bw
ICovOyB9OworCQk1MjJBQkFGODE5NDc2QkZDMDA4QjFDODUgLyogVHlwZVNldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTIyQUJBRjYxOTQ3NkJGQzAw
OEIxQzg1IC8qIFR5cGVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk1MjJBQkFGQTE5NEE4MDQzMDA4QjFDODUgLyogVHlwZUxvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjJBQkFGOTE5
NEE4MDQzMDA4QjFDODUgLyogVHlwZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTI3MEEzNDkxOTRGQzczRjAwRUREMkM0IC8qIEhp
Z2hGaWRlbGl0eUxvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MjcwQTM0NzE5NEZDNzNGMDBFREQyQzQgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCAq
LzsgfTsKKwkJNTI3MEEzNEExOTRGQzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxvZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3MEEzNDgxOTRG
QzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1MTA1MDI2MThFQjgyNzUwMDAwMUYzRSAvKiBK
U0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0NDBGODhGMEE1MDhCMTAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24u
aCAqLzsgfTsKIAkJNTU0MDc1NzIxOERBNThBRDAwRUZGN0YyIC8qIEFyZ0xpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjYwNTEyMEUyMDNFRjgw
MEI5QTY0RCAvKiBBcmdMaXN0LmggKi87IH07CiAJCTU1NDA3NTczMThEQTU4QUQwMEVGRjdGMiAv
KiBBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMjU3REU2MEUxRjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVudHMuaCAqLzsgfTsKQEAgLTI1
OTksNiArMjYwNiwxMyBAQAogCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGpz
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgfTsKIAkJNTFGMEVC
NjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5h
bWUgPSBGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9Owog
CQk1MUYwRUMwNzA1Qzg2QzlBMDBFNkRGMUIgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHls
aWIiOyBuYW1lID0gbGlib2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7
IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTUyMkFCQUYxMTk0NzZCMjIwMDhCMUM4
NSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUyMkFCQUYzMTk0NzZCNDMwMDhCMUM4NSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTIyQUJB
RjUxOTQ3NkJGQzAwOEIxQzg1IC8qIFR5cGVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVHlwZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUyMkFCQUY2MTk0NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFR5cGVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTIyQUJBRjkxOTRBODA0MzAwOEIxQzg1IC8qIFR5cGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTI3MEEzNDcxOTRGQzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaWdoRmlkZWxpdHlMb2cuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjcwQTM0ODE5NEZDNzNGMDBFREQyQzQg
LyogSGlnaEZpZGVsaXR5TG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhp
Z2hGaWRlbGl0eUxvZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwNzU4NDE4
RjRBMzc1MDA2MDJBNUQgLyogQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwN0FDODE4REE1OEFEMDBFRkY3RjIg
LyogbGliQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTVENTM3MjZEMEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gVHJhY2luZy5kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDE2Nyw2ICs0MTgxLDEyIEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBy
dW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1
MjcwQTM0NzE5NEZDNzNGMDBFREQyQzQgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCAqLywKKwkJCQk1
MjcwQTM0ODE5NEZDNzNGMDBFREQyQzQgLyogSGlnaEZpZGVsaXR5TG9nLmggKi8sCisJCQkJNTIy
QUJBRjUxOTQ3NkJGQzAwOEIxQzg1IC8qIFR5cGVTZXQuY3BwICovLAorCQkJCTUyMkFCQUY2MTk0
NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0LmggKi8sCisJCQkJNTIyQUJBRjMxOTQ3NkI0MzAwOEIx
Qzg1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgKi8sCisJCQkJNTIyQUJBRjExOTQ3
NkIyMjAwOEIxQzg1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovLAogCQkJCUJDRjYw
NTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAz
RUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCUJDMjU3REU1MEUxRjUxQzUwMDE2QjZD
OSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtNDk5OCw2ICs1MDE4LDcgQEAKIAkJCQkwRkI1NDY3
ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLAogCQkJ
CTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICov
LAogCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICov
LAorCQkJCTUyMkFCQUY5MTk0QTgwNDMwMDhCMUM4NSAvKiBUeXBlTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkI1NDY3QzE0RjVDRkQzMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5jcHAgKi8sCiAJCQkJMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUuaCAqLywKIAkJCQkxNENBOTU4QzE2QUI1MEZBMDA5MzhBMDYgLyogT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUuaCAqLywKQEAgLTU1MDEsOCArNTUyMiwxMiBAQAogCQkJCTBG
NkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MjcwQTM0QTE5NEZDNzNGMDBFREQyQzQgLyogSGlnaEZpZGVs
aXR5TG9nLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjJBQkFGODE5NDc2QkZDMDA4QjFDODUgLyog
VHlwZVNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTIyQUJBRjIxOTQ3NkIyMjAwOEIxQzg1IC8q
IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3QjgzQUMw
RTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjJBQkFGQTE5NEE4MDQzMDA4QjFDODUgLyogVHlwZUxv
Y2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyog
SW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAw
MjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTI0OEY5MTkxNDQyRDkw
MEI3RkRFNCAvKiBWYXJpYWJsZVdhdGNocG9pbnRTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
QEAgLTY5MTMsNiArNjkzOCw3IEBACiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R0J5dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMw
MDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5
NTcxNEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUyMkFCQUY3MTk0NzZCRkMwMDhCMUM4NSAvKiBUeXBlU2V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGM0IzQTI3MTU0NEM5OTUwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3N0E0MjNGMTdBMEJCRkQwMEE4REI4MSAvKiBERkdD
bG9iYmVyaXplLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3N0E0MjQxMTdBMEJCRkQwMEE4REI4
MSAvKiBERkdDbG9iYmVyU2V0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNjkyMSw2ICs2OTQ3LDcg
QEAKIAkJCQkwRjM4QjAxNzE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBp
bGF0aW9uTW9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNCM0ExQTE1M0U2OEYyMDAzRUQw
RkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTIy
QUJBRjQxOTQ3NkI0MzAwOEIxQzg1IC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkJFMEY3MjE2QzFEQjAzMDA4MkM1RTggLyogREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNTE3QTBCOENDMDA3NzNB
RDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC03MzI5LDYgKzczNTYsNyBAQAogCQkJCTBGMENENEM0MTVGNkI2QkIwMDMyRjFDMCAv
KiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTU0MUIxMTYx
M0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkQ4MkU4NjE0MUYzRkYxMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTI3MEEzNDkxOTRGQzczRjAwRUREMkM0IC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBN0MxRUFGMTE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNp
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MzBCNjEzMTI1MDA2OEYwMDlEMjVCMSAvKiBT
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFQjEwN0VD
N0U3MDA2NTA0NDYgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXgg
ZGNlODFlNy4uNTA5MGU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTEzLDYgKzExMyw3IEBACiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9yZXNvbHZlX3Njb3BlIiwgImxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9nZXRfZnJvbV9zY29wZSIsICJsZW5ndGgiIDogOCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHV0X3RvX3Njb3BlIiwgImxlbmd0aCIgOiA3IH0sCisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlIiwgImxlbmd0aCIg
OiA4IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX3dpdGhfc2NvcGUiLCAibGVu
Z3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3BvcF9zY29wZSIsICJsZW5n
dGgiIDogMSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHVzaF9uYW1lX3Njb3BlIiwg
Imxlbmd0aCIgOiA0IH0sCkBAIC0xMjIsNyArMTIzLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2RlYnVnIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9wcm9maWxlX3dpbGxfY2FsbCIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfcHJvZmlsZV9kaWRfY2FsbCIsICJsZW5ndGgiIDogMiB9LAotICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0aCIgOiAyIH0KKyAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2VuZCIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
cHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkiLCAibGVuZ3RoIiA6IDQgfQogICAgICAg
ICBdCiAgICAgfSwKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oCmluZGV4IDkyNDQ5ZjkuLjc4OTgyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC01NCw2ICs1NCw4IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2luaXRfbGF6
eV9yZWc6CiAgICAgY2FzZSBvcF9nZXRfY2FsbGVlOgogICAgIGNhc2Ugb3BfZW50ZXI6CisgICAg
Ly9UT0RPOiBTaG91bGQgdGhpcyBmdW5jdG9yIGJlIGNhbGxlZCB3aXRoIG9uZSBvcGVyYW5kPwor
ICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CiAgICAgY2FzZSBv
cF9jYXRjaDoKICAgICBjYXNlIG9wX3RvdWNoX2VudHJ5OgogICAgICAgICByZXR1cm47CkBAIC0x
MDUsNiArMTA3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgogICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNh
c2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKICAgICBjYXNlIG9wX3B1dF90b19zY29w
ZTogewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBp
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwpAQCAtMjQ5LDYg
KzI1Miw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCiAgICAgY2FzZSBvcF9wdXNoX25hbWVf
c2NvcGU6CiAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6CiAgICAgY2FzZSBvcF9wdXRfdG9f
c2NvcGU6CisgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgIGNhc2Ug
b3BfcG9wX3Njb3BlOgogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfcHJvZmlsZV93aWxs
X2NhbGw6CkBAIC0yODcsNiArMjkxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBj
YXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OgogICAg
IGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193
aXRoX2hpZ2hfZmlkZWxpdHk6CiAgICAgY2FzZSBvcF90b3VjaF9lbnRyeToKICNkZWZpbmUgTExJ
TlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBG
T1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNzc1NjNh
OS4uZTg2YzdlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVk
ZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIkhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJM
TEludEVudHJ5cG9pbnQuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IlBvbHltb3JwaGljR2V0QnlJZExpc3QuaCIKQEAgLTczMyw2ICs3MzUsMTQgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2Zp
ZGVsaXR5OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIC8vaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICArK2l0Owor
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
b3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkiKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9ub3Q6IHsKICAgICAgICAgICAgIHByaW50VW5h
cnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5vdCIpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMzUzLDYgKzEzNjMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAg
ICAgICAgICAgICAgIG9wZXJhbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgICAgICBjYXNlIG9w
X3B1dF90b19zY29wZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xMzYxLDYgKzEz
NzIsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgKytpdDsg
Ly8gU3RydWN0dXJlCiAgICAgICAgICAgICBpbnQgb3BlcmFuZCA9ICgrK2l0KS0+dS5vcGVyYW5k
OyAvLyBPcGVyYW5kCiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJwdXRfdG9fc2NvcGUiKTsKKyAgICAgICAgICAgIGlmIChvcGNvZGUgPT0g
b3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSkKKyAgICAgICAgICAgICAgICArK2l0OwogICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXU8JXN8JXM+LCA8c3RydWN0dXJlPiwg
JWQiLAogICAgICAgICAgICAgICAgIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBpZE5hbWUoaWQw
LCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksCiAgICAg
ICAgICAgICAgICAgbW9kZUFuZFR5cGUub3BlcmFuZCgpLCByZXNvbHZlTW9kZU5hbWUobW9kZUFu
ZFR5cGUubW9kZSgpKSwgcmVzb2x2ZVR5cGVOYW1lKG1vZGVBbmRUeXBlLnR5cGUoKSksCkBAIC0x
NzY0LDYgKzE3NzcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZV93aXRoX3Byb2Zp
bGU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAgICAgICAgICAgICAvLyBwdXRf
dG9fc2NvcGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVzb2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUs
IE9wZXJhbmQKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpOwpAQCAtMTc3OSw5ICsxNzkzLDc0IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxv
Y2sqIHVubGluCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkKICAgICAgICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUuc3RydWN0dXJlLnNldCgqdm0oKSwgb3duZXJF
eGVjdXRhYmxlLCBvcC5zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2
XS51LnBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihvcC5vcGVyYW5kKTsKKworICAg
ICAgICAgICAgLy8gcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSBzY29wZSwgaWQsIHZhbHVlLCBS
ZXNvbHZlTW9kZUFuZFR5cGUsIFN0cnVjdHVyZSwgT3BlcmFuZCwgVHlwZUxvY2F0aW9uKgorICAg
ICAgICAgICAgaWYgKHBjWzBdLnUub3Bjb2RlID09IG9wX3B1dF90b19zY29wZV93aXRoX3Byb2Zp
bGUpIHsKKyAgICAgICAgICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gdm0oKS0+bmV4
dExvY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgc2l6ZV90IGluc3RydWN0aW9uT2Zmc2V0ID0g
aSArIG9wTGVuZ3RoIC0gMTsKKyAgICAgICAgICAgICAgICBpbnQgZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQ7IAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwLCBjb2x1bW4g
PSAwOworICAgICAgICAgICAgICAgIG1fdW5saW5rZWRDb2RlLmdldCgpLT5leHByZXNzaW9uUmFu
Z2VGb3JCeXRlY29kZU9mZnNldChpbnN0cnVjdGlvbk9mZnNldCwgZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CisKKyAgICAgICAgICAgICAgICBsaW5lICs9IG1f
b3duZXJFeGVjdXRhYmxlLT5saW5lTm8oKTsgLy9saW5lTm8gZnJvbSBleHByZXNzaW9uUmFuZ2VG
b3JCeXRlY29kZU9mZnNldCBpcyByZWxhdGl2ZSB0byB0aGlzIGNvZGUgYmxvY2ssIGJ1dCB3ZSB3
YW50IGl0IHJlbGF0aXZlIHRvIG91ciBmaWxlLgorICAgICAgICAgICAgICAgIGxvY2F0aW9uLT51
bmxpbmtlZEJ5dGVDb2RlT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25PZmZzZXQ7CisgICAgICAgICAgICAg
ICAgbG9jYXRpb24tPmxpbmUgPSBsaW5lOworICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5jb2x1
bW4gPSBjb2x1bW47CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPnNvdXJjZUlEID0gbV9vd25l
ckV4ZWN1dGFibGUtPnNvdXJjZUlEKCk7CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPmdsb2Jh
bFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxpdHlOb0dsb2JhbElERXhpc3RzOworICAgICAgICAgICAg
ICAgIGxvY2F0aW9uLT5nbG9iYWxJbnN0cnVjdGlvbklEID0gdm0oKS0+Z2V0TmV4dFVuaXF1ZUlu
c3RydWN0aW9uSUQoKTsKKworICAgICAgICAgICAgICAgIC8vVE9ETzogaGFuZGxlIG90aGVyIG9w
LnR5cGUgaGVyZQorICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IDA7
CisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhcikgCisgICAgICAgICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlID0gb3AuYWN0aXZhdGlvbi0+c3ltYm9sVGFibGUoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2JhbFZhcikKKyAgICAgICAgICAg
ICAgICAgICAgc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5nZXQoKS0+c3ltYm9sVGFibGUo
KTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2JhbFByb3BlcnR5KSB7
CisgICAgICAgICAgICAgICAgICAgIC8vVE9ETzogaW1wbGVtZW50CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChzeW1ib2xUYWJsZSkgewor
ICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJs
ZS0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24tPmdsb2JhbFZhcmlhYmxl
SUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGlkZW50LmltcGwo
KSwgKnZtKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGluc3RydWN0
aW9uc1tpICsgN10udS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2Ugb3Bf
cHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6IHsKKworICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAg
U3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbV9zeW1ib2xUYWJsZS5nZXQoKTsKKyAgICAgICAg
ICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSB2bSgpLT5uZXh0TG9jYXRpb24oKTsKKyAgICAg
ICAgICAgIHNpemVfdCBpbnN0cnVjdGlvbk9mZnNldCA9IGkgKyBvcExlbmd0aCAtIDE7CisgICAg
ICAgICAgICBpbnQgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7IAorICAgICAgICAgICAg
dW5zaWduZWQgbGluZSA9IDAsIGNvbHVtbiA9IDA7CisgICAgICAgICAgICBtX3VubGlua2VkQ29k
ZS5nZXQoKS0+ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb25PZmZz
ZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOworICAgICAg
ICAgICAgbGluZSArPSBtX293bmVyRXhlY3V0YWJsZS0+bGluZU5vKCk7CisgICAgICAgICAgICBp
bnQgaGFzR2xvYmFsSURGbGFnID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAgICAgaWYgKGhh
c0dsb2JhbElERmxhZykgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5nbG9i
YWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yUmVnaXN0ZXIobG9ja2VyLCB2
aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCksICp2bSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSAKKyAg
ICAgICAgICAgICAgICBsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRlbGl0eU5v
R2xvYmFsSURFeGlzdHM7CisKKyAgICAgICAgICAgIGxvY2F0aW9uLT51bmxpbmtlZEJ5dGVDb2Rl
T2Zmc2V0ID0gaW5zdHJ1Y3Rpb25PZmZzZXQ7CisgICAgICAgICAgICBsb2NhdGlvbi0+bGluZSA9
IGxpbmU7CisgICAgICAgICAgICBsb2NhdGlvbi0+Y29sdW1uID0gY29sdW1uOworICAgICAgICAg
ICAgbG9jYXRpb24tPnNvdXJjZUlEID0gbV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCk7Cisg
ICAgICAgICAgICBsb2NhdGlvbi0+Z2xvYmFsSW5zdHJ1Y3Rpb25JRCA9IHZtKCktPmdldE5leHRV
bmlxdWVJbnN0cnVjdGlvbklEKCk7CisKKyAgICAgICAgICAgIC8vU3RyaW5nIG5hbWUgPSBuYW1l
Rm9yUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIC8vcHJpbnRmKCJMSU5L
SU5HOiBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSBoYXMgdW5pcXVlSUQ6JyVs
bHUnIGFuZCBuYW1lOiclcycsIGxpbmU6JyV1JywgY29sdW1uOicldSdcbiIsIGdsb2JhbElELCBu
YW1lLmFzY2lpKCkuZGF0YSgpLCBsb2NhdGlvbi0+bGluZSwgbG9jYXRpb24tPmNvbHVtbik7IAor
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyAyXS51LmxvY2F0aW9uID0gbG9jYXRpb247Cisg
ICAgICAgICAgICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKICAgICAgICAg
Y2FzZSBvcF9jYXB0dXJlZF9tb3Y6CiAgICAgICAgIGNhc2Ugb3BfbmV3X2NhcHR1cmVkX2Z1bmM6
IHsKICAgICAgICAgICAgIGlmIChwY1szXS51LmluZGV4ID09IFVJTlRfTUFYKSB7CkBAIC0yMjI1
LDYgKzIzMDQsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBv
cF9nZXRfZnJvbV9zY29wZToKKyAgICAgICAgICAgIC8vVE9ETzogd2hhdCBpcyB0aGlzIGZvcj8K
KyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKICAgICAgICAg
ICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAgICAgICAgICAgICAgICAgUmVzb2x2ZU1vZGVB
bmRUeXBlIG1vZGVBbmRUeXBlID0KICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZU1vZGVBbmRU
eXBlKGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CkBAIC0zNDU3LDYgKzM1MzgsOSBAQCBi
b29sIENvZGVCbG9jazo6dXNlc09wY29kZShPcGNvZGVJRCBvcGNvZGVJRCkKIAogU3RyaW5nIENv
ZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIp
CiB7CisgICAgaWYgKCFzeW1ib2xUYWJsZSgpKSAKKyAgICAgICAgcmV0dXJuICIiOworCiAgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2Vy
KTsKICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIHB0ciA9IHN5bWJvbFRhYmxl
KCktPmJlZ2luKGxvY2tlcik7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNjIyMzI3MS4uMWFhMGQ4YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNjMsNiArNjMsOCBA
QAogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJQcm9maWxlckpl
dHRpc29uUmVhc29uLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCisjaW5jbHVkZSAiU3Ry
b25nLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1Yklu
Zm8uaCIKICNpbmNsdWRlICJVbmNvbmRpdGlvbmFsRmluYWxpemVyLmgiCiAjaW5jbHVkZSAiVmFs
dWVQcm9maWxlLmgiCkBAIC00MDQsNyArNDA2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVh
ckV2YWxDYWNoZSgpOwogCi0gICAgU3RyaW5nIG5hbWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0
ZXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lRm9yUmVnaXN0ZXIoVmlydHVh
bFJlZ2lzdGVyKTsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgdm9pZCBzZXROdW1iZXJPZkJ5VmFs
SW5mb3Moc2l6ZV90IHNpemUpIHsgbV9ieVZhbEluZm9zLnJlc2l6ZVRvRml0KHNpemUpOyB9CkBA
IC05MzksNiArOTQxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0tub3duVG9CZUxpdmVEdXJp
bmdHQygpOyAvLyBXaWxsIG9ubHkgcmV0dXJuIHZhbGlkIHJlc3VsdHMgd2hlbiBjYWxsZWQgZHVy
aW5nIEdDLiBBc3N1bWVzIHRoYXQgeW91J3ZlIGFscmVhZHkgZXN0YWJsaXNoZWQgdGhhdCB0aGUg
b3duZXIgZXhlY3V0YWJsZSBpcyBsaXZlLgogCisgICAgLy9CYWc8VHlwZUxvY2F0aW9uPiBtX2xv
Y2F0aW9uSW5mbzsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZl
cmVuY2VzKFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0cnVjdGlvbi5oCmluZGV4IGNhNDU3NzUuLjg5ZTNjNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAK
ICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1
ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUg
IlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCkBAIC0xMTgsNiArMTE5
LDcgQEAgc3RydWN0IEluc3RydWN0aW9uIHsKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0Fj
dGl2YXRpb24+IGFjdGl2YXRpb247CiAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIGJv
b2wqIHByZWRpY2F0ZVBvaW50ZXI7CisgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb247CiAg
ICAgfSB1OwogICAgICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGVyYW5kcy5oCmluZGV4IGYyMWUwNWYuLjE5NDQ2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCkBAIC0xOTAsNiArMTkwLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBtX2FyZ3VtZW50c1tpbmRleF07CiAgICAgICAgIHJldHVybiBtX2xv
Y2Fsc1tpbmRleCAtIG51bWJlck9mQXJndW1lbnRzKCldOwogICAgIH0KKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgdmlydHVhbFJlZ2lzdGVyQXQoc2l6ZV90IGluZGV4KSAKKyAgICB7CisgICAgICAgIGlm
IChpbmRleCA8IG51bWJlck9mQXJndW1lbnRzKCkpCisgICAgICAgICAgICByZXR1cm4gdmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoaW5kZXgpOworICAgICAgICByZXR1cm4gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaW5kZXggLSBudW1iZXJPZkFyZ3VtZW50cygpKTsKKyAgICB9CiAgICAgY29u
c3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsg
fQogICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSB7IHJldHVybiBhdChpbmRleCk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYWQ4NDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgVHlwZUxvY2F0aW9uX2gKKyNkZWZpbmUgVHlwZUxvY2F0aW9uX2gKKworI2lu
Y2x1ZGUgIlR5cGVTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICBlbnVtIEhpZ2hGaWRl
bGl0eUdsb2JhbElERmxhZ3MgeworICAgICAgICBIaWdoRmlkZWxpdHlOZWVkc1VuaXF1ZUlER2Vu
ZXJhdGlvbiA9IC0xLAorICAgICAgICBIaWdoRmlkZWxpdHlOb0dsb2JhbElERXhpc3RzID0gLTIK
KyAgICB9OworCitjbGFzcyBUeXBlTG9jYXRpb24geworICAgICAgICAgICAgICAgICAgICAgICAK
K3B1YmxpYzoKKyAgICBUeXBlTG9jYXRpb24oKSAKKyAgICAgICAgOiB0eXBlU2V0KG5ldyBUeXBl
U2V0KCkpCisgICAgeworICAgIH0KKworICAgIH5UeXBlTG9jYXRpb24oKQorICAgIHsKKyAgICAg
ICAgZGVsZXRlIHR5cGVTZXQ7CisgICAgfQorCisgICAgLy91aW50NjRfdCBnbG9iYWxWYXJpYWJs
ZUlEOworICAgIGludDY0X3QgZ2xvYmFsVmFyaWFibGVJRDsKKyAgICB1aW50NjRfdCBnbG9iYWxJ
bnN0cnVjdGlvbklEOworICAgIHNpemVfdCB1bmxpbmtlZEJ5dGVDb2RlT2Zmc2V0OworICAgIGlu
dHB0cl90IHNvdXJjZUlEOworICAgIHVuc2lnbmVkIGxpbmU7CisgICAgdW5zaWduZWQgY29sdW1u
OworICAgIFR5cGVTZXQqIHR5cGVTZXQ7Cit9OworCit9IC8vbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy9Mb2NhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGU1NDliODMuLjIyMzc2Y2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0xMDAyLDYgKzEwMDIsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgQ2FwdHVyZU1vZGUgY2FwdHVy
ZU1vZGUKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjLT5pbmRleCgpKTsKICAgICBpZiAo
Y2FwdHVyZU1vZGUgPT0gSXNDYXB0dXJlZCkKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHdhdGNoYWJsZVZhcmlhYmxlKGRzdC0+aW5kZXgoKSkpOworCisgICAgLy9UT0RPOiBub3QgZmly
aW5nIGZvciB1bmRlZmluZWQgYW5kIGFzc2lnbm1lbnRzIHRvIGZ1bmN0aW9ucworICAgIGlmICgh
ZHN0LT5pc1RlbXBvcmFyeSgpICYmIGlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxp
bmcoKSkKKyAgICAgICAgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZHN0LCB0cnVl
KTsKKwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTExMTEsNiArMTExNiwyMyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQs
IFJlZ2lzdGVySUQqIGRzdAogICAgIHJldHVybiBkc3Q7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KFJlZ2lzdGVySUQqIHJlZ2lz
dGVyVG9Qcm9maWxlLCBib29sIGhhc0dsb2JhbElEKQoreworICAgIC8vb3BfcHJvZmlsZV90eXBl
c193aXRoX2hpZ2hfZmlkZWxpdHkgdmFsdWVfcmVnIGxvY2F0aW9uIGhhc0dsb2JhbElECisgICAg
Ly9pbnQzMl90IG9mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluc3RydWN0aW9ucygpLnNp
emUoKSk7CisgICAgLy9wcmludGYoImVtaXQgcHJvZmlsZSB0eXBlcyBvZmZzZXQ6JyVkJ1xuIiwg
b2Zmc2V0KTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVs
aXR5KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVnaXN0ZXJUb1Byb2ZpbGUtPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoaGFzR2xvYmFsSUQp
IC8vZW1pdE1vdmUgYW5kIHdlJ3JlIGludGVyZXN0ZWQgaW4gYSBnbG9iYWwgdmFyaWFibGUgaWQK
KyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDEpOworICAgIGVsc2UKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOyAvL3B1dF9ieV9pZCwgZG9uJ3QgdHJ5IHRvIHRyYWNlIHRv
IGEgZ2xvYmFsIG9iamVjdAorCisgICAgLy9pbnN0cnVjdGlvbnMoKS5hcHBlbmQob2Zmc2V0KTsK
K30KKworCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJ
RCogZHN0LCBib29sIGIpCiB7CiAgICAgcmV0dXJuIGVtaXRMb2FkKGRzdCwganNCb29sZWFuKGIp
KTsKQEAgLTEyNTUsMTMgKzEyNzcsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBJZGVudGlmaWUKICAgICBt
X2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwogCiAgICAgLy8gcHV0X3RvX3Njb3BlIHNjb3BlLCBpZCwgdmFsdWUsIFJlc29sdmVN
b2RlQW5kVHlwZSwgU3RydWN0dXJlLCBPcGVyYW5kCi0gICAgZW1pdE9wY29kZShvcF9wdXRfdG9f
c2NvcGUpOworICAgIGlmIChpc0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkp
CisgICAgICAgIGVtaXRPcGNvZGUob3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSk7CisgICAg
ZWxzZQorICAgICAgICBlbWl0T3Bjb2RlKG9wX3B1dF90b19zY29wZSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHNjb3BlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
YWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1
ZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFJlc29sdmVNb2RlQW5kVHlw
ZShyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUoKSkub3BlcmFuZCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGlmIChp
c0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpCisgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCgwKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTEzMjgsNiArMTM1
NSwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcAogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOworCisgICAgaWYgKGlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxp
bmcoKSkKKyAgICAgICAgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodmFsdWUsIGZh
bHNlKTsKKwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDVlNWVkNjEu
LjIwNDU5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMzMiw2ICszMzIsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBlbWl0Tm9kZShuKTsKICAgICAgICAgfQogCisgICAgICAg
IHZvaWQgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoUmVnaXN0ZXJJRCogZHN0LCBi
b29sKTsKKwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGJv
b2wpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJs
ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgY29uc3Qg
SWRlbnRpZmllciYpOwpAQCAtNjc3LDYgKzY3OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIFZNKiBtX3ZtOwogCisgICAgICAgIGJvb2wgaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGluZygpIHsgcmV0dXJuIHZtKCktPmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVs
aXR5KCk7IH0KKwogICAgICAgICBPcGNvZGVJRCBtX2xhc3RPcGNvZGVJRDsKICNpZm5kZWYgTkRF
QlVHCiAgICAgICAgIHNpemVfdCBtX2xhc3RPcGNvZGVQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAwNTBm
N2VhLi44MDBkNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC03NDAsMTMgKzc0MCwxNSBAQCBSZWdpc3RlcklEKiBQ
b3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZAogICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAg
IGxvY2FsUmVnID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgbG9jYWxSZWcpOwotICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkg
eworICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNH
ZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKSB7CiAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7
CiAgICAgICAgICAgICBBU1NFUlQoZHN0ICE9IGxvY2FsUmVnKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0ZW1wRHN0U3JjID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUb051bWJlcih0ZW1wRHN0LmdldCgpLCBsb2NhbFJlZyk7
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUodGVtcERzdFNyYy5nZXQoKSwgbG9jYWxS
ZWcpOwogICAgICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdGVtcERzdFNyYy5nZXQo
KSwgbV9vcGVyYXRvcik7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzR2VuZXJhdGluZ0hp
Z2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUobG9jYWxSZWcsIHRlbXBEc3RTcmMuZ2V0KCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHRlbXBEc3QuZ2V0KCk7CiAgICAgICAgIH0KQEAgLTkxNSwxMCAr
OTE3LDEyIEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgICAgIGlmIChsb2NhbC5pc1Jl
YWRPbmx5KCkpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25J
Zk5lZWRlZCgpOwogICAgICAgICAgICAgbG9jYWxSZWcgPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBsb2NhbFJlZyk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAobG9jYWwuaXNDYXB0dXJlZCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobG9jYWwuaXNDYXB0
dXJlZCgpIHx8IGdlbmVyYXRvci5pc0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5n
KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRl
bXBEc3QuZ2V0KCksIGxvY2FsUmVnKTsKICAgICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0
b3IsIHRlbXBEc3QuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRv
ci5pc0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpCisgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsUmVnLCB0ZW1w
RHN0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRp
b25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CkBAIC0xNDA3LDI2ICsx
NDExLDI5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVySUQqIGVtaXRSZWFkTW9kaWZ5
QXNzaWdubWVudChCeXRlY29kZUdlbmVyYXRvciYgZ2VuCiAKIFJlZ2lzdGVySUQqIFJlYWRNb2Rp
ZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBKU1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90
U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7CiAgICAgaWYgKExvY2FsIGxvY2FsID0gZ2VuZXJh
dG9yLmxvY2FsKG1faWRlbnQpKSB7CiAgICAgICAgIGlmIChsb2NhbC5pc1JlYWRPbmx5KCkpIHsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpOwog
ICAgICAgICAgICAgcmV0dXJuIGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGxvY2FsLmdldCgpLCBtX3JpZ2h0LCBtX29w
ZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+
cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYg
KGxvY2FsLmlzQ2FwdHVyZWQoKQorICAgICAgICAgICAgfHwgZ2VuZXJhdG9yLmlzR2VuZXJhdGlu
Z0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKQogICAgICAgICAgICAgfHwgZ2VuZXJhdG9yLmxl
ZnRIYW5kU2lkZU5lZWRzQ29weShtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVy
ZShnZW5lcmF0b3IpKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92
ZShyZXN1bHQuZ2V0KCksIGxvY2FsLmdldCgpKTsKICAgICAgICAgICAgIGVtaXRSZWFkTW9kaWZ5
QXNzaWdubWVudChnZW5lcmF0b3IsIHJlc3VsdC5nZXQoKSwgcmVzdWx0LmdldCgpLCBtX3JpZ2h0
LCBtX29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9y
aWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlz
R2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSkKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rp
dm90KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5nZXQoKSwgcmVzdWx0
LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25J
Zk5lZWRlZChkc3QsIHJlc3VsdC5nZXQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAg
ICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRv
ciwgbG9jYWwuZ2V0KCksIGxvY2FsLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5k
VHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRv
cigpKSk7CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRl
ZChkc3QsIHJlc3VsdCk7CiAgICAgfQogCi0gICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBk
aXZvdFN0YXJ0KCkgKyBtX2lkZW50Lmxlbmd0aCgpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8obmV3RGl2b3QsIGRpdm90U3RhcnQoKSwgbmV3RGl2b3QpOwogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgbV9pZGVudCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0g
Z2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29w
ZS5nZXQoKSwgbV9pZGVudCwgVGhyb3dJZk5vdEZvdW5kKTsKQEAgLTE0NDMsOSArMTQ1MCwxMSBA
QCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFk
T25seUV4Y2VwdGlvbklmTmVlZGVkKCk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVt
aXROb2RlKGRzdCwgbV9yaWdodCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxvY2FsLmlzQ2Fw
dHVyZWQoKSkgeworICAgICAgICBpZiAobG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci5p
c0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpIHsKICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHRlbXBEc3QuZ2V0KCksIG1fcmlnaHQp
OworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsaW5nKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRNb3ZlKGxvY2FsLmdldCgpLCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgICAgIHJl
dHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0
KCkpOwogICAgICAgICB9CkBAIC0xNTQ4LDEyICsxNTU3LDEzIEBAIFJlZ2lzdGVySUQqIENvbnN0
RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiAg
ICAgICAgIGlmICghbV9pbml0KQogICAgICAgICAgICAgcmV0dXJuIGxvY2FsLmdldCgpOwogCi0g
ICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkpIHsKKyAgICAgICAgLy9UT0RPOiBtYXliZSBw
dXQgZW1pdEV4cHJlc3Npb25JbmZvIGhlcmUKKyAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQo
KSB8fCBnZW5lcmF0b3IuaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKSB7
CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wRHN0LmdldCgp
LCBtX2luaXQpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5n
ZXQoKSwgdGVtcERzdC5nZXQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShsb2NhbC5nZXQoKSwgbV9pbml0KTsKICAgICB9CiAKQEAg
LTE4NzEsNyArMTg4MSw4IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICAgICAgSWRlbnRp
ZmllciBpZGVudCA9IHNpbXBsZUJpbmRpbmctPmJvdW5kUHJvcGVydHkoKTsKICAgICAgICAgICAg
IExvY2FsIGxvY2FsID0gZ2VuZXJhdG9yLmxvY2FsKGlkZW50KTsKICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZSA9IGxvY2FsLmdldCgpOwotICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwg
bG9jYWwuaXNDYXB0dXJlZCgpKQorICAgICAgICAgICAgLy9UT0RPOiBtYXliZSBlbWl0IGV4cHJl
c3Npb24gaW5mbz8/PworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwgbG9jYWwuaXND
YXB0dXJlZCgpIHx8IGdlbmVyYXRvci5pc0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmls
aW5nKCkpCiAgICAgICAgICAgICAgICAgZ290byBnZW5lcmljQmluZGluZzsKICAgICAgICAgICAg
IGV4cGVjdGVkU3Vic2NyaXB0ID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5wdXNoT3B0aW1p
c2VkRm9ySW4oZXhwZWN0ZWRTdWJzY3JpcHQuZ2V0KCksIGl0ZXIuZ2V0KCksIGkuZ2V0KCksIHBy
b3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDE4MjUwYjku
LmVjODQ3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC05NjksNiArOTY5
LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCiAj
aWYgRU5BQkxFKEFMTE9DQVRJT05fTE9HR0lORykKICAgICBkYXRhTG9nRigiSlNDIEdDIHN0YXJ0
aW5nIGNvbGxlY3Rpb24uXG4iKTsKICNlbmRpZgorICAgIHZtKCktPnVwZGF0ZUhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlU3RhdGUoKTsKICAgICAKICAgICBkb3VibGUgYmVmb3JlID0gMDsKICAgICBp
ZiAoT3B0aW9uczo6bG9nR0MoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5k
ZXggZDhkNjlhMi4uYzYyMGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBA
IC0zNSw2ICszNSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkNvbXBs
ZXRpb24uaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKQEAgLTE5MSw2ICsxOTIsMTQgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OnJ1bihFcnJvclN0cmluZyopCiB7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpnZXRSdW50aW1lVHlwZUZvclZhcmlhYmxlSW5UZXh0UmFuZ2UoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGluX3ZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGluX3N0YXJ0TGluZSwgaW50IGluX3N0YXJ0Q29sdW1uLCBpbnQgaW5fZW5kTGluZSwg
aW50IGluX2VuZENvbHVtbiwgU3RyaW5nKiBvdXRfdHlwZXMpIAoreworICAgIFZNJiB2bSA9IGds
b2JhbFZNKCk7CisgICAgU3RyaW5nIHR5cGVzKHZtLmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdl
KGluX3N0YXJ0TGluZSwgaW5fc3RhcnRDb2x1bW4sIGluX2VuZExpbmUsIGluX2VuZENvbHVtbiwg
aW5fdmFyaWFibGVOYW1lLCBpbl9pZCkpOworICAgICpvdXRfdHlwZXMgPSB0eXBlczsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUnVudGltZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCBkNmMxZWVhLi5mNDg0MzkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBjb25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNj
cmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9y
Pj4mIGludGVybmFsUHJvcGVydGllcykgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lk
IHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXApIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcqKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4
dFJhbmdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0
IFN0cmluZyYgaW5faWQsIGludCBpbl9zdGFydExpbmUsIGludCBpbl9zdGFydENvbHVtbiwgaW50
IGluX2VuZExpbmUsIGludCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5cGVzKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc2V0U2NyaXB0RGVidWdTZXJ2ZXIoU2NyaXB0RGVidWdTZXJ2ZXIqIHNj
cmlwdERlYnVnU2VydmVyKSB7IG1fc2NyaXB0RGVidWdTZXJ2ZXIgPSBzY3JpcHREZWJ1Z1NlcnZl
cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL1J1bnRpbWUuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvUnVudGltZS5qc29uCmluZGV4IGY3YmYxMzMuLjZjNjEyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29uCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29uCkBAIC0x
OTYsNiArMTk2LDIxIEBACiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImRpc2FibGUi
LAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIHJlcG9ydGluZyBvZiBleGVj
dXRpb24gY29udGV4dHMgY3JlYXRpb24uIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICAibmFtZSI6ICJnZXRSdW50aW1lVHlwZUZvclZhcmlhYmxlSW5UZXh0UmFuZ2UiLAorICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2YXJp
YWJsZU5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVmFyaWFibGUgd2Ug
d2FudCB0eXBlIGluZnJvbWF0aW9uIGZvci4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJzb3VyY2VJRCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJzb3VyY2VJRCB1
bmlxdWVseSBpZGVudGlmeWluZyBhIHNjcmlwdCIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInN0YXJ0TGluZSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAic3RhcnQg
bGluZSBmb3IgdmFyaWFibGUgbmFtZSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
YXJ0Q29sdW1uIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJzdGFydCBjb2x1
bW4gZm9yIHZhcmlhYmxlIG5hbWUiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRM
aW5lIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJlbmQgbGluZSBmb3IgdmFy
aWFibGUgbmFtZSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuZENvbHVtbiIsICJ0
eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiZW5kIGNvbHVtbiBmb3IgdmFyaWFibGUg
bmFtZSIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAidHlwZXMiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRp
b24iOiAiVHlwZXMgZm9yIHJlcXVlc3RlZCB2YXJpYWJsZS4iIH0KKyAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBkZXRhaWxlZCBpbmZvcm10YXRpb24g
b24gZ2l2ZW4gZnVuY3Rpb24uIgogICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAppbmRleCA4ZjRiNmQ0Li5iY2ZhZjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiQ29tcGxldGlvbi5oIgogI2luY2x1ZGUgIkNvcGllZFNwYWNlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKQEAgLTM3LDEyICszOCwxNCBAQAogI2luY2x1
ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5o
IgorI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgog
I2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlu
bGluZXMuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKKyNpbmNsdWRlICJUeXBlU2V0
LmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3Rk
bGliLmg+CkBAIC0zNDYsNiArMzQ5LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhlY1N0
YXRlKik7CiAjZW5kaWYKIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25QcmludFZhcmlhYmxlc0luQ29kZUJsb2NrR2l2ZW5SYW5nZShFeGVjU3RhdGUqKTsKKwog
c3RydWN0IFNjcmlwdCB7CiAgICAgYm9vbCBpc0ZpbGU7CiAgICAgY2hhciogYXJndW1lbnQ7CkBA
IC00ODcsNiArNDkyLDggQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAi
Y3JlYXRlSW1wdXJlR2V0dGVyIiwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIsIDEpOwogICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgInNldEltcHVyZUdldHRlckRlbGVnYXRlIiwgZnVuY3Rpb25T
ZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSwgMik7CisKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJw
cmludFZhcmlhYmxlc0luQ29kZUJsb2NrR2l2ZW5SYW5nZSIsIGZ1bmN0aW9uUHJpbnRWYXJpYWJs
ZXNJbkNvZGVCbG9ja0dpdmVuUmFuZ2UsIDQpOwogICAgICAgICAKICAgICAgICAgSlNBcnJheSog
YXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQpAQCAtOTEyLDYgKzkx
OSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFrZU1hc3F1ZXJh
ZGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hc3F1ZXJh
ZGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludFZhcmlhYmxlc0lu
Q29kZUJsb2NrR2l2ZW5SYW5nZShFeGVjU3RhdGUqKQoreworICAgIC8vU2NyaXB0RXhlY3V0YWJs
ZSogZW5jbG9zaW5nRXhlY3V0YWJsZSA9IGV4ZWMtPnZtKCkuZmluZFNtYWxsZXN0RW5jbG9zaW5n
U2NyaXB0RXhlY3V0YWJsZShleGVjLT5hcmd1bWVudCgwKS5hc1VJbnQzMigpLCBleGVjLT5hcmd1
bWVudCgxKS5hc1VJbnQzMigpLAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGVjLT5hcmd1bWVudCgyKS5hc1VJbnQzMigpLCBleGVjLT5hcmd1bWVudCgzKS5hc1VJbnQz
MigpLAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5jb2RlQmxv
Y2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpKTsKKyAgICAvL3ByaW50ZigiXG5G
b3VuZCBTY3JpcHQgRXhlY3V0YWJsZVxuIik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKK30KKworCisKIC8vIFVzZSBTRUggZm9yIFJlbGVhc2UgYnVpbGRzIG9u
bHkgdG8gZ2V0IHJpZCBvZiB0aGUgY3Jhc2ggcmVwb3J0IGRpYWxvZwogLy8gKGx1Y2tpbHkgdGhl
IHNhbWUgdGVzdHMgZmFpbCBpbiBSZWxlYXNlIGFuZCBEZWJ1ZyBidWlsZHMgc28gZmFyKS4gTmVl
ZCB0bwogLy8gYmUgaW4gYSBzZXBhcmF0ZSBtYWluIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGpzY21h
aW4gZnVuY3Rpb24gcmVxdWlyZXMgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1YTEwOTY4Li5hZWNiMjhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSGln
aEZpZGVsaXR5TG9nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQu
aCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCkBAIC01Myw2ICs1NCw4IEBACiAjaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiUHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRl
IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIApAQCAtMTY3LDcgKzE3MCwzMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAgICAgRXhlY1N0YXRlKiBfX3JjZl9leGVj
ID0gKGV4ZWNDYWxsZWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTExJ
TlRfUkVUVVJOX1RXTyhwYywgX19yY2ZfZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKLSAgICAKKworI2RlZmluZSBMTElOVF9QVVRfVE9f
U0NPUEVfQ09NTU9OKCkgXAorICAgIExMSU5UX0JFR0lOKCk7IFwKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOyBcCisgICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsgXAorICAgIEpTT2Jq
ZWN0KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7IFwK
KyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7IFwKKyAgICBSZXNv
bHZlTW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUgPSBSZXNvbHZlTW9kZUFuZFR5cGUocGNbNF0udS5v
cGVyYW5kKTsgXAorIFwKKyAgICBpZiAobW9kZUFuZFR5cGUubW9kZSgpID09IFRocm93SWZOb3RG
b3VuZCAmJiAhc2NvcGUtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkgXAorICAgICAgICBMTElO
VF9USFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7IFwKKyBc
CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpOyBcCisgICAgc2NvcGUtPm1ldGhvZFRhYmxlKCktPnB1dChzY29wZSwgZXhlYywgaWRlbnQs
IHZhbHVlLCBzbG90KTsgXAorIFwKKyAgICAvKiBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2lu
Y2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBr
bm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4qLyAgXAorICAgIGlmIChtb2Rl
QW5kVHlwZS50eXBlKCkgPT0gR2xvYmFsUHJvcGVydHkgfHwgbW9kZUFuZFR5cGUudHlwZSgpID09
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgeyBcCisgICAgICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlUHV0KCkgJiYgc2xvdC5iYXNlKCkgPT0gc2NvcGUgJiYgc2NvcGUtPnN0
cnVjdHVyZSgpLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsgXAorICAgICAgICAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOyBcCisgICAg
ICAgICAgICBwY1s1XS51LnN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgc2NvcGUtPnN0cnVjdHVyZSgpKTsgXAorICAgICAgICAgICAgcGNbNl0u
dS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsgXAorICAgICAgICB9IFwKKyAgICB9IFwK
KwogCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4
ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFu
ZCkKIHsKQEAgLTUzNCw2ICs1NjAsMTUgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25ld19yZWdleHApCiAgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKHZtLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsK
IH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9o
aWdoX2ZpZGVsaXR5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVHlwZUxvY2F0aW9uKiBs
b2NhdGlvbiA9IHBjWzJdLnUubG9jYXRpb247CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCk7CisgICAgdm0uaGlnaEZpZGVsaXR5TG9nKCktPnJlY29yZFR5cGVJbmZvcm1h
dGlvbkZvckxvY2F0aW9uKHYsIGxvY2F0aW9uKTsKKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQor
CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfaGFzX2luc3RhbmNlKQogewog
ICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xNDI4LDMwICsxNDYzLDIwIEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV9zY29wZSkKICAgICBMTElOVF9SRVRVUk4oc2xvdC5n
ZXRWYWx1ZShleGVjLCBpZGVudCkpOwogfQogCisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wdXRfdG9fc2NvcGUpCiB7Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7Ci0gICAgSlNPYmpl
Y3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7Ci0gICAgUmVzb2x2ZU1v
ZGVBbmRUeXBlIG1vZGVBbmRUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBlKHBjWzRdLnUub3BlcmFu
ZCk7Ci0KLSAgICBpZiAobW9kZUFuZFR5cGUubW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAh
c2NvcGUtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkKLSAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwotCi0gICAgUHV0UHJvcGVy
dHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwotICAgIHNjb3Bl
LT5tZXRob2RUYWJsZSgpLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7Ci0K
LSAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1
bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVt
IGF0IGNvbXBpbGUgdGltZS4KLSAgICBpZiAobW9kZUFuZFR5cGUudHlwZSgpID09IEdsb2JhbFBy
b3BlcnR5IHx8IG1vZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3MpIHsKLSAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiBzbG90
LmJhc2UoKSA9PSBzY29wZSAmJiBzY29wZS0+c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNzZXNB
cmVDYWNoZWFibGUoKSkgewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
Y29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgcGNbNV0udS5zdHJ1Y3R1cmUuc2V0KGV4
ZWMtPnZtKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHNjb3BlLT5zdHJ1Y3R1cmUo
KSk7Ci0gICAgICAgICAgICBwY1s2XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwot
ICAgICAgICB9Ci0gICAgfQorICAgIExMSU5UX1BVVF9UT19TQ09QRV9DT01NT04oKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19z
Y29wZV93aXRoX3Byb2ZpbGUpCit7CisgICAgLy8gcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSBz
Y29wZSwgaWQsIHZhbHVlLCBSZXNvbHZlTW9kZUFuZFR5cGUsIFN0cnVjdHVyZSwgT3BlcmFuZCwg
VHlwZUxvY2F0aW9uKgorICAgIExMSU5UX1BVVF9UT19TQ09QRV9DT01NT04oKTsKKyAgICBUeXBl
TG9jYXRpb24qIGxvY2F0aW9uID0gcGNbN10udS5sb2NhdGlvbjsKKyAgICBKU1ZhbHVlIHYgPSBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICB2bS5oaWdoRmlkZWxpdHlMb2coKS0+cmVjb3Jk
VHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24odiwgbG9jYXRpb24pOwogICAgIExMSU5UX0VORCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmlu
ZGV4IDljNmYxMjIuLjJhOTNjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCkBAIC0xMjQsNiArMTI0LDggQEAgTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9oYW5kbGVfZXhjZXB0aW9uKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2dldF9mcm9tX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSk7CitMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsK
IGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93
X2Vycm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKExM
SU5UX0NfTE9PUCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2No
ZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXgg
ZDI4Njg3YS4uMDBkZGIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTIzMiwzICsxMjMyLDExIEBAIGVuZAogX2xs
aW50X29wX2luaXRfZ2xvYmFsX2NvbnN0X25vcDoKICAgICBkaXNwYXRjaCg1KQogCitfbGxpbnRf
b3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkpCisgICAgZGlz
cGF0Y2goNCkKKworX2xsaW50X29wX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF90b19z
Y29wZV93aXRoX3Byb2ZpbGUpCisgICAgZGlzcGF0Y2goOCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggZGUzODhlMS4uOGU4ZmY0YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5j
bHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIlR5cGVTZXQuaCIKICNpbmNsdWRl
IDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaAppbmRleCBiNThhNTdiLi5kODMxNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAi
UmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAj
aW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlR5cGVTZXQuaCIKICNpbmNsdWRlICJV
bmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMDYyOTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCkBAIC0w
LDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxvZy5oIgorCisj
aW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEhpZ2hG
aWRlbGl0eUxvZzo6aW5pdGlhbGl6ZUhpZ2hGaWRlbGl0eUxvZygpCit7CisgICAgbV9oaWdoRmlk
ZWxpdHlMb2dTaXplID0gMTAwMDA7CisgICAgbV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0ciA9IChM
b2czVHVwbGUqKikgbWFsbG9jKHNpemVvZihMb2czVHVwbGUqKSAqIG1faGlnaEZpZGVsaXR5TG9n
U2l6ZSk7CisgICAgTG9nM1R1cGxlKiogcHRyID0gbV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0cjsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9oaWdoRmlkZWxpdHlMb2dTaXplOyBpKysp
IHsKKyAgICAgICAgKnB0ciA9IG5ldyBMb2czVHVwbGU7IAorICAgICAgICBwdHIrKzsKKyAgICB9
CisKKyAgICBtX2hpZ2hGaWRlbGl0eUxvZ0N1cnJlbnRQcm9jZXNzT2Zmc2V0ID0gMDsKK30KKwor
SGlnaEZpZGVsaXR5TG9nOjp+SGlnaEZpZGVsaXR5TG9nKCkKK3sKKyAgICBMb2czVHVwbGUqKiBw
dHIgPSBtX2hpZ2hGaWRlbGl0eUxvZ1N0YXJ0UHRyOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9oaWdoRmlkZWxpdHlMb2dTaXplOyBpKyspIHsKKyAgICAgICAgZGVsZXRlICpwdHI7Cisg
ICAgICAgIHB0cisrOworICAgIH0KKworICAgIGZyZWUobV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0
cik7Cit9CisKK3ZvaWQgSGlnaEZpZGVsaXR5TG9nOjpyZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JM
b2NhdGlvbihKU1ZhbHVlIHYsIFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgQVNTRVJU
KG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQdHIpOworICAgIEFTU0VSVChtX2hpZ2hGaWRlbGl0eUxv
Z0N1cnJlbnRQcm9jZXNzT2Zmc2V0IDwgbV9oaWdoRmlkZWxpdHlMb2dTaXplKTsKKworICAgIExv
ZzNUdXBsZSogdHVwbGUgPSAqKG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQdHIgKyBtX2hpZ2hGaWRl
bGl0eUxvZ0N1cnJlbnRQcm9jZXNzT2Zmc2V0KTsKKyAgICB0dXBsZS0+bG9jYXRpb24gPSBsb2Nh
dGlvbjsKKyAgICB0dXBsZS0+dmFsdWUgPSB2OworICAgIHR1cGxlLT5zdHJ1Y3R1cmVJRCA9ICh2
LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSA6IDApOyAvLzAgaXMgaW52YWxp
ZCBzdHJ1Y3R1cmVJRAorCisgICAgbV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNl
dCArPSAxOworICAgIGlmIChtX2hpZ2hGaWRlbGl0eUxvZ0N1cnJlbnRQcm9jZXNzT2Zmc2V0ID09
IG1faGlnaEZpZGVsaXR5TG9nU2l6ZSkKKyAgICAgICAgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygp
OworfQorCit2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygpCit7
CisgICAgTG9nM1R1cGxlKiogcHRyID0gbV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0cjsKKyAgICBz
aXplX3QgaSA9IDA7CisgICAgd2hpbGUgKGkgPCBtX2hpZ2hGaWRlbGl0eUxvZ0N1cnJlbnRQcm9j
ZXNzT2Zmc2V0KSB7CisgICAgICAgIExvZzNUdXBsZSogdHVwbGUgPSAqcHRyOworICAgICAgICBU
eXBlU2V0KiB0eXBlU2V0ID0gdHVwbGUtPmxvY2F0aW9uLT50eXBlU2V0OworICAgICAgICAvL1RP
RE86IE1heWJlIGFic3RyYWN0IHRoaXMgYXdheSBpbiBIZWFwCisgICAgICAgIHR5cGVTZXQtPmFk
ZFR5cGVGb3JWYWx1ZSh0dXBsZS0+dmFsdWUsIHR1cGxlLT5zdHJ1Y3R1cmVJRCA/IEhlYXA6Omhl
YXAodHVwbGUtPnZhbHVlKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldCh0dXBsZS0+c3RydWN0dXJl
SUQpIDogbnVsbHB0cik7CisgICAgICAgIHB0cisrOworICAgICAgICBpKys7CisgICAgfQorCisg
ICAgbV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldCA9IDA7Cit9CisKKworfSAv
L25hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0hpZ2hGaWRlbGl0eUxvZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZp
ZGVsaXR5TG9nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNmNmY2Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRl
bGl0eUxvZy5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIaWdoRmlkZWxpdHlMb2dfaAorI2RlZmluZSBIaWdo
RmlkZWxpdHlMb2dfaAorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworICAgIGNsYXNzIFR5cGVMb2NhdGlvbjsKKworCitjbGFzcyBIaWdoRmlkZWxp
dHlMb2cgeworCitwdWJsaWM6CisKKyAgICBzdHJ1Y3QgTG9nM1R1cGxlIHsKKyAgICAgICAgcHVi
bGljOgorCisgICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgIFR5cGVMb2NhdGlvbiogbG9j
YXRpb247IC8vVHlwZUxvY2F0aW9uKiBhcmUgYWxsb2NhdGVkIGR1cmluZyBsaW5rIHRpbWUgaW4g
YSBDb2RlQmxvY2suIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgbm8gY29kZSBibG9ja3MgZGllIGJl
Zm9yZSB3ZSBwcm9jZXNzIHRoZSBsb2cuCisgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlE
OworICAgIH07CisKKyAgICBIaWdoRmlkZWxpdHlMb2coKQorICAgIHsKKyAgICAgICAgaW5pdGlh
bGl6ZUhpZ2hGaWRlbGl0eUxvZygpOworICAgIH0KKworICAgIH5IaWdoRmlkZWxpdHlMb2coKTsK
KworICAgIHZvaWQgcmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2LCBU
eXBlTG9jYXRpb24qKTsKKyAgICB2b2lkIHByb2Nlc3NIaWdoRmlkZWxpdHlMb2coKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKKworICAgIHVuc2ln
bmVkIG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsKKyAgICBzaXplX3QgbV9oaWdoRmlkZWxpdHlMb2dD
dXJyZW50UHJvY2Vzc09mZnNldDsKKyAgICBMb2czVHVwbGUqKiBtX2hpZ2hGaWRlbGl0eUxvZ1N0
YXJ0UHRyOworCit9OworCit9IC8vbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy9IaWdoRmlkZWxp
dHlMb2dfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZTZkMTFlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKKworI2lu
Y2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU3RyaW5nIEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQg
c3RhcnRMaW5lLCB1bnNpZ25lZCAsIHVuc2lnbmVkICwgdW5zaWduZWQgLCBjb25zdCBTdHJpbmcm
ICwgaW50cHRyX3Qgc291cmNlSUQpCit7CisgICAgYXV0byBpdGVyID0gbV9nbG9iYWxMb2NhdGlv
blRvR2xvYmFsSURNYXAuZmluZChnZXRMb2NhdGlvbkJhc2VkSGFzaChzb3VyY2VJRCwgc3RhcnRM
aW5lKSk7CisgICAgYXV0byBlbmQgPSBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcC5lbmQo
KTsKKyAgICBpZiAoaXRlciA9PSBlbmQpIHsgLy9sb29rdXAgYnkgc3BlY2lmaWMgbG9jYXRpb24K
KyAgICAgICAgYXV0byBpdGVyID0gbV9nbG9iYWxMb2NhdGlvbk1hcC5maW5kKGdldExvY2F0aW9u
QmFzZWRIYXNoKHNvdXJjZUlELCBzdGFydExpbmUpKTsKKyAgICAgICAgYXV0byBlbmQgPSBtX2ds
b2JhbExvY2F0aW9uTWFwLmVuZCgpOworICAgICAgICAvL1RPRE86IHRoaXMgYXNzc2VydGlvbiBz
aG91bGQgYWx3YXlzIGhvbGQsIGJ1dCBkb2Vzbid0CisgICAgICAgIC8vQVNTRVJUKGl0ZXIgIT0g
ZW5kKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gZW5kKQorICAgICAgICAgICAgcmV0dXJuICAiIjsK
KworICAgICAgICByZXR1cm4gaXRlci0+dmFsdWUuc2VlblR5cGVzKCk7CisgICAgfSBlbHNlIHsg
Ly9sb29rdXAgYnkgZ2xvYmFsIGlkCisgICAgICAgIGF1dG8gaXRlcjIgPSBtX2dsb2JhbElETWFw
LmZpbmQoaXRlci0+dmFsdWUpOworICAgICAgICBhdXRvIGVuZDIgPSBtX2dsb2JhbElETWFwLmVu
ZCgpOworICAgICAgICBpZiAoaXRlcjIgPT0gZW5kMikKKyAgICAgICAgICAgIHJldHVybiAiIjsK
KworICAgICAgICByZXR1cm4gaXRlcjItPnZhbHVlLnNlZW5UeXBlcygpOworICAgIH0KK30KKwor
dm9pZCBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6Om1lcmdlSW5UeXBlc0ZvckxvY2F0aW9uKFR5
cGVMb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgaWYgKGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJs
ZUlEICE9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHMpIHsKKyAgICAgICAgQVNTRVJUKG1f
Z2xvYmFsSURNYXAuaXNWYWxpZEtleShsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCkpOworICAg
ICAgICBhdXRvIGl0ZXIgPSBtX2dsb2JhbElETWFwLmZpbmQobG9jYXRpb24tPmdsb2JhbFZhcmlh
YmxlSUQpOworICAgICAgICBhdXRvIGVuZCA9IG1fZ2xvYmFsSURNYXAuZW5kKCk7CisgICAgICAg
IFR5cGVTZXQgdHlwZVNldCA9ICoobG9jYXRpb24tPnR5cGVTZXQpOworICAgICAgICBpZiAoaXRl
ciAhPSBlbmQpIAorICAgICAgICAgICAgdHlwZVNldC5tZXJnZVdpdGhUeXBlU2V0KGl0ZXItPnZh
bHVlKTsKKworICAgICAgICBtX2dsb2JhbElETWFwLnNldChsb2NhdGlvbi0+Z2xvYmFsVmFyaWFi
bGVJRCwgdHlwZVNldCk7CisgICAgfQorCisgICAgU3RyaW5nIGhhc2hTdHJpbmcoZ2V0TG9jYXRp
b25CYXNlZEhhc2gobG9jYXRpb24tPnNvdXJjZUlELCBsb2NhdGlvbi0+bGluZSkpOworICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fZ2xvYmFsTG9jYXRpb25NYXAuaXNWYWxpZEtleShoYXNoU3RyaW5n
KSk7CisgICAgICAgIGF1dG8gaXRlciA9IG1fZ2xvYmFsTG9jYXRpb25NYXAuZmluZChoYXNoU3Ry
aW5nKTsKKyAgICAgICAgYXV0byBlbmQgPSBtX2dsb2JhbExvY2F0aW9uTWFwLmVuZCgpOworICAg
ICAgICBUeXBlU2V0IHR5cGVTZXQgPSAqKGxvY2F0aW9uLT50eXBlU2V0KTsKKyAgICAgICAgaWYg
KGl0ZXIgIT0gZW5kKSAKKyAgICAgICAgICAgIHR5cGVTZXQubWVyZ2VXaXRoVHlwZVNldChpdGVy
LT52YWx1ZSk7CisKKyAgICAgICAgbV9nbG9iYWxMb2NhdGlvbk1hcC5zZXQoaGFzaFN0cmluZywg
dHlwZVNldCk7CisgICAgfSAKKworICAgIGlmIChsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCAh
PSBIaWdoRmlkZWxpdHlOb0dsb2JhbElERXhpc3RzKSAvL2J1aWxkIHRoZSByZWxhdGlvbnNoaXAg
TWFwOmhhc2hTdHJpbmc9Pmdsb2JhbElkLCBNYXAyOmdsb2JhbElEPT5UeXBlU2V0CisgICAgICAg
IG1fZ2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwLnNldChoYXNoU3RyaW5nLCBsb2NhdGlvbi0+
Z2xvYmFsVmFyaWFibGVJRCk7CisKKworfQorCitXVEY6OlN0cmluZyBIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXI6OmdldExvY2F0aW9uQmFzZWRIYXNoKGludHB0cl90IGlkLCB1bnNpZ25lZCBsaW5l
KQoreworICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihpZCkgKyBTdHJpbmcoIjoiKSArIFN0cmlu
Zzo6bnVtYmVyKGxpbmUpOworfQorCisKK30gLy9uYW1lc3BhY2UgSlNDCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGViYTUyNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5oCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJf
aAorI2RlZmluZSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJfaAorCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisgICAgY2xhc3MgU3RyaW5nOworfQorCituYW1l
c3BhY2UgSlNDIHsKKworICAgIGNsYXNzIFR5cGVMb2NhdGlvbjsKKworCitjbGFzcyBIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIgeworCitwdWJsaWM6CisKKworICAgIFdURjo6U3RyaW5nIGdldFR5
cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgV1RGOjpT
dHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpOworICAgIHZvaWQgbWVyZ2VJ
blR5cGVzRm9yTG9jYXRpb24oVHlwZUxvY2F0aW9uKik7CisgICAgCitwcml2YXRlOgorICAgIHN0
YXRpYyBXVEY6OlN0cmluZyBnZXRMb2NhdGlvbkJhc2VkSGFzaChpbnRwdHJfdCwgdW5zaWduZWQp
OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6U3RyaW5nLCBUeXBlU2V0PiBHbG9iYWxMb2Nh
dGlvbk1hcDsgLy8oZm9yIG5vdywgaGFjayBpdCBhbmQgc2F5IE1hcDogIklEOkxpbmUiID0+IFR5
cGVTZXQuIE9idmlvdXNseSwgdGhpcyBhc3N1bWVzIGFsbCBhc3NpZ25tZW50cyBhcmUgb24gZGlz
Y3JldGUgbGluZXMpLgorICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQ2NF90LCBUeXBlU2V0PiBHbG9i
YWxJRE1hcDsgCisgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6U3RyaW5nLCBpbnQ2NF90PiBHbG9i
YWxMb2NhdGlvblRvR2xvYmFsSURNYXA7CisKKyAgICBHbG9iYWxJRE1hcCBtX2dsb2JhbElETWFw
OworICAgIEdsb2JhbExvY2F0aW9uTWFwIG1fZ2xvYmFsTG9jYXRpb25NYXA7CisgICAgR2xvYmFs
TG9jYXRpb25Ub0dsb2JhbElETWFwIG1fZ2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwOworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBOZWFyZXN0VGV4dHVhbEJsb2NrIHsKK3B1
YmxpYzoKKworICAgIE5lYXJlc3RUZXh0dWFsQmxvY2sodW5zaWduZWQgaW50IHN0YXJ0TGluZSwg
dW5zaWduZWQgaW50IHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBpbnQgZW5kTGluZSwgdW5zaWduZWQg
aW50IGVuZENvbHVtbiwgaW50cHRyX3Qgc291cmNlSUQpIAorICAgICAgICA6IG1fdGFyZ2V0U3Rh
cnRMaW5lKHN0YXJ0TGluZSkKKyAgICAgICAgLCBtX3RhcmdldFN0YXJ0Q29sdW1uKHN0YXJ0Q29s
dW1uKQorICAgICAgICAsIG1fdGFyZ2V0RW5kTGluZShlbmRMaW5lKQorICAgICAgICAsIG1fdGFy
Z2V0RW5kQ29sdW1uKGVuZENvbHVtbikgCisgICAgICAgICwgbV9zb3VyY2VJRChzb3VyY2VJRCkK
KyAgICAgICAgLCBtX2ZvdW5kQVRhcmdldChmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgdm9p
ZCB1cGRhdGUodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnRwdHJfdCBzb3VyY2VJRCwgVCB0YXJn
ZXQpCisgICAgeworICAgICAgICBpZiAoc291cmNlSUQgIT0gbV9zb3VyY2VJRCkKKyAgICAgICAg
ICAgIHJldHVybiA7CisKKyAgICAgICAgaWYgKCFlbmNsb3Nlc1RhcmdldFJhbmdlKHN0YXJ0TGlu
ZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbikpIAorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmIChzdGFydExpbmUgPiBtX3N0YXJ0TGluZSB8fCAoc3RhcnRMaW5lID09
IG1fc3RhcnRMaW5lICYmIHN0YXJ0Q29sdW1uID4gbV9zdGFydENvbHVtbikpIHsKKyAgICAgICAg
ICAgIG1fdGFyZ2V0ID0gdGFyZ2V0OworICAgICAgICAgICAgbV9zdGFydExpbmUgPSBzdGFydExp
bmU7CisgICAgICAgICAgICBtX3N0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CisgICAgICAgICAg
ICBtX2VuZExpbmUgPSBlbmRMaW5lOworICAgICAgICAgICAgbV9lbmRDb2x1bW4gPSBlbmRDb2x1
bW47CisgICAgICAgICAgICBtX2ZvdW5kQVRhcmdldCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBUJiBiZXN0VGFyZ2V0KCkgeyByZXR1cm4gbV90YXJnZXQ7IH0KKyAgICBib29sIGZv
dW5kQVRhcmdldCgpIHsgcmV0dXJuIG1fZm91bmRBVGFyZ2V0OyB9CisKK3ByaXZhdGU6CisKKyAg
ICB1bnNpZ25lZCBtX3N0YXJ0TGluZSA9IDA7CisgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbiA9
IDA7CisgICAgdW5zaWduZWQgbV9lbmRMaW5lID0gVUlOVF9NQVg7CisgICAgdW5zaWduZWQgbV9l
bmRDb2x1bW4gPSBVSU5UX01BWDsKKworICAgIHVuc2lnbmVkIG1fdGFyZ2V0U3RhcnRMaW5lOwor
ICAgIHVuc2lnbmVkIG1fdGFyZ2V0U3RhcnRDb2x1bW47CisgICAgdW5zaWduZWQgbV90YXJnZXRF
bmRMaW5lOworICAgIHVuc2lnbmVkIG1fdGFyZ2V0RW5kQ29sdW1uOworCisgICAgaW50cHRyX3Qg
bV9zb3VyY2VJRDsKKworICAgIGJvb2wgbV9mb3VuZEFUYXJnZXQ7CisgICAgVCBtX3RhcmdldDsK
KworCisgICAgYm9vbCBlbmNsb3Nlc1RhcmdldFJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbikK
KyAgICB7CisgICAgICAgLy9lbnN1cmUgd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSB0aGlzIHdpdGgg
dGhlIGZpcnN0IGNvbXBhcmlzb24KKyAgICAgICAvL2Z1bmN0aW9uIGNoZWNrKCkgeworICAgICAg
IC8vICAgIGZ1bmN0aW9uIHRhcmdldCgpIHsKKyAgICAgICAvLyAgICB9CisgICAgICAgLy99Cisg
ICAgICAgLy8KKyAgICAgICAvL29yIHRoaXM6CisgICAgICAgLy9mdW5jdGlvbiBjaGVjaygpIHsg
ZnVuY3Rpb24gdGFyZ2V0KCl7fSB9CisgICAgICAgLy8KKyAgICAgICAvL29yIGEgY29tYmluYXRp
b24gb2YgdGhlIHR3bworICAgICAgIAorICAgICAgIGlmICghKHN0YXJ0TGluZSA8PSBtX3Rhcmdl
dFN0YXJ0TGluZSAmJiBlbmRMaW5lID49IG1fdGFyZ2V0RW5kTGluZSkpCisgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgIGlmIChzdGFydExpbmUgPCBtX3RhcmdldFN0YXJ0TGluZSkg
eworICAgICAgICAgICBpZiAoZW5kTGluZSA+IG1fdGFyZ2V0RW5kTGluZSkKKyAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgIEFTU0VSVChlbmRMaW5lID09IG1fdGFyZ2V0
RW5kTGluZSk7CisKKyAgICAgICAgICAgaWYgKGVuZENvbHVtbiA+PSBtX3RhcmdldEVuZENvbHVt
bikKKyAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgIEFTU0VSVChlbmRD
b2x1bW4gPCBtX3RhcmdldEVuZENvbHVtbik7CisgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICB9CisKKyAgICAgICBBU1NFUlQoc3RhcnRMaW5lID09IG1fdGFyZ2V0U3RhcnRMaW5lKTsK
KworICAgICAgIGlmIChzdGFydENvbHVtbiA8PSBtX3RhcmdldFN0YXJ0Q29sdW1uKSB7CisKKyAg
ICAgICAgICAgaWYgKGVuZExpbmUgPiBtX3RhcmdldEVuZExpbmUpCisgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgCisgICAgICAgICAgIEFTU0VSVChlbmRMaW5lID09IG1f
dGFyZ2V0RW5kTGluZSk7CisKKyAgICAgICAgICAgaWYgKGVuZENvbHVtbiA+PSBtX3RhcmdldEVu
ZENvbHVtbikgCisgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICBBU1NF
UlQoZW5kQ29sdW1uIDwgbV90YXJnZXRFbmRDb2x1bW4pOworICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgfSAKKworICAgICAgIEFTU0VSVChzdGFydENvbHVtbiA+IG1fdGFyZ2V0U3Rh
cnRDb2x1bW4pOworICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9OworCisKK30gLy9uYW1l
c3BhY2UgSlNDCisKKworI2VuZGlmIC8vSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCA5NjFmZGVjLi43YTlh
MGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtMjYw
LDYgKzI2MCw3IEBAIHN0YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQogICAg
IHdoaWxlICgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1p
emVBZnRlckxvbmdXYXJtVXAoKSkgPDwgKE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyTWF4KCkgKyAxKSkgPD0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpKQogICAgICAgICBPcHRpb25zOjpyZW9wdGltaXphdGlvblJldHJ5
Q291bnRlck1heCgpKys7CiAKKyAgICBPcHRpb25zOjpwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVs
aXR5KCkgPSB0cnVlOwogICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oT3B0aW9uczo6
dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSkgPDwgT3B0aW9uczo6cmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50ZXJNYXgoKSkgPiAwKTsKICAgICBBU1NFUlQoKHN0YXRpY19jYXN0
PGludDY0X3Q+KE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCkp
IDw8IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KCkpIDw9IHN0YXRpY19j
YXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggYzllODEzNC4uMWIzMjlj
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtMjY5LDcgKzI2
OSw5IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgZGlz
YWJsZUdDLCBmYWxzZSkgXAogICAgIHYodW5zaWduZWQsIGdjTWF4SGVhcFNpemUsIDApIFwKICAg
ICB2KGJvb2wsIHJlY29yZEdDUGF1c2VUaW1lcywgZmFsc2UpIFwKLSAgICB2KGJvb2wsIGxvZ0hl
YXBTdGF0aXN0aWNzQXRFeGl0LCBmYWxzZSkKKyAgICB2KGJvb2wsIGxvZ0hlYXBTdGF0aXN0aWNz
QXRFeGl0LCBmYWxzZSkgXAorICAgIHYoYm9vbCwgcHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0
eSwgZmFsc2UpCisgICAgCiAKIGNsYXNzIE9wdGlvbnMgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggYTJkMTcxZi4uNWQ2OGVlNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMDU4
LDYgKzEwNTgsMzggQEAgYm9vbCBTdHJ1Y3R1cmU6OnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0
U3RvcmVUbyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICB9CiB9CiAKKworU3Ry
dWN0dXJlU2hhcGUgU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKCkKK3sKKyAgICBWZWN0b3I8
U3RydWN0dXJlKiwgOD4gc3RydWN0dXJlczsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAg
ICBQcm9wZXJ0eVRhYmxlKiB0YWJsZTsKKyAgICBTdHJ1Y3R1cmVTaGFwZSByZXByZXNlbnRhdGlv
bjsKKworICAgIGZpbmRTdHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKHN0cnVjdHVy
ZXMsIHN0cnVjdHVyZSwgdGFibGUpOworICAgIAorICAgIGlmICh0YWJsZSkgeworICAgICAgICBQ
cm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gdGFibGUtPmJlZ2luKCk7CisgICAgICAgIFBy
b3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLT5lbmQoKTsKKworICAgICAgICBmb3Ig
KDsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICAgICAgcmVwcmVzZW50YXRpb24ubV9w
cm9wZXJ0aWVzLmFwcGVuZChpdGVyLT5rZXkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBzdHJ1Y3R1cmUtPm1fbG9jay51bmxvY2soKTsKKyAgICB9CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gc3RydWN0dXJlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOworICAgICAgICBpZiAoIXN0cnVjdHVyZS0+bV9uYW1l
SW5QcmV2aW91cykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJlcHJlc2VudGF0
aW9uLm1fcHJvcGVydGllcy5hcHBlbmQoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLmdldCgp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVwcmVzZW50YXRpb247Cit9CisKIHZvaWQgU3RydWN0
dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KFJhd1Bv
aW50ZXIodGhpcyksICI6WyIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggMzFlNmNkZC4uOThlZDg5
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVJREJsb2IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgorI2lu
Y2x1ZGUgIlR5cGVTZXQuaCIKICNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAjaW5jbHVkZSAiV2F0
Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWsuaCIKQEAgLTM4MSw2ICszODIsOCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsKICAgICB9
CisKKyAgICBTdHJ1Y3R1cmVTaGFwZSB0b1N0cnVjdHVyZVNoYXBlKCk7CiAgICAgCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50
U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRleCBmNjBjODZhLi45MGZlYWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisvLyNpbmNsdWRlICJIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJWYXJpYWJsZVdhdGNocG9pbnRTZXRJ
bmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTQ5LDcgKzE1MCw5IEBAIFN5bWJvbFRh
YmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVDYXB0dXJlZE5hbWVzKFZNJiB2bSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICByZXN1bHQtPm1fbWFwLmFkZCgKICAgICAgICAgICAgIGl0ZXIt
PmtleSwKLSAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaXRlci0+dmFsdWUuZ2V0SW5kZXgo
KSwgaXRlci0+dmFsdWUuZ2V0QXR0cmlidXRlcygpKSk7CisgICAgICAgICAgICAvL2l0ZXItPnZh
bHVlKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaXRlci0+dmFsdWUpKTsKKyAgICAg
ICAgICAgIC8vT1JJR0lOQUw6IFN5bWJvbFRhYmxlRW50cnkoaXRlci0+dmFsdWUuZ2V0SW5kZXgo
KSwgaXRlci0+dmFsdWUuZ2V0QXR0cmlidXRlcygpKSk7CiAgICAgfQogICAgIAogICAgIGlmICht
X3Nsb3dBcmd1bWVudHMpIHsKQEAgLTE1Nyw5ICsxNjAsMzMgQEAgU3ltYm9sVGFibGUqIFN5bWJv
bFRhYmxlOjpjbG9uZUNhcHR1cmVkTmFtZXMoVk0mIHZtKQogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBwYXJhbWV0ZXJDb3VudCgpOyBpLS07KQogICAgICAgICAgICAgcmVzdWx0LT5tX3Nsb3dB
cmd1bWVudHNbaV0gPSBtX3Nsb3dBcmd1bWVudHNbaV07CiAgICAgfQorCisgICAgcmVzdWx0LT5t
X3VuaXF1ZUlETWFwID0gbV91bmlxdWVJRE1hcDsKKyAgICByZXN1bHQtPm1fcmVnaXN0ZXJUb1Zh
cmlhYmxlTWFwID0gbV9yZWdpc3RlclRvVmFyaWFibGVNYXA7CiAgICAgCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAoraW50NjRfdCBTeW1ib2xUYWJsZTo6dW5pcXVlSURGb3JWYXJpYWJsZShjb25z
dCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5LCBWTSYgdm0pCit7CisgICAg
YXV0byBpdGVyID0gbV91bmlxdWVJRE1hcC5maW5kKGtleSk7CisgICAgYXV0byBlbmQgPSBtX3Vu
aXF1ZUlETWFwLmVuZCgpOworICAgIEFTU0VSVChpdGVyICE9IGVuZCk7CisKKyAgICBpbnQ2NF90
JiBpZCA9IGl0ZXItPnZhbHVlOworICAgIGlmIChpZCA9PSBIaWdoRmlkZWxpdHlOZWVkc1VuaXF1
ZUlER2VuZXJhdGlvbikgCisgICAgICAgIGlkID0gdm0uZ2V0TmV4dFVuaXF1ZVZhcmlhYmxlSUQo
KTsKKworICAgIHJldHVybiBpZDsKK30KKworaW50NjRfdCBTeW1ib2xUYWJsZTo6dW5pcXVlSURG
b3JSZWdpc3Rlcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIGludCByZWdpc3Rl
ckluZGV4LCBWTSYgdm0pCit7CisgICAgYXV0byBpdGVyID0gbV9yZWdpc3RlclRvVmFyaWFibGVN
YXAuZmluZChyZWdpc3RlckluZGV4KTsKKyAgICBhdXRvIGVuZCA9IG1fcmVnaXN0ZXJUb1Zhcmlh
YmxlTWFwLmVuZCgpOworICAgIEFTU0VSVChpdGVyICE9IGVuZCk7CisgICAgcmV0dXJuIHVuaXF1
ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpdGVyLT52YWx1ZS5nZXQoKSwgdm0pOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmgKaW5kZXggNWFjMmU0MS4uNTE0ZDg1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJDb25j
dXJyZW50SklUTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiVHlwZUxv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVXYXRjaHBvaW50U2V0LmgiCiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CkBAIC0zMzYsNiArMzM3LDggQEAg
cHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFN0cmluZ0ltcGw+LCBTeW1ib2xUYWJsZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwg
SGFzaFRyYWl0czxSZWZQdHI8U3RyaW5nSW1wbD4+LCBTeW1ib2xUYWJsZUluZGV4SGFzaFRyYWl0
cz4gTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludDY0X3Q+
IFVuaXF1ZUlETWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxTdHJpbmdJbXBs
PiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
aW50Pj4gUmVnaXN0ZXJUb1ZhcmlhYmxlTWFwOwogCiAgICAgc3RhdGljIFN5bWJvbFRhYmxlKiBj
cmVhdGUoVk0mIHZtKQogICAgIHsKQEAgLTQxMyw2ICs0MTYsMTIgQEAgcHVibGljOgogICAgIAog
ICAgIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5n
SW1wbCoga2V5LCBjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSkKICAgICB7CisgICAgICAg
IC8vdXNlIC0xIGFzIGEgZmxhZyB0byBpbmRpY2F0ZSB3ZSBuZWVkIHRvIHByb2R1Y2UgYSB1bmlx
dWUgSUQgYmVjYXVzZSB3ZSBuZWVkIHRoZSBWTSB0byBkbyB0aGlzLiAKKyAgICAgICAgLy9XaGVu
IGxpbmtpbmcsIHdlIGNhbiBwcm9kdWNlIHRoaXMgdW5pcXVlIElEIGFzIHdlIGhhdmUgYWNjZXNz
IHRvIFZNCisgICAgICAgIGlmIChPcHRpb25zOjpwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5
KCkpIHsKKyAgICAgICAgICAgIG1fdW5pcXVlSURNYXAuc2V0KGtleSwgSGlnaEZpZGVsaXR5TmVl
ZHNVbmlxdWVJREdlbmVyYXRpb24pOyAKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJUb1ZhcmlhYmxl
TWFwLnNldChlbnRyeS5nZXRJbmRleCgpLCBrZXkpOworICAgICAgICB9CiAgICAgICAgIHJldHVy
biBtX21hcC5hZGQoa2V5LCBlbnRyeSk7CiAgICAgfQogICAgIApAQCAtNDI0LDYgKzQzMywxMCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgTWFwOjpBZGRSZXN1bHQgc2V0KGNvbnN0IENvbmN1cnJlbnRK
SVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXksIGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5
KQogICAgIHsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxp
dHkoKSkgeworICAgICAgICAgICAgbV91bmlxdWVJRE1hcC5zZXQoa2V5LCBIaWdoRmlkZWxpdHlO
ZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7IAorICAgICAgICAgICAgbV9yZWdpc3RlclRvVmFyaWFi
bGVNYXAuc2V0KGVudHJ5LmdldEluZGV4KCksIGtleSk7CisgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIG1fbWFwLnNldChrZXksIGVudHJ5KTsKICAgICB9CiAgICAgCkBAIC00NDMsNyArNDU2LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsK
ICAgICAgICAgcmV0dXJuIGNvbnRhaW5zKGxvY2tlciwga2V5KTsKICAgICB9Ci0gICAgCisKKyAg
ICBpbnQ2NF90IHVuaXF1ZUlERm9yVmFyaWFibGUoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYs
IFN0cmluZ0ltcGwqIGtleSwgVk0mIHZtKTsKKyAgICBpbnQ2NF90IHVuaXF1ZUlERm9yUmVnaXN0
ZXIoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBpbnQgcmVnaXN0ZXJJbmRleCwg
Vk0mIHZtKTsKKwogICAgIGJvb2wgdXNlc05vblN0cmljdEV2YWwoKSB7IHJldHVybiBtX3VzZXNO
b25TdHJpY3RFdmFsOyB9CiAgICAgdm9pZCBzZXRVc2VzTm9uU3RyaWN0RXZhbChib29sIHVzZXNO
b25TdHJpY3RFdmFsKSB7IG1fdXNlc05vblN0cmljdEV2YWwgPSB1c2VzTm9uU3RyaWN0RXZhbDsg
fQogCkBAIC00NTQsNyArNDcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FwdHVyZUVuZChp
bnQgY2FwdHVyZUVuZCkgeyBtX2NhcHR1cmVFbmQgPSBjYXB0dXJlRW5kOyB9CiAKICAgICBpbnQg
Y2FwdHVyZUNvdW50KCkgY29uc3QgeyByZXR1cm4gLShtX2NhcHR1cmVFbmQgLSBtX2NhcHR1cmVT
dGFydCk7IH0KLSAgICAKKwogICAgIGJvb2wgaXNDYXB0dXJlZChpbnQgb3BlcmFuZCkKICAgICB7
CiAgICAgICAgIHJldHVybiBvcGVyYW5kIDw9IGNhcHR1cmVTdGFydCgpICYmIG9wZXJhbmQgPiBj
YXB0dXJlRW5kKCk7CkBAIC00NjcsNyArNDgzLDcgQEAgcHVibGljOgogICAgIC8vIDAgaWYgd2Ug
ZG9uJ3QgY2FwdHVyZSBhbnkgYXJndW1lbnRzOyBwYXJhbWV0ZXJDb3VudCgpIGluIGxlbmd0aCBp
ZiB3ZSBkby4KICAgICBjb25zdCBTbG93QXJndW1lbnQqIHNsb3dBcmd1bWVudHMoKSB7IHJldHVy
biBtX3Nsb3dBcmd1bWVudHMuZ2V0KCk7IH0KICAgICB2b2lkIHNldFNsb3dBcmd1bWVudHMoc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dBcmd1bWVudFtdPiBzbG93QXJndW1lbnRzKSB7IG1fc2xvd0FyZ3Vt
ZW50cyA9IHN0ZDo6bW92ZShzbG93QXJndW1lbnRzKTsgfQotICAgIAorCiAgICAgU3ltYm9sVGFi
bGUqIGNsb25lQ2FwdHVyZWROYW1lcyhWTSYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpAQCAtNDgyLDE5ICs0OTgsMjEgQEAgcHJpdmF0
ZToKICAgICBwdWJsaWM6CiAgICAgICAgIFdhdGNocG9pbnRDbGVhbnVwKFN5bWJvbFRhYmxlKik7
CiAgICAgICAgIHZpcnR1YWwgfldhdGNocG9pbnRDbGVhbnVwKCk7Ci0gICAgICAgIAorCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
KSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFN5bWJvbFRhYmxlKiBtX3N5bWJv
bFRhYmxlOwogICAgIH07Ci0gICAgCisKICAgICBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xUYWJs
ZShWTSYpOwogICAgIH5TeW1ib2xUYWJsZSgpOwogCiAgICAgTWFwIG1fbWFwOwotICAgIAorICAg
IFVuaXF1ZUlETWFwIG1fdW5pcXVlSURNYXA7CisgICAgUmVnaXN0ZXJUb1ZhcmlhYmxlTWFwIG1f
cmVnaXN0ZXJUb1ZhcmlhYmxlTWFwOworCiAgICAgaW50IG1fcGFyYW1ldGVyQ291bnRJbmNsdWRp
bmdUaGlzOwogICAgIGJvb2wgbV91c2VzTm9uU3RyaWN0RXZhbDsKIApAQCAtNTAyLDEyICs1MjAs
MTIgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9jYXB0dXJlRW5kOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFNsb3dBcmd1bWVudFtdPiBtX3Nsb3dBcmd1bWVudHM7Ci0gICAgCisKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2F0Y2hwb2ludENsZWFudXA+IG1fd2F0Y2hwb2ludENsZWFudXA7CiAKIHB1Ymxp
YzoKICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fZnVuY3Rpb25FbnRlcmVkT25jZTsKLSAgICAK
KwogICAgIG11dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42ZGE4YzhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVHlwZVNldC5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK1R5cGVTZXQ6OlR5cGVTZXQoKQorICAgIDogbV9zZWVuVHlw
ZXMoVHlwZU5vdGhpbmcpCit7Cit9CisKK1J1bnRpbWVUeXBlIFR5cGVTZXQ6OmdldFJ1bnRpbWVU
eXBlRm9yVmFsdWUoSlNWYWx1ZSB2LCBTdHJ1Y3R1cmUqKQoreworICAgIFJ1bnRpbWVUeXBlIHJl
dDsKKyAgICBpZiAodi5pc0Z1bmN0aW9uKCkpCisgICAgICAgIHJldCA9IFR5cGVGdW5jdGlvbjsK
KyAgICBlbHNlIGlmICh2LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldCA9IFR5cGVVbmRlZmlu
ZWQ7CisgICAgZWxzZSBpZiAodi5pc051bGwoKSkKKyAgICAgICAgcmV0ID0gVHlwZU51bGw7Cisg
ICAgZWxzZSBpZiAodi5pc0Jvb2xlYW4oKSkKKyAgICAgICAgcmV0ID0gVHlwZUJvb2xlYW47Cisg
ICAgZWxzZSBpZiAodi5pc01hY2hpbmVJbnQoKSkKKyAgICAgICAgcmV0ID0gVHlwZU1hY2hpbmVJ
bnQ7CisgICAgZWxzZSBpZiAodi5pc051bWJlcigpKQorICAgICAgICByZXQgPSBUeXBlTnVtYmVy
OworICAgIGVsc2UgaWYgKHYuaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0ID0gVHlwZVN0cmluZzsK
KyAgICBlbHNlIGlmICh2LmlzUHJpbWl0aXZlKCkpCisgICAgICAgIHJldCA9IFR5cGVQcmltaXRp
dmU7CisgICAgZWxzZSBpZiAodi5pc0dldHRlclNldHRlcigpKQorICAgICAgICByZXQgPSBUeXBl
R2V0dGVyU2V0dGVyOworICAgIGVsc2UgaWYgKHYuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkKKyAg
ICAgICAgcmV0ID0gVHlwZUN1c3RvbUdldHRlclNldHRlcjsKKyAgICBlbHNlIGlmICh2LmlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldCA9IFR5cGVPYmplY3Q7CisgICAgZWxzZQorICAgICAgICBDUkFT
SCgpOworCisgICAgcmV0dXJuIHJldDsKK30KKworLy9zdHJ1Y3R1cmUgbWF5IGJlIG51bGwKK3Zv
aWQgVHlwZVNldDo6YWRkVHlwZUZvclZhbHVlKEpTVmFsdWUgdiwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIAoreworICAgIFJ1bnRpbWVUeXBlIHQgPSBnZXRSdW50aW1lVHlwZUZvclZhbHVlKHYsIHN0
cnVjdHVyZSk7CisgICAgbV9zZWVuVHlwZXMgPSBtX3NlZW5UeXBlcyB8IHQ7CisgICAgaWYgKHN0
cnVjdHVyZSkgeworICAgICAgICAvL3ByaW50ZigiZ2V0dGluZyBzdHJ1Y3R1cmUgcmVwcmVzZW50
YXRpb25cbiIpOworICAgICAgICBTdHJ1Y3R1cmVTaGFwZSByZXByZXNlbnRhdGlvbiA9IHN0cnVj
dHVyZS0+dG9TdHJ1Y3R1cmVTaGFwZSgpOworICAgICAgICBtX3N0cnVjdHVyZUhpc3RvcnkuYXBw
ZW5kKHJlcHJlc2VudGF0aW9uKTsKKyAgICB9Cit9CisKK3ZvaWQgVHlwZVNldDo6bWVyZ2VXaXRo
VHlwZVNldChjb25zdCBUeXBlU2V0JiBvdGhlcikKK3sKKyAgICBtX3NlZW5UeXBlcyB8PSBvdGhl
ci5tX3NlZW5UeXBlczsKKyAgICAvL1RPRE86IE8obl4yKSwgbWF5YmUgZG8gdGhpcyByZW1vdmFs
IG9mIGR1cGxpY2F0ZXMgb25seSB3aGVuIHNlZW5UeXBlcygpIGlzIGNhbGxlZAorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgb3RoZXIubV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKTsgaSsrKQor
ICAgICAgICBpZiAoIW1fc3RydWN0dXJlSGlzdG9yeS5jb250YWlucyhvdGhlci5tX3N0cnVjdHVy
ZUhpc3RvcnkuYXQoaSkpKQorICAgICAgICAgICAgbV9zdHJ1Y3R1cmVIaXN0b3J5LmFwcGVuZChv
dGhlci5tX3N0cnVjdHVyZUhpc3RvcnkuYXQoaSkpOworfQorCitXVEY6OlN0cmluZyBUeXBlU2V0
OjpzZWVuVHlwZXMoKSAKK3sKKyAgICBpZiAobV9zZWVuVHlwZXMgPT0gVHlwZU5vdGhpbmcpCisg
ICAgICAgIHJldHVybiAiKFVucmVhY2hlZCBTdGF0ZW1lbnQpIjsKKworICAgIFdURjo6U3RyaW5n
IHNlZW4oIiIpOworCisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZUZ1bmN0aW9uKQorICAgICAg
ICAgc2Vlbi5hcHBlbmQoIkZ1bmN0aW9uICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVV
bmRlZmluZWQpCisgICAgICAgICBzZWVuLmFwcGVuZCgiVW5kZWZpbmVkICIpOworICAgIGlmICht
X3NlZW5UeXBlcyAmIFR5cGVOdWxsKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIk51bGwgIik7Cisg
ICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZUJvb2xlYW4pCisgICAgICAgICBzZWVuLmFwcGVuZCgi
Qm9vbGVhbiAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTWFjaGluZUludCkKKyAgICAg
ICAgIHNlZW4uYXBwZW5kKCJNYWNoaW5lSW50ICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5
cGVOdW1iZXIpCisgICAgICAgICBzZWVuLmFwcGVuZCgiTnVtYmVyICIpOworICAgIGlmIChtX3Nl
ZW5UeXBlcyAmIFR5cGVTdHJpbmcpCisgICAgICAgICBzZWVuLmFwcGVuZCgiU3RyaW5nICIpOwor
ICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVQcmltaXRpdmUpCisgICAgICAgICBzZWVuLmFwcGVu
ZCgiUHJpbWl0aXZlICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVHZXR0ZXJTZXR0ZXIp
CisgICAgICAgICBzZWVuLmFwcGVuZCgiR2V0dGVyU2V0dGVyICIpOworICAgIGlmIChtX3NlZW5U
eXBlcyAmIFR5cGVDdXN0b21HZXR0ZXJTZXR0ZXIpCisgICAgICAgICBzZWVuLmFwcGVuZCgiQ3Vz
dG9tR2V0dGVyU2V0dGVyICIpOworICAgIC8vaWYgKG1fc2VlblR5cGVzICYgVHlwZU9iamVjdCkK
KyAgICAvLyAgICAgc2Vlbi5hcHBlbmQoIk9iamVjdCAiKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKTsgaSsrKSB7CisgICAgICAgIFN0cnVj
dHVyZVNoYXBlIHJlcHJlc2VudGF0aW9uID0gbV9zdHJ1Y3R1cmVIaXN0b3J5LmF0KGkpOworICAg
ICAgICBzZWVuLmFwcGVuZCgieyIpOworICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHJl
cHJlc2VudGF0aW9uLm1fcHJvcGVydGllcy5zaXplKCk7IGorKykgeworICAgICAgICAgICAgU3Ry
aW5nIHByb3AocmVwcmVzZW50YXRpb24ubV9wcm9wZXJ0aWVzLmF0KGopLmdldCgpKTsKKyAgICAg
ICAgICAgIHNlZW4uYXBwZW5kKHByb3ApOworICAgICAgICAgICAgaWYgKGogKyAxIDwgcmVwcmVz
ZW50YXRpb24ubV9wcm9wZXJ0aWVzLnNpemUoKSkKKyAgICAgICAgICAgICAgICBzZWVuLmFwcGVu
ZCgiLCAiKTsKKyAgICAgICAgfQorICAgICAgICBzZWVuLmFwcGVuZCgifSAiKTsKKyAgICB9CisK
KyAgICByZXR1cm4gc2VlbjsKK30KKwordm9pZCBUeXBlU2V0OjpkdW1wU2VlblR5cGVzKCkKK3sK
KyAgICBwcmludGYoIiVzIiwgc2VlblR5cGVzKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIHByaW50
ZigiXG4iKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTaGFwZTo6b3BlcmF0b3I9PShjb25zdCBTdHJ1
Y3R1cmVTaGFwZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fcHJvcGVydGllcy5zaXplKCkg
IT0gb3RoZXIubV9wcm9wZXJ0aWVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBtX3Byb3BlcnRpZXMuc2l6ZSgpOyBpIDwgc2l6
ZTsgaSsrKSB7CisgICAgICAgIGlmIChTdHJpbmcobV9wcm9wZXJ0aWVzLmF0KGkpKSAhPSBTdHJp
bmcob3RoZXIubV9wcm9wZXJ0aWVzLmF0KGkpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvL25hbWVzcGFjZSBKU0MKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg3MzcwNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlU2V0LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVHlwZVNldF9oCisj
ZGVmaW5lIFR5cGVTZXRfaAorCisKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworICAgIGNsYXNzIEpTVmFsdWU7CisgICAgY2xhc3MgU3RydWN0dXJlOworCisg
ICAgZW51bSBSdW50aW1lVHlwZSB7CisgICAgICAgIFR5cGVOb3RoaW5nICAgICAgICAgICAgPSAw
eDAsCisgICAgICAgIFR5cGVGdW5jdGlvbiAgICAgICAgICAgPSAweDEsCisgICAgICAgIFR5cGVV
bmRlZmluZWQgICAgICAgICAgPSAweDIsCisgICAgICAgIFR5cGVOdWxsICAgICAgICAgICAgICAg
PSAweDQsCisgICAgICAgIFR5cGVCb29sZWFuICAgICAgICAgICAgPSAweDgsCisgICAgICAgIFR5
cGVNYWNoaW5lSW50ICAgICAgICAgPSAweDEwLAorICAgICAgICBUeXBlTnVtYmVyICAgICAgICAg
ICAgID0gMHgyMCwKKyAgICAgICAgVHlwZVN0cmluZyAgICAgICAgICAgICA9IDB4NDAsCisgICAg
ICAgIFR5cGVQcmltaXRpdmUgICAgICAgICAgPSAweDgwLAorICAgICAgICBUeXBlR2V0dGVyU2V0
dGVyICAgICAgID0gMHgxMDAsCisgICAgICAgIFR5cGVDdXN0b21HZXR0ZXJTZXR0ZXIgPSAweDIw
MCwKKyAgICAgICAgVHlwZU9iamVjdCAgICAgICAgICAgICA9IDB4NDAwLAorICAgIH07CisKKwor
Y2xhc3MgU3RydWN0dXJlU2hhcGUgeworCitwdWJsaWM6CisgICAgVmVjdG9yPFJlZlB0cjxXVEY6
OlN0cmluZ0ltcGw+PiBtX3Byb3BlcnRpZXM7ICAgICAgICAgCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0cnVjdHVyZVNoYXBlJiBvdGhlcikgY29uc3Q7CisKK307CisKKworY2xhc3MgVHlw
ZVNldCB7CisKK3B1YmxpYzoKKyAgICBUeXBlU2V0KCk7CisgICAgdm9pZCBhZGRUeXBlRm9yVmFs
dWUoSlNWYWx1ZSB2LCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIG1lcmdlV2l0aFR5cGVTZXQoY29u
c3QgVHlwZVNldCYpOworICAgIHN0YXRpYyBSdW50aW1lVHlwZSBnZXRSdW50aW1lVHlwZUZvclZh
bHVlKEpTVmFsdWUsIFN0cnVjdHVyZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURjo6U3Ry
aW5nIHNlZW5UeXBlcygpOworCitwcml2YXRlOgorICAgIHVpbnQzMl90IG1fc2VlblR5cGVzOwor
ICAgIHZvaWQgZHVtcFNlZW5UeXBlcygpOworICAgIFZlY3RvcjxTdHJ1Y3R1cmVTaGFwZT4gbV9z
dHJ1Y3R1cmVIaXN0b3J5OworCit9OworCisKK30gLy9uYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
L1R5cGVTZXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGYxMGE5MmYu
Ljc0ODU4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQxLDYgKzQx
LDcgQEAKICNpbmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR1dvcmts
aXN0LmgiCiAjaW5jbHVkZSAiRGVidWdnZXJBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiRXhlY3V0
YWJsZS5oIgogI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIKICNpbmNsdWRlICJGVExUaHVua3Mu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCkBAIC00OCw2ICs0OSw4IEBACiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhl
YXBJdGVyYXRpb25TY29wZS5oIgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5o
IgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxvZy5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJu
VmFsdWUuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxT
d2VlcGVyLmgiCkBAIC0yMzAsNiArMjMzLDggQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBU
eXBlIGhlYXBUeXBlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkKICAg
ICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCiAgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxl
cyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX25leHRVbmlxdWVW
YXJpYWJsZUlEKDEpCisgICAgLCBtX25leHRVbmlxdWVJbnN0cnVjdGlvbklEKDEpCiB7CiAgICAg
aW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0
YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CkBAIC0zMTgsMTAgKzMyMywxNiBAQCBWTTo6
Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaWYgKGNhblVzZUpJVCgp
KQogICAgICAgICBkZmdTdGF0ZSA9IGFkb3B0UHRyKG5ldyBERkc6OkxvbmdMaXZlZFN0YXRlKCkp
OwogI2VuZGlmCi0gICAgCisKICAgICAvLyBJbml0aWFsaXplIHRoaXMgbGFzdCwgYXMgYSBmcmVl
IHdheSBvZiBhc3NlcnRpbmcgdGhhdCBWTSBpbml0aWFsaXphdGlvbiBpdHNlbGYKICAgICAvLyB3
b24ndCB1c2UgdGhpcy4KICAgICBtX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3
IFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOworCisgICAgLy9UT0RPOiBjb25kaXRpb25h
bGx5IGFsbG9jYXRlIGFsbCB0aGlzIHN0dWZmIGJhc2VkIG9uIGlmIHRoaXMgbW9kZSBpcyBlbmFi
bGVkIHNvbWVob3cgdy8gaW5zcGVjdG9yLgorICAgIGlmIChPcHRpb25zOjpwcm9maWxlVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcj4oKTsKKyAgICAgICAg
bV9oaWdoRmlkZWxpdHlMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hGaWRlbGl0eUxvZz4oKTsK
KyAgICB9CiB9CiAKIFZNOjp+Vk0oKQpAQCAtOTE0LDYgKzkyNSwyOCBAQCB2b2lkIFZNOjpzZXRF
bmFibGVkUHJvZmlsZXIoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyKQogICAgIH0KIH0KIAorU3Ry
aW5nIFZNOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEQXNTdHJp
bmcpCit7CisgICAgYm9vbCBva2F5OworICAgIGludHB0cl90IHNvdXJjZUlEID0gc291cmNlSURB
c1N0cmluZy50b0ludFB0clN0cmljdCgmb2theSk7CisgICAgaWYgKCFva2F5KQorICAgICAgICBD
UkFTSCgpOworCisgICAgdXBkYXRlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVTdGF0ZSgpOworICAg
IHByaW50ZigiR2V0dGluZyB0eXBlIGZvciB2YXJpYWJsZSBnaXZlbiBzb3VyY2VJRDonJWxkJyBs
aW5lOicldSdcbiIsIHNvdXJjZUlELCBzdGFydExpbmUpOworICAgIHJldHVybiBtX2hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci0+Z2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2Uoc3RhcnRMaW5lLCBz
dGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCB2YXJpYWJsZU5hbWUsIHNvdXJjZUlEKTsK
K30KKwordm9pZCBWTTo6dXBkYXRlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVTdGF0ZSgpCit7Cisg
ICAgaGlnaEZpZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coKTsKKyAgICBIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIqIHByb2ZpbGVyID0gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXIuZ2V0KCk7CisgICAgZm9yIChCYWc8VHlwZUxvY2F0aW9uPjo6aXRlcmF0b3IgaXRlciA9IG1f
bG9jYXRpb25JbmZvLmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7CisgICAgICAgIFR5cGVMb2Nh
dGlvbiogbG9jYXRpb24gPSAqaXRlcjsKKyAgICAgICAgcHJvZmlsZXItPm1lcmdlSW5UeXBlc0Zv
ckxvY2F0aW9uKGxvY2F0aW9uKTsKKyAgICB9Cit9CisKIHZvaWQgc2FuaXRpemVTdGFja0ZvclZN
KFZNKiB2bSkKIHsKICAgICBsb2dTYW5pdGl6ZVN0YWNrKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCmluZGV4IGJhOWJjMDEuLmY4OWFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaApAQCAtNDYsOSArNDYsMTEgQEAKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRl
ICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAjaW5jbHVk
ZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKKyNpbmNsdWRlIDx3dGYv
QmFnLmg+CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTc0LDYgKzc2LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CiAgICAgY2xh
c3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEhhbmRsZVN0YWNrOworICAgIGNsYXNzIEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlcjsKKyAgICBjbGFzcyBIaWdoRmlkZWxpdHlMb2c7CiAgICAgY2xhc3Mg
SWRlbnRpZmllcjsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKQEAgLTg0LDYgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTmF0aXZl
RXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFzcyBSZWdFeHBDYWNo
ZTsKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVy
OwogICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGU7CiAgICAgc3RydWN0IFN0YWNrRnJhbWU7
CkBAIC05Niw2ICsxMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBVbmxpbmtlZEV2
YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAg
Y2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworICAgIGNsYXNzIFZpcnR1YWxSZWdpc3Rl
cjsKICAgICBjbGFzcyBWTUVudHJ5U2NvcGU7CiAgICAgY2xhc3MgV2F0Y2hwb2ludDsKICAgICBj
bGFzcyBXYXRjaHBvaW50U2V0OwpAQCAtNTExLDYgKzUxNywxNSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVz
KCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAorICAgICAgICBib29s
IGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkgeyByZXR1cm4gISFtX2hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlcjsgfQorICAgICAgICBTdHJpbmcgZ2V0VHlwZXNGb3JWYXJpYWJsZUlu
UmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CisgICAgICAgIEhpZ2hGaWRlbGl0eUxvZyogaGlnaEZp
ZGVsaXR5TG9nKCkgeyByZXR1cm4gbV9oaWdoRmlkZWxpdHlMb2cuZ2V0KCk7IH0KKyAgICAgICAg
dm9pZCB1cGRhdGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZVN0YXRlKCk7CisgICAgICAgIFR5cGVM
b2NhdGlvbiogbmV4dExvY2F0aW9uKCkgeyByZXR1cm4gbV9sb2NhdGlvbkluZm8uYWRkKCk7IH0g
Ly9UT0RPOiBwb3NzaWJsZSBvcHRtaXphdGlvbjogd2hlbiBjb2RlYmxvY2tzIGRpZSwgcmVwb3J0
IHdoaWNoIGxvY2F0aW9ucyBhcmUgbm8gbG9uZ2VyIGJlaW5nIGNoYW5nZWQgc28gd2UgZG9uJ3Qg
d2FsayBvdmVyIHRoZW0KKworICAgICAgICB1aW50NjRfdCBnZXROZXh0VW5pcXVlVmFyaWFibGVJ
RCgpIHsgcmV0dXJuIG1fbmV4dFVuaXF1ZVZhcmlhYmxlSUQrKzsgfQorICAgICAgICB1aW50NjRf
dCBnZXROZXh0VW5pcXVlSW5zdHJ1Y3Rpb25JRCgpIHsgcmV0dXJuIG1fbmV4dFVuaXF1ZUluc3Ry
dWN0aW9uSUQrKzsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIENsZWFyRXhjZXB0aW9uU2Nv
cGU7CkBAIC01NTksNiArNTc0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25QdHI8
QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5FeGVjdXRhYmxlczsKICAgICAgICAgUmVmQ291
bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7CiAgICAgICAgIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+IG1faW1wdXJlUHJvcGVydHlXYXRjaHBvaW50
U2V0czsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcj4g
bV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIaWdo
RmlkZWxpdHlMb2c+IG1faGlnaEZpZGVsaXR5TG9nOworICAgICAgICAvL3VpbnQ2NF90IG1fbmV4
dFVuaXF1ZVZhcmlhYmxlSUQ7CisgICAgICAgIGludDY0X3QgbV9uZXh0VW5pcXVlVmFyaWFibGVJ
RDsKKyAgICAgICAgdWludDY0X3QgbV9uZXh0VW5pcXVlSW5zdHJ1Y3Rpb25JRDsKKyAgICAgICAg
QmFnPFR5cGVMb2NhdGlvbj4gbV9sb2NhdGlvbkluZm87CiAgICAgfTsKIAogI2lmIEVOQUJMRShH
Q19WQUxJREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJv
clRva2VuVHJhY2tpbmdDb250cm9sbGVyLmpzCmluZGV4IDNhMDQyZTMuLjE3ZTdkZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Nv
ZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yVG9rZW5UcmFja2luZ0Nv
bnRyb2xsZXIuanMKQEAgLTE5Myw3ICsxOTMsOSBAQCBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRv
a2VuVHJhY2tpbmdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAogICAgIF9zdGFydFRyYWNraW5n
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdHJhY2tp
bmcpOworICAgICAgICAvL2lmICh0aGlzLl90cmFja2luZykKKyAgICAgICAgLy8gICAgY29uc29s
ZS5sb2coKG5ldyBFcnJvcigiQWxyZWFkeSB0cmFja2luZyIpKS5zdGFjaykKKyAgICAgICAgLy9j
b25zb2xlLmFzc2VydCghdGhpcy5fdHJhY2tpbmcpOwogICAgICAgICBpZiAodGhpcy5fdHJhY2tp
bmcpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3Iu
anMKaW5kZXggYzRlY2VlMS4uNDU3YTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0
b3IuanMKQEAgLTk3NCw3ICs5NzQsMTAgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIG1vZGUgPSBXZWJJbnNwZWN0b3IuQ29kZU1p
cnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUuTWFya2VkVG9rZW5zOwogICAgICAgICBl
bHNlIGlmICgodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VN
YXBSZXNvdXJjZSB8fCB0aGlzLl9zb3VyY2VDb2RlLnNvdXJjZU1hcHMubGVuZ3RoICE9PSAwKSAm
JiBXZWJJbnNwZWN0b3IubW9kaWZpZXJLZXlzLm1ldGFLZXkgJiYgIVdlYkluc3BlY3Rvci5tb2Rp
ZmllcktleXMuYWx0S2V5ICYmICFXZWJJbnNwZWN0b3IubW9kaWZpZXJLZXlzLnNoaWZ0S2V5KQog
ICAgICAgICAgICAgbW9kZSA9IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0Nv
bnRyb2xsZXIuTW9kZS5Ob25TeW1ib2xUb2tlbnM7CisgICAgICAgIC8vZWxzZQorICAgICAgICAv
LyAgICBtb2RlID0gV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxl
ci5Nb2RlLlBvc3RKYXZhU2NyaXB0RXhwcmVzc2lvbjsKIAorICAgICAgICAvL2NvbnNvbGUubG9n
KCJUb2tlbiB0cmFja2luZyBtb2RlID0gIiArIG1vZGUpCiAgICAgICAgIHRoaXMudG9rZW5UcmFj
a2luZ0NvbnRyb2xsZXIuZW5hYmxlZCA9IG1vZGUgIT09IFdlYkluc3BlY3Rvci5Db2RlTWlycm9y
VG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuTW9kZS5Ob25lOwogCiAgICAgICAgIGlmIChtb2RlID09
PSB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLm1vZGUpCkBAIC05OTIsNiArOTk1LDcgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX2Rpc21pc3NQb3BvdmVyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUu
SmF2YVNjcmlwdEV4cHJlc3Npb246CisgICAgICAgIC8vY2FzZSBXZWJJbnNwZWN0b3IuQ29kZU1p
cnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUuUG9zdEphdmFTY3JpcHRFeHByZXNzaW9u
OgogICAgICAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5tb3VzZU92ZXJEZWxh
eUR1cmF0aW9uID0gV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkR1cmF0aW9uVG9N
b3VzZU92ZXJUb2tlblRvTWFrZUhvdmVyZWRUb2tlbjsKICAgICAgICAgICAgIHRoaXMudG9rZW5U
cmFja2luZ0NvbnRyb2xsZXIubW91c2VPdXRSZWxlYXNlRGVsYXlEdXJhdGlvbiA9IFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5EdXJhdGlvblRvTW91c2VPdXRPZkhvdmVyZWRUb2tl
blRvUmVsZWFzZTsKICAgICAgICAgICAgIHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuY2xh
c3NOYW1lRm9ySGlnaGxpZ2h0ZWRSYW5nZSA9IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5Ib3ZlcmVkRXhwcmVzc2lvbkhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lOwpAQCAtMTAyOSw2
ICsxMDMzLDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuX2Rpc21pc3NQb3BvdmVyKCk7CiAgICAgfSwKIAorCiAgICAg
dG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZFJhbmdlV2FzQ2xpY2tlZDogZnVuY3Rp
b24odG9rZW5UcmFja2luZ0NvbnRyb2xsZXIpCiAgICAgewogICAgICAgICBpZiAodGhpcy50b2tl
blRyYWNraW5nQ29udHJvbGxlci5tb2RlICE9PSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2Vu
VHJhY2tpbmdDb250cm9sbGVyLk1vZGUuTm9uU3ltYm9sVG9rZW5zKQpAQCAtMTA0NywxMiArMTA1
MiwxNSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewog
CiAgICAgdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJOZXdIaWdobGlnaHRDYW5kaWRhdGU6IGZ1bmN0
aW9uKHRva2VuVHJhY2tpbmdDb250cm9sbGVyLCBjYW5kaWRhdGUpCiAgICAgeworICAgICAgICAv
L2NvbnNvbGUubG9nKCJ0b2tlblRyYWNraW5nQ29udHJvbGxlck5ld0hpZ2hsaWdodENhbmRpZGF0
ZSwgbW9kZSA9ICIgKyB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLm1vZGUpCisKICAgICAg
ICAgaWYgKHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW9kZSA9PT0gV2ViSW5zcGVjdG9y
LkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLk5vblN5bWJvbFRva2Vucykg
ewogICAgICAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5oaWdobGlnaHRSYW5n
ZShjYW5kaWRhdGUuaG92ZXJlZFRva2VuUmFuZ2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW9kZSA9
PT0gV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLkph
dmFTY3JpcHRFeHByZXNzaW9uKSB7CisgICAgICAgICAgICAvL3x8IHRoaXMudG9rZW5UcmFja2lu
Z0NvbnRyb2xsZXIubW9kZSA9PT0gV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5n
Q29udHJvbGxlci5Nb2RlLlBvc3RKYXZhU2NyaXB0RXhwcmVzc2lvbikgewogICAgICAgICAgICAg
dGhpcy5fdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZEphdmFTY3JpcHRFeHByZXNz
aW9uKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwNzcs
MzkgKzEwODUsNzEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBmdW5jdGlvbiBwb3B1bGF0ZShlcnJvciwgcmVzdWx0LCB3YXNUaHJv
d24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvciB8fCB3YXNUaHJvd24pCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlICE9PSB0aGlz
LnRva2VuVHJhY2tpbmdDb250cm9sbGVyLmNhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIHZhciBkYXRhID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5m
cm9tUGF5bG9hZChyZXN1bHQpOwotICAgICAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHsKLSAg
ICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG93UG9w
b3ZlckZvckZ1bmN0aW9uKGRhdGEpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSAib2JqZWN0IjoKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdWJ0eXBlID09PSAi
cmVnZXhwIikgCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yUmVnRXhw
KGRhdGEpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5f
c2hvd1BvcG92ZXJGb3JPYmplY3QoZGF0YSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlICJzdHJpbmciOgotICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVy
Rm9yU3RyaW5nKGRhdGEpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSAibnVtYmVyIjoKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvck51bWJlcihk
YXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgImJvb2xlYW4i
OgotICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yQm9vbGVhbihkYXRhKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInVuZGVmaW5lZCI6Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JVbmRlZmluZWQoZGF0YSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB2YXIgZGF0YQorICAgICAgICAgICAgICAgLCBz
b3VyY2VJRCA9IHRoaXMuX3NvdXJjZUNvZGUuX3NjcmlwdHNbMF0uX2lkCisgICAgICAgICAgICAg
ICAsIGRpc3BsYXkgPSBfZGlzcGxheS5iaW5kKHRoaXMpCisKKyAgICAgICAgICAgIGlmIChlcnJv
ciB8fCB3YXNUaHJvd24pIHsKKyAgICAgICAgICAgICAgICAvL3JldHVybjsKKyAgICAgICAgICAg
ICAgICAvL215IG93biBzcGVjaWFsIG1vZGUKKyAgICAgICAgICAgICAgICBkYXRhID0geyB0eXBl
IDogIm51bWJlciIsIF9kZXNjcmlwdGlvbiA6ICIiIH0KKyAgICAgICAgICAgICAgICAvL2NvbnNv
bGUubG9nKCJcbmNyZWF0aW5nIG93biBkYXRhIikKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGF0YSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQo
cmVzdWx0KQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBfZGlzcGxheSgp
IHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkgeworICAgICAgICAgICAgICAg
IGNhc2UgImZ1bmN0aW9uIjoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJG
b3JGdW5jdGlvbihkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAib2JqZWN0IjoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3VidHlw
ZSA9PT0gInJlZ2V4cCIpIAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1BvcG92
ZXJGb3JSZWdFeHAoZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yT2JqZWN0KGRhdGEpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgorICAgICAg
ICAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvclN0cmluZyhkYXRhKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JOdW1iZXIoZGF0YSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgorICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvckJvb2xlYW4oZGF0YSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgInVuZGVmaW5lZCI6
CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yVW5kZWZpbmVkKGRhdGEp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGUuaG92ZXJlZFRva2VuLnN0YXRlLmxh
c3RUeXBlID09PSAidmFyaWFibGUiKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxl
cihlcnJvciwgdHlwZVN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBkYXRhLl9kZXNjcmlw
dGlvbiArPSAiXG4iICsgIlR5cGVzOiB7IiArIHR5cGVTdHJpbmcgKyAifSIKKyAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheSgpCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
dmFyIHJhbmdlID0gY2FuZGlkYXRlLmhvdmVyZWRUb2tlblJhbmdlCisgICAgICAgICAgICAgICAg
Ly9jb25zb2xlLmxvZygiXG5TdGFydCBsaW5lOiAiICsgcmFuZ2Uuc3RhcnQubGluZSArICIgICBl
bmRMaW5lOiAiICsgcmFuZ2UuZW5kLmxpbmUpCisgICAgICAgICAgICAgICAgUnVudGltZUFnZW50
LmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZShjYW5kaWRhdGUuaG92ZXJlZFRv
a2VuLnN0cmluZywgc291cmNlSUQsIHJhbmdlLnN0YXJ0LmxpbmUgKyAxLCByYW5nZS5zdGFydC5j
aCwgcmFuZ2UuZW5kLmxpbmUgKyAxLCByYW5nZS5lbmQuY2gsIGhhbmRsZXIpCisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCEoZXJyb3IgfHwgd2FzVGhyb3duKSkgeworICAgICAgICAgICAgICAgIGRp
c3BsYXkoKQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvL2NvbnNvbGUu
bG9nKCJcbm5vdCBzaG93aW5nIGEgcG9wb3ZlciIpCisgICAgICAgICAgICB9CisKKwogICAgICAg
ICB9CiAKLSAgICAgICAgRGVidWdnZXJBZ2VudC5ldmFsdWF0ZU9uQ2FsbEZyYW1lLmludm9rZSh7
Y2FsbEZyYW1lSWQ6IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1l
LmlkLCBleHByZXNzaW9uOiBjYW5kaWRhdGUuZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXA6ICJwb3Bv
dmVyIiwgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlOiB0cnVlfSwgcG9wdWxh
dGUuYmluZCh0aGlzKSk7CisgICAgICAgIGlmICh0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVy
Lm1vZGUgPT09IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIu
TW9kZS5Qb3N0SmF2YVNjcmlwdEV4cHJlc3Npb24pIHsKKyAgICAgICAgICAgIC8vY29uc29sZS5s
b2coIlxuY2FsbGluZyBwb3B1bGF0ZSB3LyByYW5kb20gdmFsdWVzIikKKyAgICAgICAgICAgIHBv
cHVsYXRlKHRydWUsIG51bGwsIHRydWUpCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgRGVi
dWdnZXJBZ2VudC5ldmFsdWF0ZU9uQ2FsbEZyYW1lLmludm9rZSh7Y2FsbEZyYW1lSWQ6IFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLmlkLCBleHByZXNzaW9uOiBj
YW5kaWRhdGUuZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXA6ICJwb3BvdmVyIiwgZG9Ob3RQYXVzZU9u
RXhjZXB0aW9uc0FuZE11dGVDb25zb2xlOiB0cnVlfSwgcG9wdWxhdGUuYmluZCh0aGlzKSk7CiAg
ICAgfSwKIAogICAgIF9zaG93UG9wb3ZlcjogZnVuY3Rpb24oY29udGVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpz
CmluZGV4IDM4ZTYwNmEuLjc4ZjY2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcwpAQCAtNjcsNiArNjcsNDYg
QEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IgPSBmdW5jdGlvbihlbGVtZW50LCBtaW1lVHlwZSwg
ZGVsZWdhdGUpCiAgICAgdGhpcy5fZm9ybWF0dGVyU291cmNlTWFwID0gbnVsbDsKIAogICAgIHRo
aXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKKworICAgIGZ1bmN0aW9uIG1vdXNlVXBU
ZXN0KGV2ZW50KSB7CisKKyAgICAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhZGVsZWdhdGUuX3NvdXJj
ZUNvZGUgfHwgIWRlbGVnYXRlLl9zb3VyY2VDb2RlLl9zY3JpcHRzIHx8ICFkZWxlZ2F0ZS5fc291
cmNlQ29kZS5fc2NyaXB0c1swXSkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRoaXMu
X3Rva2VuVHJhY2tpbmdDb250cm9sbGVyLmVuYWJsZWQgPSB0cnVlCisKKyAgICAgICAgdmFyIHNj
cmlwdCA9IGRlbGVnYXRlLl9zb3VyY2VDb2RlLl9zY3JpcHRzWzBdCisgICAgICAgICAgICwgc291
cmNlSUQgPSBzY3JpcHQuX2lkCisgICAgICAgICAgICwgdG9rZW5JbmZvID0gdGhpcy5fdG9rZW5U
cmFja2luZ0NvbnRyb2xsZXIuX2hvdmVyZWRUb2tlbkluZm8KKyAgICAgICAgICAgLCB0b2tlbiAK
KworICAgICAgICBpZiAoIXRva2VuSW5mbyB8fCAhdG9rZW5JbmZvLnRva2VuKQorICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgdG9rZW4gPSB0b2tlbkluZm8udG9rZW4KKyAgICAgICAgLy9j
b25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh0b2tlbkluZm8sIHVuZGVmaW5lZCwgMikpCisgICAg
ICAgIGlmICh0b2tlbi5zdGF0ZS5sYXN0VHlwZSA9PT0gInZhcmlhYmxlIikgeworCisgICAgICAg
ICAgICAvL2RlbGVnYXRlLnNvdXJjZUNvZGUuX3NjcmlwdHMuZm9yRWFjaChmdW5jdGlvbihlLCBp
ZHgpIHsKKyAgICAgICAgICAgIC8vICAgIGNvbnNvbGUubG9nKCJcbklEWDogIiArIGlkeCArICJc
blVSTDogIiArIGUuX3VybCArICJcbklEOiAiICsgZS5faWQpCisgICAgICAgICAgICAvL30pCisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCB0eXBlU3RyaW5nKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGVycm9yKSAKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2co
IkVSUk9SIGZyb20gaGFuZGxlcjogIiArIGVycm9yKQorCisgICAgICAgICAgICAgICAgY29uc29s
ZS5sb2coIlxuXHRnb3QgcnVudGltZSB0eXBlcyBpbiB1cmw6IFwiIiArIHNjcmlwdC5fdXJsICsg
IlwiIiArICJcblx0UnVudGltZSB0eXBlcyBmb3IgdmFyaWFibGU6ICciICsgdG9rZW4uc3RyaW5n
ICsgIicgaXM6ICciICsgdHlwZVN0cmluZyArICInIikKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC8vY29uc29sZS5sb2coIlxuU3RhcnQgbGluZTogIiArIHRva2VuSW5mby5wb3NpdGlvbi5s
aW5lKQorCisgICAgICAgICAgICB2YXIgbGluZSA9IHRva2VuSW5mby5wb3NpdGlvbi5saW5lICsg
MQorICAgICAgICAgICAgUnVudGltZUFnZW50LmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRl
eHRSYW5nZSh0b2tlbi5zdHJpbmcsIHNvdXJjZUlELCBsaW5lLCB0b2tlbkluZm8ucG9zaXRpb24u
Y2gsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGluZSwgdG9rZW5JbmZvLnBvc2l0aW9uLmNoICsgdG9rZW4uc3RyaW5nLmxl
bmd0aCwgY2FsbGJhY2spCisgICAgICAgIH0KKyAgICB9CisKKyAgICBkb2N1bWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZW1vdmUiLCBtb3VzZVVwVGVzdC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAg
ICAKIH07CiAKIFdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3IpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233394</attachid>
            <date>2014-06-19 17:13:08 -0700</date>
            <delta_ts>2014-06-23 17:03:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>svndiff.diff</filename>
            <type>text/plain</type>
            <size>86637</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwMTY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxNC0wNi0xOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbmNyZWFzZSB0aGUgYW1vdW50IG9mIHR5cGUgaW5mb3JtYXRpb24gdGhlIFZNIGdhdGhlcnMg
d2hlbiBkaXJlY3RlZAorICAgICAgICB0byBkbyBzby4gVGhpcyBpbml0aWFsIGNvbW1pdCBpcyB3
b3JraW5nIHRvd2FyZHMgdGhlIGdvYWwgb2YKKyAgICAgICAgY2FwdHVyaW5nLCBhbmQgdGhlbiBz
aG93aW5nICh2aWEgdGhlIFdlYiBJbnNwZWN0b3IpIHR5cGUgaW5mb3JtYXRpb24gZm9yIGFsbAor
ICAgICAgICBhc3NpZ25tZW50IGFuZCBsb2FkIG9wZXJhdGlvbnMuIFRoaXMgcGF0Y2ggZG9lc24n
dCBoYXZlIHRoZSBmZWF0dXJlIGZ1bGx5IAorICAgICAgICBpbXBsZW1lbnRlZCwgYnV0IGl0IGVu
c3VyZXMgdGhlIFZNIGhhcyBubyBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucworICAgICAgICB1bmxl
c3MgdGhlIGZlYXR1cmUgaXMgc3BlY2lmaWNhbGx5IHR1cm5lZCBvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzM5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3Rlcik6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBieXRlY29kZS9UeXBlTG9jYXRpb24uaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OlR5cGVMb2NhdGlvbjo6VHlwZUxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6
VHlwZUxvY2F0aW9uOjp+VHlwZUxvY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE1vdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVUeXBl
c1dpdGhIaWdoRmlkZWxpdHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dFRvU2NvcGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5
SWQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGluZyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAg
ICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OlByZWZp
eE5vZGU6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeVJlc29sdmVOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29uc3REZWNsTm9kZTo6ZW1pdENvZGVTaW5nbGUpOgor
ICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogaGVhcC9I
ZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRS
YW5nZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29uOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKToKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhf
REVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0
eUxvZy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6OmluaXRpYWxp
emVIaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6On5IaWdo
RmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6OnJlY29yZFR5cGVJ
bmZvcm1hdGlvbkZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGlnaEZpZGVsaXR5TG9nOjpw
cm9jZXNzSGlnaEZpZGVsaXR5TG9nKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0eUxv
Zy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SGlnaEZpZGVsaXR5TG9nOjpIaWdoRmlkZWxpdHlM
b2cpOgorICAgICAgICAqIHJ1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGb3JW
YXJpYWJsZUluUmFuZ2UpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6
OmdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAgICAgICAgKEpTQzo6SGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAg
ICAgICAgKEpTQzo6SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjptZXJnZUluVHlwZXNGb3JMb2Nh
dGlvbik6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYXRp
b25CYXNlZEhhc2gpOgorICAgICAgICAqIHJ1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0cnVjdHVyZVNo
YXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGUp
OgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVDYXB0dXJlZE5hbWVzKToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6OnVuaXF1ZUlERm9yVmFyaWFibGUpOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZTo6dW5pcXVlSURGb3JSZWdpc3Rlcik6CisgICAgICAgICogcnVudGltZS9T
eW1ib2xUYWJsZS5oOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6YWRkKToKKyAgICAgICAg
KEpTQzo6U3ltYm9sVGFibGU6OnNldCk6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OlR5cGVTZXQ6OlR5cGVTZXQpOgorICAgICAgICAoSlNDOjpU
eXBlU2V0OjpnZXRSdW50aW1lVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6
YWRkVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6bWVyZ2VXaXRoVHlwZVNl
dCk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OnJlbW92ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhp
c3RvcnkpOgorICAgICAgICAoSlNDOjpUeXBlU2V0OjpzZWVuVHlwZXMpOgorICAgICAgICAoSlND
OjpUeXBlU2V0OjpkdW1wU2VlblR5cGVzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6
Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVNldC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpT
Qzo6Vk06OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAgICAgICAgKEpTQzo6Vk06OnVw
ZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUpOgorICAgICAgICAoSlNDOjpWTTo6ZHVt
cEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgIChKU0M6OlZNOjppc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSk6CisgICAg
ICAgIChKU0M6OlZNOjpoaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpWTTo6bmV4dExv
Y2F0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OmdldE5leHRVbmlxdWVWYXJpYWJsZUlEKToKKyAg
ICAgICAgKEpTQzo6Vk06OmdldE5leHRVbmlxdWVJbnN0cnVjdGlvbklEKToKKwogMjAxNC0wNi0x
OSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtmdGxvcHRdIFN0
cnVjdHVyZVNldDo6b25seVN0cnVjdHVyZSgpIHNob3VsZCByZXR1cm4gbnVsbHB0ciBpZiBpdCdz
IG5vdCBhIHNpbmdsZXRvbiAoaW5zdGVhZCBvZiBhc3NlcnRpbmcpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAkocmV2aXNpb24gMTcwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkJ1dHRlcmZs
eUlubGluZXMuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJDb3BpZWRTcGFj
ZUlubGluZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC0zNTMsNiArMzU0
LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhl
Y1N0YXRlKik7CiAjZW5kaWYKIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMgKEV4ZWNTdGF0ZSopOworCiBzdHJ1Y3Qg
U2NyaXB0IHsKICAgICBib29sIGlzRmlsZTsKICAgICBjaGFyKiBhcmd1bWVudDsKQEAgLTQ5Myw2
ICs0OTYsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVJ
bXB1cmVHZXR0ZXIiLCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlciwgMSk7CiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAic2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUiLCBmdW5jdGlvblNldEltcHVy
ZUdldHRlckRlbGVnYXRlLCAyKTsKKworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBUeXBl
c0ZvckFsbFZhcmlhYmxlcyIsIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzICwgNCk7
CiAgICAgICAgIAogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
Z2xvYmFsRXhlYygpLCAwKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVu
dHMuc2l6ZSgpOyArK2kpCkBAIC05MjcsNiArOTMyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25NYWsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hc3F1ZXJh
ZGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxW
YXJpYWJsZXMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGV4ZWMtPnZtKCkuZHVtcEhpZ2hGaWRl
bGl0eVByb2ZpbGluZ1R5cGVzKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKK30KKworCisKIC8vIFVzZSBTRUggZm9yIFJlbGVhc2UgYnVpbGRzIG9ubHkgdG8g
Z2V0IHJpZCBvZiB0aGUgY3Jhc2ggcmVwb3J0IGRpYWxvZwogLy8gKGx1Y2tpbHkgdGhlIHNhbWUg
dGVzdHMgZmFpbCBpbiBSZWxlYXNlIGFuZCBEZWJ1ZyBidWlsZHMgc28gZmFyKS4gTmVlZCB0bwog
Ly8gYmUgaW4gYSBzZXBhcmF0ZSBtYWluIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGpzY21haW4gZnVu
Y3Rpb24gcmVxdWlyZXMgb2JqZWN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTcwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTgzNSw2ICs4MzUs
MTMgQEAKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQz
MTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhE
OTAwNzZGMTEwIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZv
dW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyog
WWFyci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUx
NTM5QjgxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkZCNzEzNzE5NTM3NEI4MDBCQjYxMkUgLyogSGln
aEZpZGVsaXR5TG9nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyRkI3MTMzMTk1Mzc0QjcwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwICov
OyB9OworCQk1MkZCNzEzODE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzEzNDE5NTM3
NEI3MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTJGQjcxMzkxOTUzNzRCODAwQkI2MTJFIC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzEzNTE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmNwcCAqLzsgfTsKKwkJNTJGQjcxM0ExOTUzNzRCODAwQkI2MTJFIC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJGQjcxMzYxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTUyRkI3MjExMTk1Mzc1QzYwMEJCNjEyRSAvKiBUeXBlTG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MjEwMTk1Mzc1QzYw
MEJCNjEyRSAvKiBUeXBlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1MkZCNzIxNDE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzIx
MjE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5jcHAgKi87IH07CisJCTUyRkI3MjE1MTk1Mzc2
MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MkZCNzIxMzE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1MTA1MDI2MThF
QjgyNzUwMDAwMUYzRSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDBGODhGMEE1MDhCMTAwMDA1RjA2MSAvKiBK
U0NhbGxiYWNrRnVuY3Rpb24uaCAqLzsgfTsKIAkJNTUyRUE3MEMxOTA4NzA0ODAwQTY2RjJGIC8q
IEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQjY2QkYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQcm90
b3R5cGUuY3BwICovOyB9OwogCQk1NTQwNzU3MjE4REE1OEFEMDBFRkY3RjIgLyogQXJnTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNjA1MTIw
RTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLzsgfTsKQEAgLTI5NzAsNiArMjk3NywxNCBA
QAogCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGpzYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgfTsKIAkJNTFGMEVCNjEwNUM4NkM2QjAwRTZE
RjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9u
LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1MUYwRUMwNzA1Qzg2
QzlBMDBFNkRGMUIgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGli
b2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNvdXJjZVRyZWUgPSAi
PGFic29sdXRlPiI7IH07CisJCTUyMkFCQUY5MTk0QTgwNDMwMDhCMUM4NSAvKiBUeXBlTG9jYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUxvY2F0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRkI3MTMzMTk1Mzc0QjcwMEJCNjEyRSAvKiBI
aWdoRmlkZWxpdHlMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SGlnaEZpZGVsaXR5TG9nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGQjcx
MzQxOTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIaWdoRmlkZWxpdHlMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTJGQjcxMzUxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZCNzEz
NjE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZCNzIxMDE5NTM3NUM2MDBCQjYxMkUgLyogVHlw
ZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MkZCNzIxMjE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlU2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGQjcyMTMxOTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVT
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwNzU4NDE4RjRBMzc1MDA2MDJBNUQgLyogQ29tcGls
ZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NTQwN0FDODE4REE1OEFEMDBFRkY3RjIgLyogbGliQ29tcGlsZVJ1bnRpbWVUb0xM
Vk1JUi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBh
cmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJDb21waWxlUnVudGltZVRv
TExWTUlSLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVENTM3MjZE
MEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVHJh
Y2luZy5kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY0Myw2ICs0NjU4LDEwIEBA
CiAJCQkJMEYyQjY2QjMxN0I2QjVBQjAwQTdBRTNGIC8qIEdlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaCAqLywKIAkJCQlCQzAyRTlCODBFMTg0NTQ1MDAwRjkyOTcgLyogR2V0dGVyU2V0dGVy
LmNwcCAqLywKIAkJCQlCQzMzN0JERTBFMUFGMEI4MDA3NjkxOEEgLyogR2V0dGVyU2V0dGVyLmgg
Ki8sCisJCQkJNTJGQjcxMzMxOTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAg
Ki8sCisJCQkJNTJGQjcxMzQxOTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5oICov
LAorCQkJCTUyRkI3MTM1MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXIuY3BwICovLAorCQkJCTUyRkI3MTM2MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuaCAqLywKIAkJCQk5MzNBMzQ5RDAzOEFFODBGMDA4NjM1Q0UgLyogSWRlbnRp
Zmllci5jcHAgKi8sCiAJCQkJOTMzQTM0OUEwMzhBRTdDNjAwODYzNUNFIC8qIElkZW50aWZpZXIu
aCAqLywKIAkJCQk4NjA2RERFOTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMu
aCAqLywKQEAgLTQ5MTQsNiArNDkzMyw4IEBACiAJCQkJMEYyQjY2REIxN0I2QjVBQjAwQTdBRTNG
IC8qIFR5cGVkQXJyYXlzLmggKi8sCiAJCQkJMEYyQjY2REMxN0I2QjVBQjAwQTdBRTNGIC8qIFR5
cGVkQXJyYXlUeXBlLmNwcCAqLywKIAkJCQkwRjJCNjZERDE3QjZCNUFCMDBBN0FFM0YgLyogVHlw
ZWRBcnJheVR5cGUuaCAqLywKKwkJCQk1MkZCNzIxMjE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNl
dC5jcHAgKi8sCisJCQkJNTJGQjcyMTMxOTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuaCAqLywK
IAkJCQlBN0E4QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCAqLywKIAkJCQk4
NjY3MzlEMTEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggKi8sCiAJCQkJ
QTdBOEFGMzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi8sCkBAIC01Mzg1LDYg
KzU0MDYsNyBAQAogCQkJCTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAgKi8sCiAJCQkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8q
IExMSW50Q2FsbExpbmtJbmZvLmggKi8sCisJCQkJNTIyQUJBRjkxOTRBODA0MzAwOEIxQzg1IC8q
IFR5cGVMb2NhdGlvbi5oICovLAogCQkJCTBGQjU0NjdDMTRGNUNGRDMwMDJDMjk4OSAvKiBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkwRkI1NDY3QTE0RjVDN0Q0MDAy
QzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovLAogCQkJCTE0Q0E5NThD
MTZBQjUwRkEwMDkzOEEwNiAvKiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oICovLApAQCAtNTQy
MCw2ICs1NDQyLDcgQEAKIAkJCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJl
U3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovLAogCQkJCUJDQ0YwRDBCMEVGMEI4QTUwMDQxM0M4
RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgKi8sCiAJCQkJQkNDRjBEMDcwRUYwQUFCOTAwNDEz
QzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmggKi8sCisJCQkJNTJGQjcyMTAxOTUzNzVDNjAwQkI2
MTJFIC8qIFR5cGVMb2NhdGlvbi5oICovLAogCQkJCUE3OUU3ODFFMTVFRUNCQTgwMDQ3Qzg1NSAv
KiBVbmxpbmtlZENvZGVCbG9jay5jcHAgKi8sCiAJCQkJQTc5RTc4MUYxNUVFQ0JBODAwNDdDODU1
IC8qIFVubGlua2VkQ29kZUJsb2NrLmggKi8sCiAJCQkJQjU5Rjg5MzgxODkxQURCNTAwRDVDQ0RD
IC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwICovLApAQCAtNTg4OSw2ICs1OTEyLDEw
IEBACiAJCQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1B
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyRkI3MjE1MTk1Mzc2MEMwMEJCNjEyRSAv
KiBUeXBlU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkZCNzIxMTE5NTM3NUM2MDBCQjYxMkUg
LyogVHlwZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkZCNzEzQTE5NTM3NEI4MDBC
QjYxMkUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MkZCNzEzODE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFNTI0OEY5MTkxNDQyRDkwMEI3RkRFNCAvKiBWYXJpYWJsZVdh
dGNocG9pbnRTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc2MDMsNiArNzYzMCw3IEBA
CiAJCQkJMEY0ODUzMjExODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjYzOTQ4NDE1RTQ4MTE4MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDlBMjk0MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdBdFRh
aWxBYnN0cmFjdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyRkI3MTM5MTk1Mzc0Qjgw
MEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY2NjZFQzYxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjcxNENBNDE2RUE5MkYwMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJv
cGFnYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3
NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc2MzgsNiArNzY2
Niw3IEBACiAJCQkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXpl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzhBOTc3NjE3OTczOEI4MDA5REY3NDQgLyogREZH
RmluYWxpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJEQzE1MTUxQzVENEQwMENEODkx
MCAvKiBERkdGaXh1cFBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyRkI3MjE0MTk1Mzc2
MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2MTdG
RkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdE
ODlDRjcxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2RUM5REM3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTc3MjAsNiArNzc0OSw3IEBACiAJCQkJQTdCNDhGNDkwRUU4OTM2RjAwRENCREI2
IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEQjY0NjQw
Rjk1QzZGQzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjU2QTFENTE1MDAxQ0Y0MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291
bnRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MkZCNzEzNzE5NTM3NEI4MDBCQjYxMkUgLyog
SGlnaEZpZGVsaXR5TG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMDMzMkMwMThBREZBRTEw
MDVGOTc5QSAvKiBFeGl0aW5nSklUVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxMDU4
NTE2NzU0ODBGMDBGOEFCNkUgLyogRXhpdEtpbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
QTBBMUMxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24JKHJldmlzaW9uIDE3MDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBA
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXNvbHZlX3Njb3BlIiwgImxlbmd0aCIgOiA2
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfZnJvbV9zY29wZSIsICJsZW5ndGgi
IDogOCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0X3RvX3Njb3BlIiwgImxlbmd0
aCIgOiA3IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fc2NvcGVfd2l0aF9w
cm9maWxlIiwgImxlbmd0aCIgOiA4IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNo
X3dpdGhfc2NvcGUiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3BvcF9zY29wZSIsICJsZW5ndGgiIDogMSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
cHVzaF9uYW1lX3Njb3BlIiwgImxlbmd0aCIgOiA0IH0sCkBAIC0xMjIsNyArMTIzLDggQEAKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlYnVnIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3dpbGxfY2FsbCIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV9kaWRfY2FsbCIsICJsZW5ndGgiIDog
MiB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0aCIgOiAyIH0KKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VuZCIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkiLCAibGVu
Z3RoIiA6IDQgfQogICAgICAgICBdCiAgICAgfSwKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAkocmV2aXNpb24gMTcwMTU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAogICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzoKICAgICBjYXNlIG9wX2dldF9jYWxs
ZWU6CiAgICAgY2FzZSBvcF9lbnRlcjoKKyAgICAvL1RPRE86IFNob3VsZCB0aGlzIGZ1bmN0b3Ig
YmUgY2FsbGVkIHdpdGggb25lIG9wZXJhbmQ/CisgICAgY2FzZSBvcF9wcm9maWxlX3R5cGVzX3dp
dGhfaGlnaF9maWRlbGl0eToKICAgICBjYXNlIG9wX2NhdGNoOgogICAgIGNhc2Ugb3BfdG91Y2hf
ZW50cnk6CiAgICAgICAgIHJldHVybjsKQEAgLTEwNSw2ICsxMDcsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWxfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAg
ICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9m
aWxlOgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCk7CkBAIC0yNDksNiArMjUyLDcgQEAgdm9pZCBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbAogICAgIGNhc2Ugb3BfcHVzaF9uYW1lX3Njb3BlOgogICAg
IGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgorICAg
IGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKICAgICBjYXNlIG9wX3BvcF9zY29w
ZToKICAgICBjYXNlIG9wX2VuZDoKICAgICBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgpAQCAt
Mjg3LDYgKzI5MSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmwK
ICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4
OgogICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfcHJvZmlsZV90
eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CiAgICAgY2FzZSBvcF90b3VjaF9lbnRyeToKICNkZWZp
bmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAg
ICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVT
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAxNzAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50
cnlwb2ludC5oIgorI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9seW1v
cnBoaWNHZXRCeUlkTGlzdC5oIgpAQCAtODQyLDYgKzg0MywxNSBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6
IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
Ly9pbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgICsraXQ7CisgICAgICAg
ICAgICArK2l0OworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAib3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkiKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9ub3Q6IHsKICAgICAgICAg
ICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5vdCIpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xNDY4LDYgKzE0NzgsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKAogICAgICAgICAgICAgICAgIG9wZXJhbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAg
ICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBA
IC0xNDc2LDYgKzE0ODcsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAg
ICAgICAgKytpdDsgLy8gU3RydWN0dXJlCiAgICAgICAgICAgICBpbnQgb3BlcmFuZCA9ICgrK2l0
KS0+dS5vcGVyYW5kOyAvLyBPcGVyYW5kCiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfdG9fc2NvcGUiKTsKKyAgICAgICAgICAgIGlm
IChvcGNvZGUgPT0gb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSkKKyAgICAgICAgICAgICAg
ICArK2l0OwogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXU8JXN8JXM+LCA8
c3RydWN0dXJlPiwgJWQiLAogICAgICAgICAgICAgICAgIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgp
LCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5k
YXRhKCksCiAgICAgICAgICAgICAgICAgbW9kZUFuZFR5cGUub3BlcmFuZCgpLCByZXNvbHZlTW9k
ZU5hbWUobW9kZUFuZFR5cGUubW9kZSgpKSwgcmVzb2x2ZVR5cGVOYW1lKG1vZGVBbmRUeXBlLnR5
cGUoKSksCkBAIC0xODc5LDYgKzE4OTIsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRF
eGVjdXRhYmxlKiBvCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNh
c2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKICAgICAgICAgY2FzZSBvcF9wdXRfdG9f
c2NvcGU6IHsKICAgICAgICAgICAgIC8vIHB1dF90b19zY29wZSBzY29wZSwgaWQsIHZhbHVlLCBS
ZXNvbHZlTW9kZUFuZFR5cGUsIFN0cnVjdHVyZSwgT3BlcmFuZAogICAgICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CkBAIC0xODk0
LDkgKzE5MDgsNzEgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChvcC5zdHJ1Y3R1cmUpCiAgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyA1XS51LnN0cnVjdHVyZS5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwg
b3Auc3RydWN0dXJlKTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVy
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3Aub3BlcmFuZCk7CisKKyAgICAgICAgICAgIC8v
IHB1dF90b19zY29wZV93aXRoX3Byb2ZpbGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVzb2x2ZU1vZGVB
bmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQsIFR5cGVMb2NhdGlvbioKKyAgICAgICAgICAgIGlm
IChwY1swXS51Lm9wY29kZSA9PSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlKSB7CisgICAg
ICAgICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHZtKCktPm5leHRMb2NhdGlvbigp
OworICAgICAgICAgICAgICAgIHNpemVfdCBpbnN0cnVjdGlvbk9mZnNldCA9IGkgKyBvcExlbmd0
aCAtIDE7CisgICAgICAgICAgICAgICAgaW50IGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0
OyAKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW5lID0gMCwgY29sdW1uID0gMDsKKyAgICAg
ICAgICAgICAgICBleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChpbnN0cnVjdGlvbk9m
ZnNldCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CisKKyAg
ICAgICAgICAgICAgICBsb2NhdGlvbi0+bGluZSA9IGxpbmU7CisgICAgICAgICAgICAgICAgbG9j
YXRpb24tPmNvbHVtbiA9IGNvbHVtbjsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+c291cmNl
SUQgPSBtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKTsKKyAgICAgICAgICAgICAgICBsb2Nh
dGlvbi0+Z2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHM7Cisg
ICAgICAgICAgICAgICAgbG9jYXRpb24tPmdsb2JhbEluc3RydWN0aW9uSUQgPSB2bSgpLT5nZXRO
ZXh0VW5pcXVlSW5zdHJ1Y3Rpb25JRCgpOworCisgICAgICAgICAgICAgICAgLy9UT0RPOiBoYW5k
bGUgb3RoZXIgb3AudHlwZSBoZXJlCisgICAgICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJv
bFRhYmxlID0gMDsKKyAgICAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyKSAK
KyAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBvcC5hY3RpdmF0aW9uLT5zeW1ib2xU
YWJsZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyKQor
ICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZSA9IG1fZ2xvYmFsT2JqZWN0LmdldCgpLT5z
eW1ib2xUYWJsZSgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wLnR5cGUgPT0gR2xvYmFs
UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9UT0RPOiBpbXBsZW1lbnQKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHN5bWJv
bFRhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+Z2xv
YmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwg
aWRlbnQuaW1wbCgpLCAqdm0oKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2kgKyA3XS51LmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAgICAg
ICAgY2FzZSBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eTogeworCisgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCk7Cisg
ICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtX3N5bWJvbFRhYmxlLmdldCgp
OworICAgICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHZtKCktPm5leHRMb2NhdGlv
bigpOworICAgICAgICAgICAgc2l6ZV90IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9wTGVuZ3Ro
IC0gMTsKKyAgICAgICAgICAgIGludCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsgCisg
ICAgICAgICAgICB1bnNpZ25lZCBsaW5lID0gMCwgY29sdW1uID0gMDsKKyAgICAgICAgICAgIGV4
cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBkaXZvdCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKKworICAgICAgICAgICAgaW50
IGhhc0dsb2JhbElERmxhZyA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlmIChoYXNH
bG9iYWxJREZsYWcpIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+Z2xvYmFs
VmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclJlZ2lzdGVyKGxvY2tlciwgdmly
dHVhbFJlZ2lzdGVyLm9mZnNldCgpLCAqdm0oKSk7CisgICAgICAgICAgICB9IGVsc2UgCisgICAg
ICAgICAgICAgICAgbG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxpdHlOb0ds
b2JhbElERXhpc3RzOworCisgICAgICAgICAgICBsb2NhdGlvbi0+bGluZSA9IGxpbmU7CisgICAg
ICAgICAgICBsb2NhdGlvbi0+Y29sdW1uID0gY29sdW1uOworICAgICAgICAgICAgbG9jYXRpb24t
PnNvdXJjZUlEID0gbV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCk7CisgICAgICAgICAgICBs
b2NhdGlvbi0+Z2xvYmFsSW5zdHJ1Y3Rpb25JRCA9IHZtKCktPmdldE5leHRVbmlxdWVJbnN0cnVj
dGlvbklEKCk7CisKKyAgICAgICAgICAgIC8vU3RyaW5nIG5hbWUgPSBuYW1lRm9yUmVnaXN0ZXIo
dmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIC8vcHJpbnRmKCJMSU5LSU5HOiBvcF9wcm9m
aWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSBoYXMgdW5pcXVlSUQ6JyVsbHUnIGFuZCBuYW1l
OiclcycsIGxpbmU6JyV1JywgY29sdW1uOicldSdcbiIsIGdsb2JhbElELCBuYW1lLmFzY2lpKCku
ZGF0YSgpLCBsb2NhdGlvbi0+bGluZSwgbG9jYXRpb24tPmNvbHVtbik7IAorICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zW2kgKyAyXS51LmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgICAgICAg
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKICAgICAgICAgY2FzZSBvcF9jYXB0
dXJlZF9tb3Y6CiAgICAgICAgIGNhc2Ugb3BfbmV3X2NhcHR1cmVkX2Z1bmM6IHsKICAgICAgICAg
ICAgIGlmIChwY1szXS51LmluZGV4ID09IFVJTlRfTUFYKSB7CkBAIC0yMzQwLDYgKzI0MTYsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIG9wX2dldF9mcm9tX3Nj
b3BlOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAg
ICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKICAgICAgICAgICAgICAgICBSZXNvbHZl
TW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUgPQogICAgICAgICAgICAgICAgICAgICBSZXNvbHZlTW9k
ZUFuZFR5cGUoY3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKQEAgLTM1ODEsNiArMzY1OCw5
IEBAIGJvb2wgQ29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY28KIAogU3RyaW5nIENv
ZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIp
CiB7CisgICAgaWYgKCFzeW1ib2xUYWJsZSgpKSAKKyAgICAgICAgcmV0dXJuICIiOworCiAgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2Vy
KTsKICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIHB0ciA9IHN5bWJvbFRhYmxl
KCktPmJlZ2luKGxvY2tlcik7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNzAxNTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwOCw3ICs0MDgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7
CiAKLSAgICBTdHJpbmcgbmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIpOwog
CiAjaWYgRU5BQkxFKEpJVCkKICAgICB2b2lkIHNldE51bWJlck9mQnlWYWxJbmZvcyhzaXplX3Qg
c2l6ZSkgeyBtX2J5VmFsSW5mb3MucmVzaXplVG9GaXQoc2l6ZSk7IH0KQEAgLTk0Myw2ICs5NDMs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCk7IC8vIFdp
bGwgb25seSByZXR1cm4gdmFsaWQgcmVzdWx0cyB3aGVuIGNhbGxlZCBkdXJpbmcgR0MuIEFzc3Vt
ZXMgdGhhdCB5b3UndmUgYWxyZWFkeSBlc3RhYmxpc2hlZCB0aGF0IHRoZSBvd25lciBleGVjdXRh
YmxlIGlzIGxpdmUuCiAKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtS
ZWZlcmVuY2VzKFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmFs
aXplVW5jb25kaXRpb25hbGx5KCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTcwMTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAi
T3Bjb2RlLmgiCisjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlT
bG90LmgiCiAjaW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUu
aCIKQEAgLTExOCw2ICsxMTksNyBAQCBzdHJ1Y3QgSW5zdHJ1Y3Rpb24gewogICAgICAgICBXcml0
ZUJhcnJpZXJCYXNlPEpTQWN0aXZhdGlvbj4gYWN0aXZhdGlvbjsKICAgICAgICAgdm9pZCogcG9p
bnRlcjsKICAgICAgICAgYm9vbCogcHJlZGljYXRlUG9pbnRlcjsKKyAgICAgICAgVHlwZUxvY2F0
aW9uKiBsb2NhdGlvbjsKICAgICB9IHU7CiAgICAgICAgIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UeXBlTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
NCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVHlwZUxvY2F0aW9uX2gKKyNkZWZpbmUgVHlw
ZUxvY2F0aW9uX2gKKworI2luY2x1ZGUgIlR5cGVTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
KyAgICBlbnVtIEhpZ2hGaWRlbGl0eUdsb2JhbElERmxhZ3MgeworICAgICAgICBIaWdoRmlkZWxp
dHlOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbiA9IC0xLAorICAgICAgICBIaWdoRmlkZWxpdHlOb0ds
b2JhbElERXhpc3RzID0gLTIKKyAgICB9OworCitjbGFzcyBUeXBlTG9jYXRpb24geworICAgICAg
ICAgICAgICAgICAgICAgICAKK3B1YmxpYzoKKyAgICBUeXBlTG9jYXRpb24oKSAKKyAgICAgICAg
OiB0eXBlU2V0KG5ldyBUeXBlU2V0KCkpCisgICAgeworICAgIH0KKworICAgIH5UeXBlTG9jYXRp
b24oKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHR5cGVTZXQ7CisgICAgfQorCisgICAgLy91aW50
NjRfdCBnbG9iYWxWYXJpYWJsZUlEOworICAgIGludDY0X3QgZ2xvYmFsVmFyaWFibGVJRDsKKyAg
ICB1aW50NjRfdCBnbG9iYWxJbnN0cnVjdGlvbklEOworICAgIC8vc2l6ZV90IHVubGlua2VkQnl0
ZUNvZGVPZmZzZXQ7CisgICAgaW50cHRyX3Qgc291cmNlSUQ7CisgICAgdW5zaWduZWQgbGluZTsK
KyAgICB1bnNpZ25lZCBjb2x1bW47CisgICAgVHlwZVNldCogdHlwZVNldDsKK307CisKK30gLy9u
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvL0xvY2F0aW9uX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CShyZXZpc2lvbiAxNzAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDEw
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZSgKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoc3JjLT5pbmRleCgpKTsKICAgICBpZiAoY2FwdHVyZU1vZGUgPT0gSXND
YXB0dXJlZCkKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHdhdGNoYWJsZVZhcmlhYmxl
KGRzdC0+aW5kZXgoKSkpOworCisgICAgaWYgKCFkc3QtPmlzVGVtcG9yYXJ5KCkgJiYgaXNHZW5l
cmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKQorICAgICAgICBlbWl0UHJvZmlsZVR5
cGVzV2l0aEhpZ2hGaWRlbGl0eShkc3QsIHRydWUpOworCiAgICAgcmV0dXJuIGRzdDsKIH0KIApA
QCAtMTExMSw2ICsxMTE1LDIxIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RXF1YWwKICAgICByZXR1cm4gZHN0OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJvZmls
ZSwgYm9vbCBoYXNHbG9iYWxJRCkKK3sKKyAgICAvL29wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdo
X2ZpZGVsaXR5IHZhbHVlX3JlZyBsb2NhdGlvbiBoYXNHbG9iYWxJRAorICAgIGVtaXRPcGNvZGUo
b3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChyZWdpc3RlclRvUHJvZmlsZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOworICAgIGlmIChoYXNHbG9iYWxJRCkgLy9lbWl0TW92ZSBhbmQgd2UncmUgaW50
ZXJlc3RlZCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBpZAorICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMSk7CisgICAgZWxzZQorICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7IC8v
cHV0X2J5X2lkLCBkb24ndCB0cnkgdG8gdHJhY2UgdG8gYSBnbG9iYWwgb2JqZWN0CisKKyAgICAv
L2luc3RydWN0aW9ucygpLmFwcGVuZChvZmZzZXQpOworfQorCisKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGJvb2wgYikKIHsKICAgICBy
ZXR1cm4gZW1pdExvYWQoZHN0LCBqc0Jvb2xlYW4oYikpOwpAQCAtMTI1NSwxMyArMTI3NCwxOCBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRvCiAgICAgbV9jb2RlQmxv
Y2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
IAogICAgIC8vIHB1dF90b19zY29wZSBzY29wZSwgaWQsIHZhbHVlLCBSZXNvbHZlTW9kZUFuZFR5
cGUsIFN0cnVjdHVyZSwgT3BlcmFuZAotICAgIGVtaXRPcGNvZGUob3BfcHV0X3RvX3Njb3BlKTsK
KyAgICBpZiAoaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKQorICAgICAg
ICBlbWl0T3Bjb2RlKG9wX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGUpOworICAgIGVsc2UKKyAg
ICAgICAgZW1pdE9wY29kZShvcF9wdXRfdG9fc2NvcGUpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChzY29wZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0
YW50KGlkZW50aWZpZXIpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChSZXNvbHZlTW9kZUFuZFR5cGUocmVzb2x2
ZU1vZGUsIHJlc29sdmVUeXBlKCkpLm9wZXJhbmQoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoaXNHZW5lcmF0
aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKQorICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0xMzI4LDYgKzEzNTIsMTAgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOworCisgICAgaWYgKGlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5
cGVQcm9maWxpbmcoKSkKKyAgICAgICAgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHko
dmFsdWUsIGZhbHNlKTsKKwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAkocmV2aXNpb24gMTcwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNiArMzMyLDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZW1pdE5vZGUobik7CiAgICAgICAg
IH0KIAorICAgICAgICB2b2lkIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KFJlZ2lz
dGVySUQqIGRzdCwgYm9vbCk7CisKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0
ZXJJRCogZHN0LCBib29sKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJ
RCogZHN0LCBkb3VibGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZChSZWdpc3RlcklE
KiBkc3QsIGNvbnN0IElkZW50aWZpZXImKTsKQEAgLTY3Nyw2ICs2NzksOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBWTSogbV92bTsKIAorICAgICAgICBib29sIGlzR2VuZXJhdGluZ0hp
Z2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSB7IHJldHVybiB2bSgpLT5pc1Byb2ZpbGluZ1R5cGVz
V2l0aEhpZ2hGaWRlbGl0eSgpOyB9CisKICAgICAgICAgT3Bjb2RlSUQgbV9sYXN0T3Bjb2RlSUQ7
CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBzaXplX3QgbV9sYXN0T3Bjb2RlUG9zaXRpb247Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCShyZXZpc2lvbiAxNzAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0MCwxMyArNzQw
LDE1IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXQKICAgICAgICAg
aWYgKGxvY2FsLmlzUmVhZE9ubHkoKSkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFk
T25seUV4Y2VwdGlvbklmTmVlZGVkKCk7CiAgICAgICAgICAgICBsb2NhbFJlZyA9IGdlbmVyYXRv
ci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGxvY2FsUmVnKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkpIHsKKyAgICAgICAgfSBlbHNlIGlm
IChsb2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBE
c3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICAgICAgQVNTRVJU
KGRzdCAhPSBsb2NhbFJlZyk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERz
dFNyYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0VG9OdW1iZXIodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRNb3ZlKHRlbXBEc3RTcmMuZ2V0KCksIGxvY2FsUmVnKTsKICAgICAgICAgICAgIGVt
aXRJbmNPckRlYyhnZW5lcmF0b3IsIHRlbXBEc3RTcmMuZ2V0KCksIG1fb3BlcmF0b3IpOworICAg
ICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmls
aW5nKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRNb3ZlKGxvY2FsUmVnLCB0ZW1wRHN0U3JjLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0
ZW1wRHN0LmdldCgpOwogICAgICAgICB9CkBAIC05MTUsMTAgKzkxNywxMiBAQCBSZWdpc3RlcklE
KiBQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXRlCiAgICAgICAgIGlmIChsb2NhbC5pc1JlYWRP
bmx5KCkpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5l
ZWRlZCgpOwogICAgICAgICAgICAgbG9jYWxSZWcgPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBsb2NhbFJlZyk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
bG9jYWwuaXNDYXB0dXJlZCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobG9jYWwuaXNDYXB0dXJl
ZCgpIHx8IGdlbmVyYXRvci5pc0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkp
IHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBE
c3QuZ2V0KCksIGxvY2FsUmVnKTsKICAgICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3Is
IHRlbXBEc3QuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5p
c0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpCisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsUmVnLCB0ZW1wRHN0
LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25J
Zk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CkBAIC0xNDA3LDI2ICsxNDEx
LDI5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVySUQqIGVtaXRSZWEKIAogUmVnaXN0
ZXJJRCogUmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIEpTVGV4dFBvc2l0aW9uIG5l
d0Rpdm90ID0gZGl2b3RTdGFydCgpICsgbV9pZGVudC5sZW5ndGgoKTsKICAgICBpZiAoTG9jYWwg
bG9jYWwgPSBnZW5lcmF0b3IubG9jYWwobV9pZGVudCkpIHsKICAgICAgICAgaWYgKGxvY2FsLmlz
UmVhZE9ubHkoKSkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlv
bklmTmVlZGVkKCk7CiAgICAgICAgICAgICByZXR1cm4gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50
KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgbG9jYWwuZ2V0KCks
IG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlw
ZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKICAgICAgICAgfQotICAgICAgICAK
KwogICAgICAgICBpZiAobG9jYWwuaXNDYXB0dXJlZCgpCisgICAgICAgICAgICB8fCBnZW5lcmF0
b3IuaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpCiAgICAgICAgICAgICB8
fCBnZW5lcmF0b3IubGVmdEhhbmRTaWRlTmVlZHNDb3B5KG1fcmlnaHRIYXNBc3NpZ25tZW50cywg
bV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKHJlc3VsdC5nZXQoKSwgbG9jYWwuZ2V0KCkpOwogICAgICAgICAgICAg
ZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgcmVzdWx0LmdldCgpLCByZXN1bHQu
Z2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtu
b3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAgICAgICAgICAgIGlm
IChnZW5lcmF0b3IuaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKQorICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obmV3RGl2b3QsIGRpdm90
U3RhcnQoKSwgbmV3RGl2b3QpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2Fs
LmdldCgpLCByZXN1bHQuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3Zl
VG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0LmdldCgpKTsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBlbWl0UmVhZE1vZGlmeUFzc2ln
bm1lbnQoZ2VuZXJhdG9yLCBsb2NhbC5nZXQoKSwgbG9jYWwuZ2V0KCksIG1fcmlnaHQsIG1fb3Bl
cmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5y
ZXN1bHREZXNjcmlwdG9yKCkpKTsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBKU1RleHRQb3NpdGlv
biBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7CiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2Nv
cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lkZW50KTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBUaHJvd0lmTm90Rm91bmQpOwpAQCAtMTQ0
Myw5ICsxNDUwLDExIEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWMK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpOwog
ICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQpOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkpIHsKKyAgICAgICAgaWYgKGxv
Y2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGluZygpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9
IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZSh0ZW1wRHN0LmdldCgpLCBtX3JpZ2h0KTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0
b3IuaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKQorICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5nZXQoKSwg
dGVtcERzdC5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoZHN0LCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgfQpAQCAtMTU0OCwx
MiArMTU1NywxMyBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Q29kZVNpbmdsCiAg
ICAgICAgIGlmICghbV9pbml0KQogICAgICAgICAgICAgcmV0dXJuIGxvY2FsLmdldCgpOwogCi0g
ICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkpIHsKKyAgICAgICAgLy9UT0RPOiBtYXliZSBw
dXQgZW1pdEV4cHJlc3Npb25JbmZvIGhlcmUKKyAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQo
KSB8fCBnZW5lcmF0b3IuaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKSB7
CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wRHN0LmdldCgp
LCBtX2luaXQpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5n
ZXQoKSwgdGVtcERzdC5nZXQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShsb2NhbC5nZXQoKSwgbV9pbml0KTsKICAgICB9CiAKQEAg
LTE4NzEsNyArMTg4MSw4IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW4KICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQgPSBzaW1wbGVCaW5kaW5nLT5ib3VuZFBy
b3BlcnR5KCk7CiAgICAgICAgICAgICBMb2NhbCBsb2NhbCA9IGdlbmVyYXRvci5sb2NhbChpZGVu
dCk7CiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSBsb2NhbC5nZXQoKTsKLSAgICAgICAgICAg
IGlmICghcHJvcGVydHlOYW1lIHx8IGxvY2FsLmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAgIC8v
VE9ETzogbWF5YmUgZW1pdCBleHByZXNzaW9uIGluZm8/Pz8KKyAgICAgICAgICAgIGlmICghcHJv
cGVydHlOYW1lIHx8IGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNHZW5lcmF0aW5n
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKQogICAgICAgICAgICAgICAgIGdvdG8gZ2VuZXJp
Y0JpbmRpbmc7CiAgICAgICAgICAgICBleHBlY3RlZFN1YnNjcmlwdCA9IGdlbmVyYXRvci5lbWl0
TW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IucHVzaE9wdGltaXNlZEZvckluKGV4cGVjdGVkU3Vic2NyaXB0LmdldCgpLCBp
dGVyLmdldCgpLCBpLmdldCgpLCBwcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE3MDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjksNiArOTY5LDcgQEAgdm9pZCBI
ZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdAogI2lmIEVOQUJMRShBTExPQ0FUSU9O
X0xPR0dJTkcpCiAgICAgZGF0YUxvZ0YoIkpTQyBHQyBzdGFydGluZyBjb2xsZWN0aW9uLlxuIik7
CiAjZW5kaWYKKyAgICB2bSgpLT51cGRhdGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZVN0YXRlKCk7
CiAgICAgCiAgICAgZG91YmxlIGJlZm9yZSA9IDA7CiAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAkocmV2aXNpb24gMTcwMTU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSwxNCBAQCB2b2lkIElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6cnVuKEVycm9yU3RyCiB7CiB9CiAKK3ZvaWQgSW5zcGVjdG9y
UnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZUZvclZhcmlhYmxlSW5UZXh0UmFuZ2UoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGluX3ZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGluX3N0YXJ0TGluZSwgaW50IGluX3N0YXJ0Q29sdW1uLCBpbnQgaW5f
ZW5kTGluZSwgaW50IGluX2VuZENvbHVtbiwgU3RyaW5nKiBvdXRfdHlwZXMpIAoreworICAgIFZN
JiB2bSA9IGdsb2JhbFZNKCk7CisgICAgU3RyaW5nIHR5cGVzKHZtLmdldFR5cGVzRm9yVmFyaWFi
bGVJblJhbmdlKGluX3N0YXJ0TGluZSwgaW5fc3RhcnRDb2x1bW4sIGluX2VuZExpbmUsIGluX2Vu
ZENvbHVtbiwgaW5fdmFyaWFibGVOYW1lLCBpbl9pZCkpOworICAgICpvdXRfdHlwZXMgPSB0eXBl
czsKK30KKwogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgJKHJldmlzaW9uIDE3MDE1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0
eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2Ny
aXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmlu
ZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRSdW50aW1lVHlwZUZvclZhcmlhYmxl
SW5UZXh0UmFuZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGluX3ZhcmlhYmxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBpbl9pZCwgaW50IGluX3N0YXJ0TGluZSwgaW50IGluX3N0YXJ0Q29sdW1u
LCBpbnQgaW5fZW5kTGluZSwgaW50IGluX2VuZENvbHVtbiwgU3RyaW5nKiBvdXRfdHlwZXMpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRTY3JpcHREZWJ1Z1NlcnZlcihTY3JpcHREZWJ1Z1NlcnZl
ciogc2NyaXB0RGVidWdTZXJ2ZXIpIHsgbV9zY3JpcHREZWJ1Z1NlcnZlciA9IHNjcmlwdERlYnVn
U2VydmVyOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvUnVudGltZS5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29uCShyZXZpc2lvbiAxNzAxNTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgkod29ya2luZyBj
b3B5KQpAQCAtMTk2LDYgKzE5NiwyMSBAQAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6
ICJkaXNhYmxlIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyByZXBvcnRp
bmcgb2YgZXhlY3V0aW9uIGNvbnRleHRzIGNyZWF0aW9uLiIKKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgIm5hbWUiOiAiZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJh
bmdlIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAidmFyaWFibGVOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlZh
cmlhYmxlIHdlIHdhbnQgdHlwZSBpbmZyb21hdGlvbiBmb3IuIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAic291cmNlSUQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAi
c291cmNlSUQgdW5pcXVlbHkgaWRlbnRpZnlpbmcgYSBzY3JpcHQiIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJzdGFydExpbmUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9u
IjogInN0YXJ0IGxpbmUgZm9yIHZhcmlhYmxlIG5hbWUiIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzdGFydENvbHVtbiIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAi
c3RhcnQgY29sdW1uIGZvciB2YXJpYWJsZSBuYW1lIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZW5kTGluZSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiZW5kIGxp
bmUgZm9yIHZhcmlhYmxlIG5hbWUiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRD
b2x1bW4iLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogImVuZCBjb2x1bW4gZm9y
IHZhcmlhYmxlIG5hbWUiIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAicmV0dXJucyI6
IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInR5cGVzIiwgInR5cGUiOiAic3RyaW5nIiwg
ImRlc2NyaXB0aW9uIjogIlR5cGVzIGZvciByZXF1ZXN0ZWQgdmFyaWFibGUuIiB9CisgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgZGV0YWlsZWQgaW5m
b3JtdGF0aW9uIG9uIGdpdmVuIGZ1bmN0aW9uLiIKICAgICAgICAgfQogICAgIF0sCiAgICAgImV2
ZW50cyI6IFsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMTcwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxp
dHlMb2cuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2lu
Y2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTE2Nyw3ICsxNjgsMzAgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgICAgIEV4ZWNTdGF0ZSogX19yY2ZfZXhlYyA9IChl
eGVjQ2FsbGVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIExMSU5UX1JF
VFVSTl9UV08ocGMsIF9fcmNmX2V4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgfSB3aGlsZSAoZmFsc2UpCi0gICAgCisKKyNkZWZpbmUgTExJTlRfUFVUX1RPX1NDT1BF
X0NPTU1PTigpIFwKKyAgICBMTElOVF9CRUdJTigpOyBcCisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsgXAorICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0g
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7IFwKKyAgICBKU09iamVjdCog
c2NvcGUgPSBqc0Nhc3Q8SlNPYmplY3QqPihMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOyBcCisgICAg
SlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOyBcCisgICAgUmVzb2x2ZU1v
ZGVBbmRUeXBlIG1vZGVBbmRUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBlKHBjWzRdLnUub3BlcmFu
ZCk7IFwKKyBcCisgICAgaWYgKG1vZGVBbmRUeXBlLm1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQg
JiYgIXNjb3BlLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCkpIFwKKyAgICAgICAgTExJTlRfVEhS
T1coY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOyBcCisgXAorICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsg
XAorICAgIHNjb3BlLT5tZXRob2RUYWJsZSgpLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1
ZSwgc2xvdCk7IFwKKyBcCisgICAgLyogQ292ZXJzIGltcGxpY2l0IGdsb2JhbHMuIFNpbmNlIHRo
ZXkgZG9uJ3QgZXhpc3QgdW50aWwgdGhleSBmaXJzdCBleGVjdXRlLCB3ZSBkaWRuJ3Qga25vdyBo
b3cgdG8gY2FjaGUgdGhlbSBhdCBjb21waWxlIHRpbWUuKi8gIFwKKyAgICBpZiAobW9kZUFuZFR5
cGUudHlwZSgpID09IEdsb2JhbFByb3BlcnR5IHx8IG1vZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9i
YWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsgXAorICAgICAgICBpZiAoc2xvdC5p
c0NhY2hlYWJsZVB1dCgpICYmIHNsb3QuYmFzZSgpID09IHNjb3BlICYmIHNjb3BlLT5zdHJ1Y3R1
cmUoKS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7IFwKKyAgICAgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsgXAorICAgICAgICAg
ICAgcGNbNV0udS5zdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIHNjb3BlLT5zdHJ1Y3R1cmUoKSk7IFwKKyAgICAgICAgICAgIHBjWzZdLnUub3Bl
cmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisKIAog
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3Rh
dGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCiB7
CkBAIC01MzMsNiArNTU3LDE1IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdf
cmVnZXgKICAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUodm0sIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlk
ZWxpdHkpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9u
ID0gcGNbMl0udS5sb2NhdGlvbjsKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKTsKKyAgICB2bS5oaWdoRmlkZWxpdHlMb2coKS0+cmVjb3JkVHlwZUluZm9ybWF0aW9uRm9y
TG9jYXRpb24odiwgbG9jYXRpb24pOworICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpCiB7CiAgICAgTExJ
TlRfQkVHSU4oKTsKQEAgLTE0MjYsMzAgKzE0NTksMjAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2dldF9mcm9tXwogICAgIExMSU5UX1JFVFVSTihzbG90LmdldFZhbHVlKGV4ZWMs
IGlkZW50KSk7CiB9CiAKKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19z
Y29wZSkKIHsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKLSAgICBKU09iamVjdCogc2NvcGUgPSBq
c0Nhc3Q8SlNPYmplY3QqPihMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOwotICAgIEpTVmFsdWUgdmFs
dWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKLSAgICBSZXNvbHZlTW9kZUFuZFR5cGUgbW9k
ZUFuZFR5cGUgPSBSZXNvbHZlTW9kZUFuZFR5cGUocGNbNF0udS5vcGVyYW5kKTsKLQotICAgIGlm
IChtb2RlQW5kVHlwZS5tb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFzY29wZS0+aGFzUHJv
cGVydHkoZXhlYywgaWRlbnQpKQotICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVVbmRlZmluZWRW
YXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Ci0KLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChz
Y29wZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7Ci0gICAgc2NvcGUtPm1ldGhvZFRhYmxl
KCktPnB1dChzY29wZSwgZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsKLQotICAgIC8vIENvdmVy
cyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmly
c3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0
aW1lLgotICAgIGlmIChtb2RlQW5kVHlwZS50eXBlKCkgPT0gR2xvYmFsUHJvcGVydHkgfHwgbW9k
ZUFuZFR5cGUudHlwZSgpID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykg
ewotICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVB1dCgpICYmIHNsb3QuYmFzZSgpID09IHNj
b3BlICYmIHNjb3BlLT5zdHJ1Y3R1cmUoKS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgp
KSB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1f
bG9jayk7Ci0gICAgICAgICAgICBwY1s1XS51LnN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc2NvcGUtPnN0cnVjdHVyZSgpKTsKLSAgICAgICAg
ICAgIHBjWzZdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgTExJTlRfUFVUX1RPX1NDT1BFX0NPTU1PTigpOworICAgIExMSU5UX0VORCgpOwor
fQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlX3dpdGhfcHJv
ZmlsZSkKK3sKKyAgICAvLyBwdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlIHNjb3BlLCBpZCwgdmFs
dWUsIFJlc29sdmVNb2RlQW5kVHlwZSwgU3RydWN0dXJlLCBPcGVyYW5kLCBUeXBlTG9jYXRpb24q
CisgICAgTExJTlRfUFVUX1RPX1NDT1BFX0NPTU1PTigpOworICAgIFR5cGVMb2NhdGlvbiogbG9j
YXRpb24gPSBwY1s3XS51LmxvY2F0aW9uOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMyku
anNWYWx1ZSgpOworICAgIHZtLmhpZ2hGaWRlbGl0eUxvZygpLT5yZWNvcmRUeXBlSW5mb3JtYXRp
b25Gb3JMb2NhdGlvbih2LCBsb2NhdGlvbik7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lv
biAxNzAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw4IEBAIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfaGEKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcmVzb2x2ZV9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2dldF9mcm9tX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHV0X3RvX3Njb3BlKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0
X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsKIGV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJv
dG9DYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKIGV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5
KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNzAx
NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20JKHdvcmtpbmcgY29weSkKQEAgLTEyMzIsMyArMTIzMiwxMSBAQCBlbmQKIF9sbGludF9vcF9p
bml0X2dsb2JhbF9jb25zdF9ub3A6CiAgICAgZGlzcGF0Y2goNSkKIAorX2xsaW50X29wX3Byb2Zp
bGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KQorICAgIGRpc3BhdGNoKDQp
CisKK19sbGludF9vcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfdG9fc2NvcGVfd2l0
aF9wcm9maWxlKQorICAgIGRpc3BhdGNoKDgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxv
Zy5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJUeXBlTG9j
YXRpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgSGlnaEZpZGVsaXR5TG9nOjppbml0
aWFsaXplSGlnaEZpZGVsaXR5TG9nKCkKK3sKKyAgICBBU1NFUlQoIW1faGlnaEZpZGVsaXR5TG9n
U3RhcnRQdHIpOworICAgIG1faGlnaEZpZGVsaXR5TG9nU2l6ZSA9IDEwMDAwOworICAgIG1faGln
aEZpZGVsaXR5TG9nU3RhcnRQdHIgPSAoTG9nM1R1cGxlKiopIG1hbGxvYyhzaXplb2YoTG9nM1R1
cGxlKikgKiBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUpOworICAgIExvZzNUdXBsZSoqIHB0ciA9IG1f
aGlnaEZpZGVsaXR5TG9nU3RhcnRQdHI7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
aGlnaEZpZGVsaXR5TG9nU2l6ZTsgaSsrKSB7CisgICAgICAgICpwdHIgPSBuZXcgTG9nM1R1cGxl
OyAKKyAgICAgICAgcHRyKys7CisgICAgfQorCisgICAgbV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50
UHJvY2Vzc09mZnNldCA9IDA7Cit9CisKK0hpZ2hGaWRlbGl0eUxvZzo6fkhpZ2hGaWRlbGl0eUxv
ZygpCit7CisgICAgTG9nM1R1cGxlKiogcHRyID0gbV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0cjsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsgaSsrKSB7
CisgICAgICAgIGRlbGV0ZSAqcHRyOworICAgICAgICBwdHIrKzsKKyAgICB9CisKKyAgICBmcmVl
KG1faGlnaEZpZGVsaXR5TG9nU3RhcnRQdHIpOworfQorCit2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6
cmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2LCBUeXBlTG9jYXRpb24q
IGxvY2F0aW9uKQoreworICAgIEFTU0VSVChtX2hpZ2hGaWRlbGl0eUxvZ1N0YXJ0UHRyKTsKKyAg
ICBBU1NFUlQobV9oaWdoRmlkZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldCA8IG1faGlnaEZp
ZGVsaXR5TG9nU2l6ZSk7CisKKworICAgIExvZzNUdXBsZSogdHVwbGUgPSAqKG1faGlnaEZpZGVs
aXR5TG9nU3RhcnRQdHIgKyBtX2hpZ2hGaWRlbGl0eUxvZ0N1cnJlbnRQcm9jZXNzT2Zmc2V0KTsK
KyAgICB0dXBsZS0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICB0dXBsZS0+dmFsdWUgPSB2Owor
ICAgIHR1cGxlLT5zdHJ1Y3R1cmVJRCA9ICh2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0
dXJlSUQoKSA6IDApOyAvLzAgaXMgaW52YWxpZCBzdHJ1Y3R1cmVJRAorCisgICAgbV9oaWdoRmlk
ZWxpdHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldCArPSAxOworICAgIGlmIChtX2hpZ2hGaWRlbGl0
eUxvZ0N1cnJlbnRQcm9jZXNzT2Zmc2V0ID09IG1faGlnaEZpZGVsaXR5TG9nU2l6ZSkKKyAgICAg
ICAgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygpOworfQorCit2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6
cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZygpCit7CisgICAgLy9zdGF0aWMgaW50IGNvdW50ZXIgPSAx
OworICAgIC8vcHJpbnRmKCJQcm9jZXNzIExvZzogJWRcbiIsIGNvdW50ZXIrKyk7CisKKyAgICBM
b2czVHVwbGUqKiBwdHIgPSBtX2hpZ2hGaWRlbGl0eUxvZ1N0YXJ0UHRyOworICAgIHNpemVfdCBp
ID0gMDsKKyAgICB3aGlsZSAoaSA8IG1faGlnaEZpZGVsaXR5TG9nQ3VycmVudFByb2Nlc3NPZmZz
ZXQpIHsKKyAgICAgICAgTG9nM1R1cGxlKiB0dXBsZSA9ICpwdHI7CisgICAgICAgIFR5cGVTZXQq
IHR5cGVTZXQgPSB0dXBsZS0+bG9jYXRpb24tPnR5cGVTZXQ7CisgICAgICAgIC8vVE9ETzogTWF5
YmUgYWJzdHJhY3QgdGhpcyBhd2F5IGluIEhlYXAKKyAgICAgICAgdHlwZVNldC0+YWRkVHlwZUZv
clZhbHVlKHR1cGxlLT52YWx1ZSwgdHVwbGUtPnN0cnVjdHVyZUlEID8gSGVhcDo6aGVhcCh0dXBs
ZS0+dmFsdWUpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHR1cGxlLT5zdHJ1Y3R1cmVJRCkgOiBu
dWxscHRyKTsKKyAgICAgICAgcHRyKys7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICBtX2hp
Z2hGaWRlbGl0eUxvZ0N1cnJlbnRQcm9jZXNzT2Zmc2V0ID0gMDsKK30KKworCit9IC8vbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5
TG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZp
ZGVsaXR5TG9nLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IaWdoRmlkZWxpdHlMb2cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSGlnaEZp
ZGVsaXR5TG9nX2gKKyNkZWZpbmUgSGlnaEZpZGVsaXR5TG9nX2gKKworI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICBjbGFzcyBUeXBlTG9jYXRp
b247CisKK2NsYXNzIEhpZ2hGaWRlbGl0eUxvZyB7CisKK3B1YmxpYzoKKworICAgIHN0cnVjdCBM
b2czVHVwbGUgeworICAgICAgICBwdWJsaWM6CisKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKKyAg
ICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbjsgLy9UeXBlTG9jYXRpb24qIGFyZSBhbGxvY2F0
ZWQgZHVyaW5nIGxpbmsgdGltZSBpbiBhIENvZGVCbG9jay4gVGhpcyBjb2RlIGFzc3VtZXMgdGhh
dCBubyBjb2RlIGJsb2NrcyBkaWUgYmVmb3JlIHdlIHByb2Nlc3MgdGhlIGxvZy4KKyAgICAgICAg
U3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CisgICAgfTsKKworICAgIEhpZ2hGaWRlbGl0eUxvZygp
CisgICAgICAgIDogbV9oaWdoRmlkZWxpdHlMb2dTdGFydFB0cigwKQorICAgIHsKKyAgICAgICAg
aW5pdGlhbGl6ZUhpZ2hGaWRlbGl0eUxvZygpOworICAgIH0KKworICAgIH5IaWdoRmlkZWxpdHlM
b2coKTsKKworICAgIHZvaWQgcmVjb3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1
ZSB2LCBUeXBlTG9jYXRpb24qKTsKKyAgICB2b2lkIHByb2Nlc3NIaWdoRmlkZWxpdHlMb2coKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKKworICAg
IHVuc2lnbmVkIG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsKKyAgICBzaXplX3QgbV9oaWdoRmlkZWxp
dHlMb2dDdXJyZW50UHJvY2Vzc09mZnNldDsKKyAgICBMb2czVHVwbGUqKiBtX2hpZ2hGaWRlbGl0
eUxvZ1N0YXJ0UHRyOworCit9OworCit9IC8vbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy9IaWdo
RmlkZWxpdHlMb2dfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKKworI2luY2x1ZGUgIlR5cGVMb2NhdGlv
bi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
cjo6Z2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSAsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29u
c3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGludHB0cl90IHNvdXJjZUlEKQoreworICAgIFN0cmlu
ZyBnbG9iYWwgPSBnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUsIHN0
YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQpOwor
ICAgIGlmICghZ2xvYmFsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbDsKKyAgICAK
KyAgICByZXR1cm4gZ2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUsIHN0
YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQpOwor
fQorCitXVEY6OlN0cmluZyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldEdsb2JhbFR5cGVz
Rm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQsIHVuc2lnbmVk
LCB1bnNpZ25lZCwgY29uc3QgV1RGOjpTdHJpbmcmLCBpbnRwdHJfdCBzb3VyY2VJRCkKK3sKKyAg
ICBhdXRvIGl0ZXIgPSBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcC5maW5kKGdldExvY2F0
aW9uQmFzZWRIYXNoKHNvdXJjZUlELCBzdGFydExpbmUpKTsKKyAgICBhdXRvIGVuZCA9IG1fZ2xv
YmFsTG9jYXRpb25Ub0dsb2JhbElETWFwLmVuZCgpOworICAgIGlmIChpdGVyID09IGVuZCkKKyAg
ICAgICAgcmV0dXJuICIiOworCisgICAgYXV0byBpdGVyMiA9IG1fZ2xvYmFsSURNYXAuZmluZChp
dGVyLT52YWx1ZSk7CisgICAgYXV0byBlbmQyID0gbV9nbG9iYWxJRE1hcC5lbmQoKTsKKyAgICBp
ZiAoaXRlcjIgPT0gZW5kMikKKyAgICAgICAgcmV0dXJuICIiOworCisgICAgcmV0dXJuIGl0ZXIy
LT52YWx1ZS5zZWVuVHlwZXMoKTsKK30KKworV1RGOjpTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyOjpnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGlu
ZSwgdW5zaWduZWQgLCB1bnNpZ25lZCAsIHVuc2lnbmVkICwgY29uc3QgV1RGOjpTdHJpbmcmICwg
aW50cHRyX3Qgc291cmNlSUQpCit7CisgICAgYXV0byBpdGVyID0gbV9nbG9iYWxMb2NhdGlvbk1h
cC5maW5kKGdldExvY2F0aW9uQmFzZWRIYXNoKHNvdXJjZUlELCBzdGFydExpbmUpKTsKKyAgICBh
dXRvIGVuZCA9IG1fZ2xvYmFsTG9jYXRpb25NYXAuZW5kKCk7CisgICAgLy9UT0RPOiB0aGlzIGFz
c3NlcnRpb24gc2hvdWxkIGFsd2F5cyBob2xkLCBidXQgZG9lc24ndAorICAgIC8vQVNTRVJUKGl0
ZXIgIT0gZW5kKTsKKyAgICBpZiAoaXRlciA9PSBlbmQpCisgICAgICAgIHJldHVybiAgIiI7CisK
KyAgICByZXR1cm4gaXRlci0+dmFsdWUuc2VlblR5cGVzKCk7Cit9CisKK3ZvaWQgSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyOjptZXJnZUluVHlwZXNGb3JMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxv
Y2F0aW9uKQoreworICAgIGlmIChsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCAhPSBIaWdoRmlk
ZWxpdHlOb0dsb2JhbElERXhpc3RzKSB7CisgICAgICAgIEFTU0VSVChtX2dsb2JhbElETWFwLmlz
VmFsaWRLZXkobG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQpKTsKKyAgICAgICAgYXV0byBpdGVy
ID0gbV9nbG9iYWxJRE1hcC5maW5kKGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlEKTsKKyAgICAg
ICAgYXV0byBlbmQgPSBtX2dsb2JhbElETWFwLmVuZCgpOworICAgICAgICBUeXBlU2V0IHR5cGVT
ZXQgPSAqKGxvY2F0aW9uLT50eXBlU2V0KTsKKyAgICAgICAgaWYgKGl0ZXIgIT0gZW5kKSAKKyAg
ICAgICAgICAgIHR5cGVTZXQubWVyZ2VXaXRoVHlwZVNldChpdGVyLT52YWx1ZSk7CisKKyAgICAg
ICAgbV9nbG9iYWxJRE1hcC5zZXQobG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQsIHR5cGVTZXQp
OworICAgIH0KKworICAgIFN0cmluZyBoYXNoU3RyaW5nKGdldExvY2F0aW9uQmFzZWRIYXNoKGxv
Y2F0aW9uLT5zb3VyY2VJRCwgbG9jYXRpb24tPmxpbmUpKTsKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX2dsb2JhbExvY2F0aW9uTWFwLmlzVmFsaWRLZXkoaGFzaFN0cmluZykpOworICAgICAgICBh
dXRvIGl0ZXIgPSBtX2dsb2JhbExvY2F0aW9uTWFwLmZpbmQoaGFzaFN0cmluZyk7CisgICAgICAg
IGF1dG8gZW5kID0gbV9nbG9iYWxMb2NhdGlvbk1hcC5lbmQoKTsKKyAgICAgICAgVHlwZVNldCB0
eXBlU2V0ID0gKihsb2NhdGlvbi0+dHlwZVNldCk7CisgICAgICAgIGlmIChpdGVyICE9IGVuZCkg
CisgICAgICAgICAgICB0eXBlU2V0Lm1lcmdlV2l0aFR5cGVTZXQoaXRlci0+dmFsdWUpOworCisg
ICAgICAgIG1fZ2xvYmFsTG9jYXRpb25NYXAuc2V0KGhhc2hTdHJpbmcsIHR5cGVTZXQpOworICAg
IH0gCisKKyAgICBpZiAobG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQgIT0gSGlnaEZpZGVsaXR5
Tm9HbG9iYWxJREV4aXN0cykgLy9idWlsZCB0aGUgcmVsYXRpb25zaGlwIE1hcDpoYXNoU3RyaW5n
PT5nbG9iYWxJZCwgTWFwMjpnbG9iYWxJRD0+VHlwZVNldAorICAgICAgICBtX2dsb2JhbExvY2F0
aW9uVG9HbG9iYWxJRE1hcC5zZXQoaGFzaFN0cmluZywgbG9jYXRpb24tPmdsb2JhbFZhcmlhYmxl
SUQpOworCisKK30KKworV1RGOjpTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRM
b2NhdGlvbkJhc2VkSGFzaChpbnRwdHJfdCBpZCwgdW5zaWduZWQgbGluZSkKK3sKKyAgICByZXR1
cm4gU3RyaW5nOjpudW1iZXIoaWQpICsgU3RyaW5nKCI6IikgKyBTdHJpbmc6Om51bWJlcihsaW5l
KTsKK30KKworCit9IC8vbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlcl9oCisjZGVmaW5lIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCisK
KyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIGNsYXNz
IFR5cGVMb2NhdGlvbjsKKworCitjbGFzcyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIgeworCitw
dWJsaWM6CisKKyAgICBXVEY6OlN0cmluZyBnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNp
Z25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1
bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFdURjo6U3RyaW5nJiB2YXJpYWJsZU5hbWUsIGludHB0
cl90IHNvdXJjZUlEKTsKKyAgICBXVEY6OlN0cmluZyBnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxl
SW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFdURjo6U3RyaW5nJiB2YXJpYWJs
ZU5hbWUsIGludHB0cl90IHNvdXJjZUlEKTsKKyAgICBXVEY6OlN0cmluZyBnZXRMb2NhbFR5cGVz
Rm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgV1RGOjpTdHJp
bmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpOworICAgIHZvaWQgbWVyZ2VJblR5
cGVzRm9yTG9jYXRpb24oVHlwZUxvY2F0aW9uKik7CisgICAgCitwcml2YXRlOgorICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBnZXRMb2NhdGlvbkJhc2VkSGFzaChpbnRwdHJfdCwgdW5zaWduZWQpOwor
CisgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6U3RyaW5nLCBUeXBlU2V0PiBHbG9iYWxMb2NhdGlv
bk1hcDsgLy8oZm9yIG5vdywgaGFjayBpdCBhbmQgc2F5IE1hcDogIklEOkxpbmUiID0+IFR5cGVT
ZXQuIE9idmlvdXNseSwgdGhpcyBhc3N1bWVzIGFsbCBhc3NpZ25tZW50cyBhcmUgb24gZGlzY3Jl
dGUgbGluZXMpLgorICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQ2NF90LCBUeXBlU2V0PiBHbG9iYWxJ
RE1hcDsgCisgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6U3RyaW5nLCBpbnQ2NF90PiBHbG9iYWxM
b2NhdGlvblRvR2xvYmFsSURNYXA7CisKKyAgICBHbG9iYWxJRE1hcCBtX2dsb2JhbElETWFwOwor
ICAgIEdsb2JhbExvY2F0aW9uTWFwIG1fZ2xvYmFsTG9jYXRpb25NYXA7CisgICAgR2xvYmFsTG9j
YXRpb25Ub0dsb2JhbElETWFwIG1fZ2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwOworfTsKKwor
Cit9IC8vbmFtZXNwYWNlIEpTQworCisKKyNlbmRpZiAvL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
cl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlz
aW9uIDE3MDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSw5IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0
aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgZGlzYWJsZUdDLCBmYWxzZSkgXAogICAgIHYodW5zaWdu
ZWQsIGdjTWF4SGVhcFNpemUsIDApIFwKICAgICB2KGJvb2wsIHJlY29yZEdDUGF1c2VUaW1lcywg
ZmFsc2UpIFwKLSAgICB2KGJvb2wsIGxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0LCBmYWxzZSkKKyAg
ICB2KGJvb2wsIGxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0LCBmYWxzZSkgXAorICAgIHYoYm9vbCwg
cHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSwgZmFsc2UpCisgICAgCiAKIGNsYXNzIE9wdGlv
bnMgewogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCShyZXZpc2lvbiAxNzAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUyLDYgKzEwNTIsMzggQEAg
Ym9vbCBTdHJ1Y3R1cmU6OnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZQogICAgIH0KIH0KIAorCitT
dHJ1Y3R1cmVTaGFwZSBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoKQoreworICAgIFZlY3Rv
cjxTdHJ1Y3R1cmUqLCA4PiBzdHJ1Y3R1cmVzOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwor
ICAgIFByb3BlcnR5VGFibGUqIHRhYmxlOworICAgIFN0cnVjdHVyZVNoYXBlIHJlcHJlc2VudGF0
aW9uOworCisgICAgZmluZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oc3RydWN0
dXJlcywgc3RydWN0dXJlLCB0YWJsZSk7CisgICAgCisgICAgaWYgKHRhYmxlKSB7CisgICAgICAg
IFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS0+YmVnaW4oKTsKKyAgICAgICAg
UHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGFibGUtPmVuZCgpOworCisgICAgICAgIGZv
ciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgICAgICByZXByZXNlbnRhdGlvbi5t
X3Byb3BlcnRpZXMuYXBwZW5kKGl0ZXItPmtleSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHN0cnVjdHVyZS0+bV9sb2NrLnVubG9jaygpOworICAgIH0KKyAgICAKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSBzdHJ1Y3R1cmVzLnNpemUoKTsgaS0tOykgeworICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CisgICAgICAgIGlmICghc3RydWN0dXJlLT5tX25h
bWVJblByZXZpb3VzKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmVwcmVzZW50
YXRpb24ubV9wcm9wZXJ0aWVzLmFwcGVuZChzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0
KCkpOworICAgIH0KKworICAgIHJldHVybiByZXByZXNlbnRhdGlvbjsKK30KKwogdm9pZCBTdHJ1
Y3R1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoUmF3
UG9pbnRlcih0aGlzKSwgIjpbIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDE3
MDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTAsNiArMzkwLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQ7CiAgICAgfQorCisgICAgU3RydWN0dXJlU2hh
cGUgdG9TdHJ1Y3R1cmVTaGFwZSgpOwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0
KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuY3BwCShyZXZpc2lvbiAxNzAxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsMTAgQEAg
U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlKFZNJiB2bSkKICAgICAsIG1fY2FwdHVyZUVuZCgwKQog
ICAgICwgbV9mdW5jdGlvbkVudGVyZWRPbmNlKENsZWFyV2F0Y2hwb2ludCkKIHsKKyAgICBpZiAo
dm0uaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBtX3VuaXF1
ZUlETWFwID0gc3RkOjptYWtlX3VuaXF1ZTxVbmlxdWVJRE1hcD4oKTsKKyAgICAgICAgbV9yZWdp
c3RlclRvVmFyaWFibGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyVG9WYXJpYWJsZU1h
cD4oKTsKKyAgICB9CiB9CiAKIFN5bWJvbFRhYmxlOjp+U3ltYm9sVGFibGUoKSB7IH0KQEAgLTE1
Nyw5ICsxNjEsNDkgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZUNhcHR1cmVkTgog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBwYXJhbWV0ZXJDb3VudCgpOyBpLS07KQogICAgICAg
ICAgICAgcmVzdWx0LT5tX3Nsb3dBcmd1bWVudHNbaV0gPSBtX3Nsb3dBcmd1bWVudHNbaV07CiAg
ICAgfQorCisKKyAgICBpZiAobV91bmlxdWVJRE1hcCAmJiByZXN1bHQtPm1fdW5pcXVlSURNYXAp
IHsKKworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX3VuaXF1ZUlETWFwLT5i
ZWdpbigpOworICAgICAgICAgICAgYXV0byBlbmQgPSBtX3VuaXF1ZUlETWFwLT5lbmQoKTsKKyAg
ICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIHJl
c3VsdC0+bV91bmlxdWVJRE1hcC0+c2V0KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOworICAgICAg
ICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBpdGVyID0gbV9yZWdpc3RlclRvVmFy
aWFibGVNYXAtPmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9IG1fcmVnaXN0ZXJUb1Zh
cmlhYmxlTWFwLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVy
KQorICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yZWdpc3RlclRvVmFyaWFibGVNYXAtPnNldChp
dGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKK2ludDY0X3QgU3ltYm9sVGFibGU6OnVuaXF1ZUlERm9yVmFyaWFi
bGUoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIFN0cmluZ0ltcGwqIGtleSwgVk0mIHZtKQor
eworICAgIGF1dG8gaXRlciA9IG1fdW5pcXVlSURNYXAtPmZpbmQoa2V5KTsKKyAgICBhdXRvIGVu
ZCA9IG1fdW5pcXVlSURNYXAtPmVuZCgpOworICAgIEFTU0VSVF9VTlVTRUQoZW5kLCBpdGVyICE9
IGVuZCk7CisKKyAgICBpbnQ2NF90JiBpZCA9IGl0ZXItPnZhbHVlOworICAgIGlmIChpZCA9PSBI
aWdoRmlkZWxpdHlOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbikgCisgICAgICAgIGlkID0gdm0uZ2V0
TmV4dFVuaXF1ZVZhcmlhYmxlSUQoKTsKKworICAgIHJldHVybiBpZDsKK30KKworaW50NjRfdCBT
eW1ib2xUYWJsZTo6dW5pcXVlSURGb3JSZWdpc3Rlcihjb25zdCBDb25jdXJyZW50SklUTG9ja2Vy
JiBsb2NrZXIsIGludCByZWdpc3RlckluZGV4LCBWTSYgdm0pCit7CisgICAgYXV0byBpdGVyID0g
bV9yZWdpc3RlclRvVmFyaWFibGVNYXAtPmZpbmQocmVnaXN0ZXJJbmRleCk7CisgICAgYXV0byBl
bmQgPSBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcC0+ZW5kKCk7CisgICAgQVNTRVJUX1VOVVNFRChl
bmQsIGl0ZXIgIT0gZW5kKTsKKyAgICByZXR1cm4gdW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIs
IGl0ZXItPnZhbHVlLmdldCgpLCB2bSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9u
IDE3MDE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNiw2ICszMzYsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBK
U0NlbGwgQmFzZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIFN5
bWJvbFRhYmxlRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxTdHJp
bmdJbXBsPj4sIFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzPiBNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50NjRfdD4gVW5pcXVlSURNYXA7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPFN0cmluZ0ltcGw+LCBXVEY6OkludEhhc2g8aW50Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+PiBSZWdpc3RlclRvVmFyaWFi
bGVNYXA7CiAKICAgICBzdGF0aWMgU3ltYm9sVGFibGUqIGNyZWF0ZShWTSYgdm0pCiAgICAgewpA
QCAtNDEzLDYgKzQxNSwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFwOjpBZGRSZXN1bHQgYWRk
KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXksIGNvbnN0IFN5bWJv
bFRhYmxlRW50cnkmIGVudHJ5KQogICAgIHsKKyAgICAgICAgLy91c2UgLTEgYXMgYSBmbGFnIHRv
IGluZGljYXRlIHdlIG5lZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBJRCBiZWNhdXNlIHdlIG5lZWQg
dGhlIFZNIHRvIGRvIHRoaXMuIAorICAgICAgICAvL1doZW4gbGlua2luZywgd2UgY2FuIHByb2R1
Y2UgdGhpcyB1bmlxdWUgSUQgYXMgd2UgaGF2ZSBhY2Nlc3MgdG8gVk0KKyAgICAgICAgaWYgKG1f
dW5pcXVlSURNYXApIHsKKyAgICAgICAgICAgIG1fdW5pcXVlSURNYXAtPnNldChrZXksIEhpZ2hG
aWRlbGl0eU5lZWRzVW5pcXVlSURHZW5lcmF0aW9uKTsgCisgICAgICAgICAgICBtX3JlZ2lzdGVy
VG9WYXJpYWJsZU1hcC0+c2V0KGVudHJ5LmdldEluZGV4KCksIGtleSk7CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIG1fbWFwLmFkZChrZXksIGVudHJ5KTsKICAgICB9CiAgICAgCkBAIC00MjQs
NiArNDMyLDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBNYXA6OkFkZFJlc3VsdCBzZXQoY29uc3Qg
Q29uY3VycmVudEpJVExvY2tlciYsIFN0cmluZ0ltcGwqIGtleSwgY29uc3QgU3ltYm9sVGFibGVF
bnRyeSYgZW50cnkpCiAgICAgeworICAgICAgICBpZiAobV91bmlxdWVJRE1hcCkgeworICAgICAg
ICAgICAgbV91bmlxdWVJRE1hcC0+c2V0KGtleSwgSGlnaEZpZGVsaXR5TmVlZHNVbmlxdWVJREdl
bmVyYXRpb24pOyAKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5zZXQoZW50
cnkuZ2V0SW5kZXgoKSwga2V5KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9tYXAuc2V0
KGtleSwgZW50cnkpOwogICAgIH0KICAgICAKQEAgLTQ0Myw3ICs0NTUsMTAgQEAgcHVibGljOgog
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICByZXR1
cm4gY29udGFpbnMobG9ja2VyLCBrZXkpOwogICAgIH0KLSAgICAKKworICAgIGludDY0X3QgdW5p
cXVlSURGb3JWYXJpYWJsZShjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCog
a2V5LCBWTSYgdm0pOworICAgIGludDY0X3QgdW5pcXVlSURGb3JSZWdpc3Rlcihjb25zdCBDb25j
dXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIGludCByZWdpc3RlckluZGV4LCBWTSYgdm0pOworCiAg
ICAgYm9vbCB1c2VzTm9uU3RyaWN0RXZhbCgpIHsgcmV0dXJuIG1fdXNlc05vblN0cmljdEV2YWw7
IH0KICAgICB2b2lkIHNldFVzZXNOb25TdHJpY3RFdmFsKGJvb2wgdXNlc05vblN0cmljdEV2YWwp
IHsgbV91c2VzTm9uU3RyaWN0RXZhbCA9IHVzZXNOb25TdHJpY3RFdmFsOyB9CiAKQEAgLTQ1NCw3
ICs0NjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYXB0dXJlRW5kKGludCBjYXB0dXJlRW5k
KSB7IG1fY2FwdHVyZUVuZCA9IGNhcHR1cmVFbmQ7IH0KIAogICAgIGludCBjYXB0dXJlQ291bnQo
KSBjb25zdCB7IHJldHVybiAtKG1fY2FwdHVyZUVuZCAtIG1fY2FwdHVyZVN0YXJ0KTsgfQotICAg
IAorCiAgICAgYm9vbCBpc0NhcHR1cmVkKGludCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG9wZXJhbmQgPD0gY2FwdHVyZVN0YXJ0KCkgJiYgb3BlcmFuZCA+IGNhcHR1cmVFbmQoKTsK
QEAgLTQ2Nyw3ICs0ODIsNyBAQCBwdWJsaWM6CiAgICAgLy8gMCBpZiB3ZSBkb24ndCBjYXB0dXJl
IGFueSBhcmd1bWVudHM7IHBhcmFtZXRlckNvdW50KCkgaW4gbGVuZ3RoIGlmIHdlIGRvLgogICAg
IGNvbnN0IFNsb3dBcmd1bWVudCogc2xvd0FyZ3VtZW50cygpIHsgcmV0dXJuIG1fc2xvd0FyZ3Vt
ZW50cy5nZXQoKTsgfQogICAgIHZvaWQgc2V0U2xvd0FyZ3VtZW50cyhzdGQ6OnVuaXF1ZV9wdHI8
U2xvd0FyZ3VtZW50W10+IHNsb3dBcmd1bWVudHMpIHsgbV9zbG93QXJndW1lbnRzID0gc3RkOjpt
b3ZlKHNsb3dBcmd1bWVudHMpOyB9Ci0gICAgCisKICAgICBTeW1ib2xUYWJsZSogY2xvbmVDYXB0
dXJlZE5hbWVzKFZNJik7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CkBAIC00ODIsMTkgKzQ5NywyMSBAQCBwcml2YXRlOgogICAgIHB1Ymxp
YzoKICAgICAgICAgV2F0Y2hwb2ludENsZWFudXAoU3ltYm9sVGFibGUqKTsKICAgICAgICAgdmly
dHVhbCB+V2F0Y2hwb2ludENsZWFudXAoKTsKLSAgICAgICAgCisKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIG92ZXJyaWRlOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgU3ltYm9sVGFibGUqIG1fc3ltYm9sVGFibGU7CiAgICAg
fTsKLSAgICAKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbFRhYmxlKFZNJik7CiAgICAg
flN5bWJvbFRhYmxlKCk7CiAKICAgICBNYXAgbV9tYXA7Ci0gICAgCisgICAgc3RkOjp1bmlxdWVf
cHRyPFVuaXF1ZUlETWFwPiBtX3VuaXF1ZUlETWFwOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdp
c3RlclRvVmFyaWFibGVNYXA+IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwOworCiAgICAgaW50IG1f
cGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzOwogICAgIGJvb2wgbV91c2VzTm9uU3RyaWN0RXZh
bDsKIApAQCAtNTAyLDEyICs1MTksMTIgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9jYXB0dXJlRW5k
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dBcmd1bWVudFtdPiBtX3Nsb3dBcmd1bWVudHM7
Ci0gICAgCisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludENsZWFudXA+IG1fd2F0Y2hw
b2ludENsZWFudXA7CiAKIHB1YmxpYzoKICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fZnVuY3Rp
b25FbnRlcmVkT25jZTsKLSAgICAKKwogICAgIG11dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9s
b2NrOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUeXBlU2V0LmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworVHlwZVNldDo6VHlwZVNldCgpCisgICAgOiBtX3NlZW5UeXBlcyhU
eXBlTm90aGluZykKKyAgICAsIG1fbWlnaHRIYXZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9y
eShmYWxzZSkKK3sKK30KKworUnVudGltZVR5cGUgVHlwZVNldDo6Z2V0UnVudGltZVR5cGVGb3JW
YWx1ZShKU1ZhbHVlIHYsIFN0cnVjdHVyZSopCit7CisgICAgUnVudGltZVR5cGUgcmV0OworICAg
IGlmICh2LmlzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0ID0gVHlwZUZ1bmN0aW9uOworICAgIGVs
c2UgaWYgKHYuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0ID0gVHlwZVVuZGVmaW5lZDsKKyAg
ICBlbHNlIGlmICh2LmlzTnVsbCgpKQorICAgICAgICByZXQgPSBUeXBlTnVsbDsKKyAgICBlbHNl
IGlmICh2LmlzQm9vbGVhbigpKQorICAgICAgICByZXQgPSBUeXBlQm9vbGVhbjsKKyAgICBlbHNl
IGlmICh2LmlzTWFjaGluZUludCgpKQorICAgICAgICByZXQgPSBUeXBlTWFjaGluZUludDsKKyAg
ICBlbHNlIGlmICh2LmlzTnVtYmVyKCkpCisgICAgICAgIHJldCA9IFR5cGVOdW1iZXI7CisgICAg
ZWxzZSBpZiAodi5pc1N0cmluZygpKQorICAgICAgICByZXQgPSBUeXBlU3RyaW5nOworICAgIGVs
c2UgaWYgKHYuaXNQcmltaXRpdmUoKSkKKyAgICAgICAgcmV0ID0gVHlwZVByaW1pdGl2ZTsKKyAg
ICBlbHNlIGlmICh2LmlzR2V0dGVyU2V0dGVyKCkpCisgICAgICAgIHJldCA9IFR5cGVHZXR0ZXJT
ZXR0ZXI7CisgICAgLy9lbHNlIGlmICh2LmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpCisgICAgLy8g
ICAgcmV0ID0gVHlwZUN1c3RvbUdldHRlclNldHRlcjsKKyAgICBlbHNlIGlmICh2LmlzT2JqZWN0
KCkpCisgICAgICAgIHJldCA9IFR5cGVPYmplY3Q7CisgICAgZWxzZQorICAgICAgICBDUkFTSCgp
OworCisgICAgcmV0dXJuIHJldDsKK30KKworLy9zdHJ1Y3R1cmUgbWF5IGJlIG51bGwKK3ZvaWQg
VHlwZVNldDo6YWRkVHlwZUZvclZhbHVlKEpTVmFsdWUgdiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
IAoreworICAgIFJ1bnRpbWVUeXBlIHQgPSBnZXRSdW50aW1lVHlwZUZvclZhbHVlKHYsIHN0cnVj
dHVyZSk7CisgICAgbV9zZWVuVHlwZXMgPSBtX3NlZW5UeXBlcyB8IHQ7CisgICAgaWYgKHN0cnVj
dHVyZSkgeworICAgICAgICAvL3ByaW50ZigiZ2V0dGluZyBzdHJ1Y3R1cmUgcmVwcmVzZW50YXRp
b25cbiIpOworICAgICAgICBTdHJ1Y3R1cmVTaGFwZSBzaGFwZSA9IHN0cnVjdHVyZS0+dG9TdHJ1
Y3R1cmVTaGFwZSgpOworICAgICAgICBtX3N0cnVjdHVyZUhpc3RvcnkuYXBwZW5kKHNoYXBlKTsK
KyAgICB9Cit9CisKK3ZvaWQgVHlwZVNldDo6bWVyZ2VXaXRoVHlwZVNldChjb25zdCBUeXBlU2V0
JiBvdGhlcikKK3sKKyAgICBtX3NlZW5UeXBlcyB8PSBvdGhlci5tX3NlZW5UeXBlczsKKworICAg
IGlmIChvdGhlci5tX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpID4gMCkKKyAgICAgICAgbV9taWdo
dEhhdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5ID0gdHJ1ZTsKKworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb3RoZXIubV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKTsgaSsrKQorICAg
ICAgICBtX3N0cnVjdHVyZUhpc3RvcnkuYXBwZW5kKG90aGVyLm1fc3RydWN0dXJlSGlzdG9yeS5h
dChpKSk7Cit9CisKK3ZvaWQgVHlwZVNldDo6cmVtb3ZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlz
dG9yeSgpIAoreworICAgIFZlY3RvcjxTdHJ1Y3R1cmVTaGFwZT4gbmV3SGlzdG9yeTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCk7IGkrKykKKyAg
ICAgICAgaWYgKCFuZXdIaXN0b3J5LmNvbnRhaW5zKG1fc3RydWN0dXJlSGlzdG9yeS5hdChpKSkp
CisgICAgICAgICAgICBuZXdIaXN0b3J5LmFwcGVuZChtX3N0cnVjdHVyZUhpc3RvcnkuYXQoaSkp
OworCisgICAgbV9zdHJ1Y3R1cmVIaXN0b3J5ID0gbmV3SGlzdG9yeTsKKyAgICBtX21pZ2h0SGF2
ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkgPSBmYWxzZTsKK30KKworV1RGOjpTdHJpbmcg
VHlwZVNldDo6c2VlblR5cGVzKCkgCit7CisgICAgaWYgKG1fc2VlblR5cGVzID09IFR5cGVOb3Ro
aW5nKQorICAgICAgICByZXR1cm4gIihVbnJlYWNoZWQgU3RhdGVtZW50KSI7CisKKyAgICBpZiAo
bV9taWdodEhhdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KQorICAgICAgICByZW1vdmVE
dXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KCk7CisKKyAgICBXVEY6OlN0cmluZyBzZWVuKCIi
KTsKKworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVGdW5jdGlvbikKKyAgICAgICAgIHNlZW4u
YXBwZW5kKCJGdW5jdGlvbiAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlVW5kZWZpbmVk
KQorICAgICAgICAgc2Vlbi5hcHBlbmQoIlVuZGVmaW5lZCAiKTsKKyAgICBpZiAobV9zZWVuVHlw
ZXMgJiBUeXBlTnVsbCkKKyAgICAgICAgIHNlZW4uYXBwZW5kKCJOdWxsICIpOworICAgIGlmICht
X3NlZW5UeXBlcyAmIFR5cGVCb29sZWFuKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIkJvb2xlYW4g
Iik7CisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU1hY2hpbmVJbnQpCisgICAgICAgICBzZWVu
LmFwcGVuZCgiTWFjaGluZUludCAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTnVtYmVy
KQorICAgICAgICAgc2Vlbi5hcHBlbmQoIk51bWJlciAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMg
JiBUeXBlU3RyaW5nKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIlN0cmluZyAiKTsKKyAgICBpZiAo
bV9zZWVuVHlwZXMgJiBUeXBlUHJpbWl0aXZlKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIlByaW1p
dGl2ZSAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlR2V0dGVyU2V0dGVyKQorICAgICAg
ICAgc2Vlbi5hcHBlbmQoIkdldHRlclNldHRlciAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBU
eXBlQ3VzdG9tR2V0dGVyU2V0dGVyKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIkN1c3RvbUdldHRl
clNldHRlciAiKTsKKyAgICAvL2lmIChtX3NlZW5UeXBlcyAmIFR5cGVPYmplY3QpCisgICAgLy8g
ICAgIHNlZW4uYXBwZW5kKCJPYmplY3QgIik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCk7IGkrKykgeworICAgICAgICBTdHJ1Y3R1cmVTaGFw
ZSByZXByZXNlbnRhdGlvbiA9IG1fc3RydWN0dXJlSGlzdG9yeS5hdChpKTsKKyAgICAgICAgc2Vl
bi5hcHBlbmQoInsiKTsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCByZXByZXNlbnRh
dGlvbi5tX3Byb3BlcnRpZXMuc2l6ZSgpOyBqKyspIHsKKyAgICAgICAgICAgIFN0cmluZyBwcm9w
KHJlcHJlc2VudGF0aW9uLm1fcHJvcGVydGllcy5hdChqKS5nZXQoKSk7CisgICAgICAgICAgICBz
ZWVuLmFwcGVuZChwcm9wKTsKKyAgICAgICAgICAgIGlmIChqICsgMSA8IHJlcHJlc2VudGF0aW9u
Lm1fcHJvcGVydGllcy5zaXplKCkpCisgICAgICAgICAgICAgICAgc2Vlbi5hcHBlbmQoIiwgIik7
CisgICAgICAgIH0KKyAgICAgICAgc2Vlbi5hcHBlbmQoIn0gIik7CisgICAgfQorCisgICAgcmV0
dXJuIHNlZW47Cit9CisKK3ZvaWQgVHlwZVNldDo6ZHVtcFNlZW5UeXBlcygpCit7CisgICAgcHJp
bnRmKCIlcyIsIHNlZW5UeXBlcygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBwcmludGYoIlxuIik7
Cit9CisKK2Jvb2wgU3RydWN0dXJlU2hhcGU6Om9wZXJhdG9yPT0oY29uc3QgU3RydWN0dXJlU2hh
cGUmIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3Byb3BlcnRpZXMuc2l6ZSgpICE9IG90aGVy
Lm1fcHJvcGVydGllcy5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBzaXplID0gbV9wcm9wZXJ0aWVzLnNpemUoKTsgaSA8IHNpemU7IGkrKykg
eworICAgICAgICBpZiAoU3RyaW5nKG1fcHJvcGVydGllcy5hdChpKSkgIT0gU3RyaW5nKG90aGVy
Lm1fcHJvcGVydGllcy5hdChpKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy9uYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgVHlwZVNldF9oCisjZGVmaW5lIFR5cGVTZXRfaAorCisKKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIGNsYXNzIEpTVmFsdWU7Cisg
ICAgY2xhc3MgU3RydWN0dXJlOworCisgICAgZW51bSBSdW50aW1lVHlwZSB7CisgICAgICAgIFR5
cGVOb3RoaW5nICAgICAgICAgICAgPSAweDAsCisgICAgICAgIFR5cGVGdW5jdGlvbiAgICAgICAg
ICAgPSAweDEsCisgICAgICAgIFR5cGVVbmRlZmluZWQgICAgICAgICAgPSAweDIsCisgICAgICAg
IFR5cGVOdWxsICAgICAgICAgICAgICAgPSAweDQsCisgICAgICAgIFR5cGVCb29sZWFuICAgICAg
ICAgICAgPSAweDgsCisgICAgICAgIFR5cGVNYWNoaW5lSW50ICAgICAgICAgPSAweDEwLAorICAg
ICAgICBUeXBlTnVtYmVyICAgICAgICAgICAgID0gMHgyMCwKKyAgICAgICAgVHlwZVN0cmluZyAg
ICAgICAgICAgICA9IDB4NDAsCisgICAgICAgIFR5cGVQcmltaXRpdmUgICAgICAgICAgPSAweDgw
LAorICAgICAgICBUeXBlR2V0dGVyU2V0dGVyICAgICAgID0gMHgxMDAsCisgICAgICAgIFR5cGVD
dXN0b21HZXR0ZXJTZXR0ZXIgPSAweDIwMCwKKyAgICAgICAgVHlwZU9iamVjdCAgICAgICAgICAg
ICA9IDB4NDAwLAorICAgIH07CisKKworY2xhc3MgU3RydWN0dXJlU2hhcGUgeworCitwdWJsaWM6
CisgICAgVmVjdG9yPFJlZlB0cjxXVEY6OlN0cmluZ0ltcGw+PiBtX3Byb3BlcnRpZXM7ICAgICAg
ICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cnVjdHVyZVNoYXBlJiBvdGhlcikgY29u
c3Q7CisKK307CisKKworY2xhc3MgVHlwZVNldCB7CisKK3B1YmxpYzoKKyAgICBUeXBlU2V0KCk7
CisgICAgdm9pZCBhZGRUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2LCBTdHJ1Y3R1cmUqKTsKKyAgICB2
b2lkIG1lcmdlV2l0aFR5cGVTZXQoY29uc3QgVHlwZVNldCYpOworICAgIHN0YXRpYyBSdW50aW1l
VHlwZSBnZXRSdW50aW1lVHlwZUZvclZhbHVlKEpTVmFsdWUsIFN0cnVjdHVyZSopOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5nIHNlZW5UeXBlcygpOworCitwcml2YXRlOgorICAg
IHVpbnQzMl90IG1fc2VlblR5cGVzOworICAgIHZvaWQgZHVtcFNlZW5UeXBlcygpOworICAgIFZl
Y3RvcjxTdHJ1Y3R1cmVTaGFwZT4gbV9zdHJ1Y3R1cmVIaXN0b3J5OworICAgIGJvb2wgbV9taWdo
dEhhdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5OworICAgIHZvaWQgcmVtb3ZlRHVwbGlj
YXRlc0luU3RydWN0dXJlSGlzdG9yeSgpOworCit9OworCisKK30gLy9uYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvL1R5cGVTZXRfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkocmV2aXNpb24gMTcwMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw4IEBACiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5o
IgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIgorI2luY2x1ZGUgIkhpZ2hG
aWRlbGl0eUxvZy5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCkBAIC0yMzYs
NiArMjM4LDggQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2Zp
bGVyKG51bGxwdHIpCiAgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJs
ZXM6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX25leHRVbmlxdWVWYXJpYWJsZUlEKDEpCisgICAg
LCBtX25leHRVbmlxdWVJbnN0cnVjdGlvbklEKDEpCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcg
SW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCk7CkBAIC0zMjMsMTAgKzMyNywxNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaWYgKGNhblVzZUpJVCgpKQogICAgICAgICBkZmdTdGF0
ZSA9IGFkb3B0UHRyKG5ldyBERkc6OkxvbmdMaXZlZFN0YXRlKCkpOwogI2VuZGlmCi0gICAgCisK
ICAgICAvLyBJbml0aWFsaXplIHRoaXMgbGFzdCwgYXMgYSBmcmVlIHdheSBvZiBhc3NlcnRpbmcg
dGhhdCBWTSBpbml0aWFsaXphdGlvbiBpdHNlbGYKICAgICAvLyB3b24ndCB1c2UgdGhpcy4KICAg
ICBtX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFNpbXBsZVR5cGVkQXJyYXlD
b250cm9sbGVyKCkpOworCisgICAgLy9UT0RPOiBjb25kaXRpb25hbGx5IGFsbG9jYXRlIGFsbCB0
aGlzIHN0dWZmIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGluc3BlY3RvciBpcyBydW5uaW5nCisgICAg
aWYgKE9wdGlvbnM6OnByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBt
X2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyPigpOworICAgICAgICBtX2hpZ2hGaWRlbGl0eUxvZyA9IHN0ZDo6bWFrZV91
bmlxdWU8SGlnaEZpZGVsaXR5TG9nPigpOworICAgIH0KIH0KIAogVk06On5WTSgpCkBAIC05MTks
NiArOTI5LDQ5IEBAIHZvaWQgVk06OnNldEVuYWJsZWRQcm9maWxlcihMZWdhY3lQcm9maWwKICAg
ICB9CiB9CiAKK1N0cmluZyBWTTo6Z2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQg
c3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VJREFzU3RyaW5nKQoreworICAgIGlmICghaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoKSkKKyAgICAgICAgcmV0dXJuICIoTm90IFByb2ZpbGluZykiOworCisgICAgYm9vbCBv
a2F5OworICAgIGludHB0cl90IHNvdXJjZUlEID0gc291cmNlSURBc1N0cmluZy50b0ludFB0clN0
cmljdCgmb2theSk7CisgICAgaWYgKCFva2F5KQorICAgICAgICBDUkFTSCgpOworCisgICAgdXBk
YXRlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVTdGF0ZSgpOworICAgIC8vcHJpbnRmKCJHZXR0aW5n
IHR5cGUgZm9yIHZhcmlhYmxlIGdpdmVuIHNvdXJjZUlEOiclbGQnIGxpbmU6JyV1J1xuIiwgc291
cmNlSUQsIHN0YXJ0TGluZSk7CisgICAgcmV0dXJuIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LT5nZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRM
aW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQpOworfQorCit2b2lkIFZNOjp1
cGRhdGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZVN0YXRlKCkKK3sKKyAgICBpZiAoIWlzUHJvZmls
aW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGhpZ2hG
aWRlbGl0eUxvZygpLT5wcm9jZXNzSGlnaEZpZGVsaXR5TG9nKCk7CisgICAgSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyKiBwcm9maWxlciA9IG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmdldCgp
OworICAgIGZvciAoQmFnPFR5cGVMb2NhdGlvbj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2xvY2F0aW9u
SW5mby5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgeworICAgICAgICBUeXBlTG9jYXRpb24qIGxv
Y2F0aW9uID0gKml0ZXI7CisgICAgICAgIHByb2ZpbGVyLT5tZXJnZUluVHlwZXNGb3JMb2NhdGlv
bihsb2NhdGlvbik7CisgICAgfQorfQorCit2b2lkIFZNOjpkdW1wSGlnaEZpZGVsaXR5UHJvZmls
aW5nVHlwZXMoKQoreworICAgIGlmICghaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVT
dGF0ZSgpOworICAgIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlciogcHJvZmlsZXIgPSBtX2hpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlci5nZXQoKTsKKyAgICBmb3IgKEJhZzxUeXBlTG9jYXRpb24+Ojpp
dGVyYXRvciBpdGVyID0gbV9sb2NhdGlvbkluZm8uYmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsK
KyAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9ICppdGVyOworICAgICAgICBwcmludGYo
IltMaW5lLCBDb2x1bW5dOjpbJXUsICV1XSBMb2NhbDonJXMnIEdsb2JhbDonJXMnXG4iLCBsb2Nh
dGlvbi0+bGluZSwgbG9jYXRpb24tPmNvbHVtbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVyLT5nZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVJ
blJhbmdlKGxvY2F0aW9uLT5saW5lLCBsb2NhdGlvbi0+Y29sdW1uLCBsb2NhdGlvbi0+bGluZSwg
bG9jYXRpb24tPmNvbHVtbiwgIiIsIGxvY2F0aW9uLT5zb3VyY2VJRCkuYXNjaWkoKS5kYXRhKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVy
LT5nZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShsb2NhdGlvbi0+bGluZSwgbG9jYXRp
b24tPmNvbHVtbiwgbG9jYXRpb24tPmxpbmUsIGxvY2F0aW9uLT5jb2x1bW4sICIiLCBsb2NhdGlv
bi0+c291cmNlSUQpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICB9Cit9CisKIHZvaWQgc2FuaXRpemVT
dGFja0ZvclZNKFZNKiB2bSkKIHsKICAgICBsb2dTYW5pdGl6ZVN0YWNrKHZtKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTcwMTU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsMTEg
QEAKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNp
bmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5o
IgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1
ZGUgIldlYWtSYW5kb20uaCIKKyNpbmNsdWRlIDx3dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL0J1
bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTc0LDYgKzc2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNz
IEhhbmRsZVN0YWNrOworICAgIGNsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjsKKyAgICBj
bGFzcyBIaWdoRmlkZWxpdHlMb2c7CiAgICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBJ
bnRlcnByZXRlcjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKQEAgLTg0LDYgKzg4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQ
YXJzZXJBcmVuYTsKICAgICBjbGFzcyBSZWdFeHBDYWNoZTsKKyAgICBjbGFzcyBTY3JpcHRFeGVj
dXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogICAgIGNsYXNzIFNvdXJjZVByb3Zp
ZGVyQ2FjaGU7CiAgICAgc3RydWN0IFN0YWNrRnJhbWU7CkBAIC05Niw2ICsxMDEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3Mg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrOworICAgIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKICAgICBjbGFzcyBWTUVudHJ5U2Nv
cGU7CiAgICAgY2xhc3MgV2F0Y2hwb2ludDsKICAgICBjbGFzcyBXYXRjaHBvaW50U2V0OwpAQCAt
NTEwLDYgKzUxNiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIEJ1aWx0
aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhl
Y3V0YWJsZXMuZ2V0KCk7IH0KIAorICAgICAgICBib29sIGlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KCkgeyByZXR1cm4gISFtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjsgfQorICAg
ICAgICBTdHJpbmcgZ2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5l
LCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29s
dW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7
CisgICAgICAgIEhpZ2hGaWRlbGl0eUxvZyogaGlnaEZpZGVsaXR5TG9nKCkgeyByZXR1cm4gbV9o
aWdoRmlkZWxpdHlMb2cuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCB1cGRhdGVIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZVN0YXRlKCk7CisgICAgICAgIFR5cGVMb2NhdGlvbiogbmV4dExvY2F0aW9uKCkg
eyByZXR1cm4gbV9sb2NhdGlvbkluZm8uYWRkKCk7IH0gLy9UT0RPOiBwb3NzaWJsZSBvcHRtaXph
dGlvbjogd2hlbiBjb2RlYmxvY2tzIGRpZSwgcmVwb3J0IHdoaWNoIGxvY2F0aW9ucyBhcmUgbm8g
bG9uZ2VyIGJlaW5nIGNoYW5nZWQgc28gd2UgZG9uJ3Qgd2FsayBvdmVyIHRoZW0KKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wSGlnaEZpZGVsaXR5UHJvZmlsaW5nVHlwZXMoKTsK
KyAgICAgICAgdWludDY0X3QgZ2V0TmV4dFVuaXF1ZVZhcmlhYmxlSUQoKSB7IHJldHVybiBtX25l
eHRVbmlxdWVWYXJpYWJsZUlEKys7IH0KKyAgICAgICAgdWludDY0X3QgZ2V0TmV4dFVuaXF1ZUlu
c3RydWN0aW9uSUQoKSB7IHJldHVybiBtX25leHRVbmlxdWVJbnN0cnVjdGlvbklEKys7IH0KKwog
ICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDbGVhckV4Y2VwdGlvblNjb3BlOwpAQCAtNTU4LDYgKzU3
MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxl
cz4gbV9idWlsdGluRXhlY3V0YWJsZXM7CiAgICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0Zy
YW1lPiBtX2V4Y2VwdGlvblN0YWNrOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdh
dGNocG9pbnRTZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI+IG1faGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaEZpZGVsaXR5TG9nPiBtX2hp
Z2hGaWRlbGl0eUxvZzsKKyAgICAgICAgLy91aW50NjRfdCBtX25leHRVbmlxdWVWYXJpYWJsZUlE
OworICAgICAgICBpbnQ2NF90IG1fbmV4dFVuaXF1ZVZhcmlhYmxlSUQ7CisgICAgICAgIHVpbnQ2
NF90IG1fbmV4dFVuaXF1ZUluc3RydWN0aW9uSUQ7CisgICAgICAgIEJhZzxUeXBlTG9jYXRpb24+
IG1fbG9jYXRpb25JbmZvOwogICAgIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikK
</data>
<flag name="review"
          id="257895"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="257896"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233486</attachid>
            <date>2014-06-20 16:47:57 -0700</date>
            <delta_ts>2014-06-23 17:03:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>99463</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwMTg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxNC0wNi0xOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbmNyZWFzZSB0aGUgYW1vdW50IG9mIHR5cGUgaW5mb3JtYXRpb24gdGhlIFZNIGdhdGhlcnMg
d2hlbiBkaXJlY3RlZAorICAgICAgICB0byBkbyBzby4gVGhpcyBpbml0aWFsIGNvbW1pdCBpcyB3
b3JraW5nIHRvd2FyZHMgdGhlIGdvYWwgb2YKKyAgICAgICAgY2FwdHVyaW5nLCBhbmQgdGhlbiBz
aG93aW5nICh2aWEgdGhlIFdlYiBJbnNwZWN0b3IpIHR5cGUgaW5mb3JtYXRpb24gZm9yIGFsbAor
ICAgICAgICBhc3NpZ25tZW50IGFuZCBsb2FkIG9wZXJhdGlvbnMuIFRoaXMgcGF0Y2ggZG9lc24n
dCBoYXZlIHRoZSBmZWF0dXJlIGZ1bGx5IAorICAgICAgICBpbXBsZW1lbnRlZCwgYnV0IGl0IGVu
c3VyZXMgdGhlIFZNIGhhcyBubyBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucworICAgICAgICB1bmxl
c3MgdGhlIGZlYXR1cmUgaXMgc3BlY2lmaWNhbGx5IHR1cm5lZCBvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzM5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3Rlcik6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBieXRlY29kZS9UeXBlTG9jYXRpb24uaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OlR5cGVMb2NhdGlvbjo6VHlwZUxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6
VHlwZUxvY2F0aW9uOjp+VHlwZUxvY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE1vdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVUeXBl
c1dpdGhIaWdoRmlkZWxpdHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dFRvU2NvcGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5
SWQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGluZyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAg
ICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OlByZWZp
eE5vZGU6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeVJlc29sdmVOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29uc3REZWNsTm9kZTo6ZW1pdENvZGVTaW5nbGUpOgor
ICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogaGVhcC9I
ZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRS
YW5nZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29uOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKToKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhf
REVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0
eUxvZy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6OmluaXRpYWxp
emVIaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6On5IaWdo
RmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6OnJlY29yZFR5cGVJ
bmZvcm1hdGlvbkZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGlnaEZpZGVsaXR5TG9nOjpw
cm9jZXNzSGlnaEZpZGVsaXR5TG9nKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0eUxv
Zy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SGlnaEZpZGVsaXR5TG9nOjpIaWdoRmlkZWxpdHlM
b2cpOgorICAgICAgICAqIHJ1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGb3JW
YXJpYWJsZUluUmFuZ2UpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6
OmdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAgICAgICAgKEpTQzo6SGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAg
ICAgICAgKEpTQzo6SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjptZXJnZUluVHlwZXNGb3JMb2Nh
dGlvbik6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYXRp
b25CYXNlZEhhc2gpOgorICAgICAgICAqIHJ1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0cnVjdHVyZVNo
YXBlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGUp
OgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVDYXB0dXJlZE5hbWVzKToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6OnVuaXF1ZUlERm9yVmFyaWFibGUpOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZTo6dW5pcXVlSURGb3JSZWdpc3Rlcik6CisgICAgICAgICogcnVudGltZS9T
eW1ib2xUYWJsZS5oOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6YWRkKToKKyAgICAgICAg
KEpTQzo6U3ltYm9sVGFibGU6OnNldCk6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OlR5cGVTZXQ6OlR5cGVTZXQpOgorICAgICAgICAoSlNDOjpU
eXBlU2V0OjpnZXRSdW50aW1lVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6
YWRkVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6bWVyZ2VXaXRoVHlwZVNl
dCk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OnJlbW92ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhp
c3RvcnkpOgorICAgICAgICAoSlNDOjpUeXBlU2V0OjpzZWVuVHlwZXMpOgorICAgICAgICAoSlND
OjpUeXBlU2V0OjpkdW1wU2VlblR5cGVzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6
Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVNldC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpT
Qzo6Vk06OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAgICAgICAgKEpTQzo6Vk06OnVw
ZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUpOgorICAgICAgICAoSlNDOjpWTTo6ZHVt
cEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgIChKU0M6OlZNOjppc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSk6CisgICAg
ICAgIChKU0M6OlZNOjpoaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpWTTo6bmV4dExv
Y2F0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OmdldE5leHRVbmlxdWVWYXJpYWJsZUlEKToKKyAg
ICAgICAgKEpTQzo6Vk06OmdldE5leHRVbmlxdWVJbnN0cnVjdGlvbklEKToKKwogMjAxNC0wNi0x
OSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtmdGxvcHRdIFN0
cnVjdHVyZVNldDo6b25seVN0cnVjdHVyZSgpIHNob3VsZCByZXR1cm4gbnVsbHB0ciBpZiBpdCdz
IG5vdCBhIHNpbmdsZXRvbiAoaW5zdGVhZCBvZiBhc3NlcnRpbmcpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAkocmV2aXNpb24gMTcwMTg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkJ1dHRlcmZs
eUlubGluZXMuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJDb3BpZWRTcGFj
ZUlubGluZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC0zNTMsNiArMzU0
LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhl
Y1N0YXRlKik7CiAjZW5kaWYKIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMgKEV4ZWNTdGF0ZSopOworCiBzdHJ1Y3Qg
U2NyaXB0IHsKICAgICBib29sIGlzRmlsZTsKICAgICBjaGFyKiBhcmd1bWVudDsKQEAgLTQ5Myw2
ICs0OTYsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVJ
bXB1cmVHZXR0ZXIiLCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlciwgMSk7CiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAic2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUiLCBmdW5jdGlvblNldEltcHVy
ZUdldHRlckRlbGVnYXRlLCAyKTsKKworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBUeXBl
c0ZvckFsbFZhcmlhYmxlcyIsIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzICwgNCk7
CiAgICAgICAgIAogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
Z2xvYmFsRXhlYygpLCAwKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVu
dHMuc2l6ZSgpOyArK2kpCkBAIC05MjcsNiArOTMyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25NYWsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hc3F1ZXJh
ZGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxW
YXJpYWJsZXMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGV4ZWMtPnZtKCkuZHVtcEhpZ2hGaWRl
bGl0eVByb2ZpbGluZ1R5cGVzKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKK30KKworCisKIC8vIFVzZSBTRUggZm9yIFJlbGVhc2UgYnVpbGRzIG9ubHkgdG8g
Z2V0IHJpZCBvZiB0aGUgY3Jhc2ggcmVwb3J0IGRpYWxvZwogLy8gKGx1Y2tpbHkgdGhlIHNhbWUg
dGVzdHMgZmFpbCBpbiBSZWxlYXNlIGFuZCBEZWJ1ZyBidWlsZHMgc28gZmFyKS4gTmVlZCB0bwog
Ly8gYmUgaW4gYSBzZXBhcmF0ZSBtYWluIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGpzY21haW4gZnVu
Y3Rpb24gcmVxdWlyZXMgb2JqZWN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTcwMTg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTgzNSw2ICs4MzUs
MTMgQEAKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQz
MTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhE
OTAwNzZGMTEwIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZv
dW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyog
WWFyci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUx
NTM5QjgxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkZCNzEzNzE5NTM3NEI4MDBCQjYxMkUgLyogSGln
aEZpZGVsaXR5TG9nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyRkI3MTMzMTk1Mzc0QjcwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwICov
OyB9OworCQk1MkZCNzEzODE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzEzNDE5NTM3
NEI3MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTJGQjcxMzkxOTUzNzRCODAwQkI2MTJFIC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzEzNTE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmNwcCAqLzsgfTsKKwkJNTJGQjcxM0ExOTUzNzRCODAwQkI2MTJFIC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJGQjcxMzYxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTUyRkI3MjExMTk1Mzc1QzYwMEJCNjEyRSAvKiBUeXBlTG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MjEwMTk1Mzc1QzYw
MEJCNjEyRSAvKiBUeXBlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1MkZCNzIxNDE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzIx
MjE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5jcHAgKi87IH07CisJCTUyRkI3MjE1MTk1Mzc2
MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MkZCNzIxMzE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1MTA1MDI2MThF
QjgyNzUwMDAwMUYzRSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDBGODhGMEE1MDhCMTAwMDA1RjA2MSAvKiBK
U0NhbGxiYWNrRnVuY3Rpb24uaCAqLzsgfTsKIAkJNTUyRUE3MEMxOTA4NzA0ODAwQTY2RjJGIC8q
IEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQjY2QkYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQcm90
b3R5cGUuY3BwICovOyB9OwogCQk1NTQwNzU3MjE4REE1OEFEMDBFRkY3RjIgLyogQXJnTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNjA1MTIw
RTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLzsgfTsKQEAgLTI5NzAsNiArMjk3NywxNCBA
QAogCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGpzYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgfTsKIAkJNTFGMEVCNjEwNUM4NkM2QjAwRTZE
RjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9u
LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1MUYwRUMwNzA1Qzg2
QzlBMDBFNkRGMUIgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGli
b2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNvdXJjZVRyZWUgPSAi
PGFic29sdXRlPiI7IH07CisJCTUyMkFCQUY5MTk0QTgwNDMwMDhCMUM4NSAvKiBUeXBlTG9jYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUxvY2F0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRkI3MTMzMTk1Mzc0QjcwMEJCNjEyRSAvKiBI
aWdoRmlkZWxpdHlMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SGlnaEZpZGVsaXR5TG9nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGQjcx
MzQxOTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIaWdoRmlkZWxpdHlMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTJGQjcxMzUxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZCNzEz
NjE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZCNzIxMDE5NTM3NUM2MDBCQjYxMkUgLyogVHlw
ZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MkZCNzIxMjE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlU2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGQjcyMTMxOTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVT
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwNzU4NDE4RjRBMzc1MDA2MDJBNUQgLyogQ29tcGls
ZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NTQwN0FDODE4REE1OEFEMDBFRkY3RjIgLyogbGliQ29tcGlsZVJ1bnRpbWVUb0xM
Vk1JUi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBh
cmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJDb21waWxlUnVudGltZVRv
TExWTUlSLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVENTM3MjZE
MEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVHJh
Y2luZy5kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY0Myw2ICs0NjU4LDEwIEBA
CiAJCQkJMEYyQjY2QjMxN0I2QjVBQjAwQTdBRTNGIC8qIEdlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaCAqLywKIAkJCQlCQzAyRTlCODBFMTg0NTQ1MDAwRjkyOTcgLyogR2V0dGVyU2V0dGVy
LmNwcCAqLywKIAkJCQlCQzMzN0JERTBFMUFGMEI4MDA3NjkxOEEgLyogR2V0dGVyU2V0dGVyLmgg
Ki8sCisJCQkJNTJGQjcxMzMxOTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAg
Ki8sCisJCQkJNTJGQjcxMzQxOTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5oICov
LAorCQkJCTUyRkI3MTM1MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXIuY3BwICovLAorCQkJCTUyRkI3MTM2MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuaCAqLywKIAkJCQk5MzNBMzQ5RDAzOEFFODBGMDA4NjM1Q0UgLyogSWRlbnRp
Zmllci5jcHAgKi8sCiAJCQkJOTMzQTM0OUEwMzhBRTdDNjAwODYzNUNFIC8qIElkZW50aWZpZXIu
aCAqLywKIAkJCQk4NjA2RERFOTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMu
aCAqLywKQEAgLTQ5MTQsNiArNDkzMyw4IEBACiAJCQkJMEYyQjY2REIxN0I2QjVBQjAwQTdBRTNG
IC8qIFR5cGVkQXJyYXlzLmggKi8sCiAJCQkJMEYyQjY2REMxN0I2QjVBQjAwQTdBRTNGIC8qIFR5
cGVkQXJyYXlUeXBlLmNwcCAqLywKIAkJCQkwRjJCNjZERDE3QjZCNUFCMDBBN0FFM0YgLyogVHlw
ZWRBcnJheVR5cGUuaCAqLywKKwkJCQk1MkZCNzIxMjE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNl
dC5jcHAgKi8sCisJCQkJNTJGQjcyMTMxOTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuaCAqLywK
IAkJCQlBN0E4QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCAqLywKIAkJCQk4
NjY3MzlEMTEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggKi8sCiAJCQkJ
QTdBOEFGMzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi8sCkBAIC01Mzg1LDYg
KzU0MDYsNyBAQAogCQkJCTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAgKi8sCiAJCQkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8q
IExMSW50Q2FsbExpbmtJbmZvLmggKi8sCisJCQkJNTIyQUJBRjkxOTRBODA0MzAwOEIxQzg1IC8q
IFR5cGVMb2NhdGlvbi5oICovLAogCQkJCTBGQjU0NjdDMTRGNUNGRDMwMDJDMjk4OSAvKiBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkwRkI1NDY3QTE0RjVDN0Q0MDAy
QzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovLAogCQkJCTE0Q0E5NThD
MTZBQjUwRkEwMDkzOEEwNiAvKiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oICovLApAQCAtNTQy
MCw2ICs1NDQyLDcgQEAKIAkJCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJl
U3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovLAogCQkJCUJDQ0YwRDBCMEVGMEI4QTUwMDQxM0M4
RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgKi8sCiAJCQkJQkNDRjBEMDcwRUYwQUFCOTAwNDEz
QzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmggKi8sCisJCQkJNTJGQjcyMTAxOTUzNzVDNjAwQkI2
MTJFIC8qIFR5cGVMb2NhdGlvbi5oICovLAogCQkJCUE3OUU3ODFFMTVFRUNCQTgwMDQ3Qzg1NSAv
KiBVbmxpbmtlZENvZGVCbG9jay5jcHAgKi8sCiAJCQkJQTc5RTc4MUYxNUVFQ0JBODAwNDdDODU1
IC8qIFVubGlua2VkQ29kZUJsb2NrLmggKi8sCiAJCQkJQjU5Rjg5MzgxODkxQURCNTAwRDVDQ0RD
IC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwICovLApAQCAtNTg4OSw2ICs1OTEyLDEw
IEBACiAJCQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1B
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyRkI3MjE1MTk1Mzc2MEMwMEJCNjEyRSAv
KiBUeXBlU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkZCNzIxMTE5NTM3NUM2MDBCQjYxMkUg
LyogVHlwZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkZCNzEzQTE5NTM3NEI4MDBC
QjYxMkUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MkZCNzEzODE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFNTI0OEY5MTkxNDQyRDkwMEI3RkRFNCAvKiBWYXJpYWJsZVdh
dGNocG9pbnRTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc2MDMsNiArNzYzMCw3IEBA
CiAJCQkJMEY0ODUzMjExODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjYzOTQ4NDE1RTQ4MTE4MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDlBMjk0MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdBdFRh
aWxBYnN0cmFjdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyRkI3MTM5MTk1Mzc0Qjgw
MEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY2NjZFQzYxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjcxNENBNDE2RUE5MkYwMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJv
cGFnYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3
NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc2MzgsNiArNzY2
Niw3IEBACiAJCQkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXpl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzhBOTc3NjE3OTczOEI4MDA5REY3NDQgLyogREZH
RmluYWxpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJEQzE1MTUxQzVENEQwMENEODkx
MCAvKiBERkdGaXh1cFBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyRkI3MjE0MTk1Mzc2
MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2MTdG
RkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdE
ODlDRjcxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2RUM5REM3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTc3MjAsNiArNzc0OSw3IEBACiAJCQkJQTdCNDhGNDkwRUU4OTM2RjAwRENCREI2
IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEQjY0NjQw
Rjk1QzZGQzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjU2QTFENTE1MDAxQ0Y0MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291
bnRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MkZCNzEzNzE5NTM3NEI4MDBCQjYxMkUgLyog
SGlnaEZpZGVsaXR5TG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMDMzMkMwMThBREZBRTEw
MDVGOTc5QSAvKiBFeGl0aW5nSklUVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxMDU4
NTE2NzU0ODBGMDBGOEFCNkUgLyogRXhpdEtpbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
QTBBMUMxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24JKHJldmlzaW9uIDE3MDE4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBA
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXNvbHZlX3Njb3BlIiwgImxlbmd0aCIgOiA2
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfZnJvbV9zY29wZSIsICJsZW5ndGgi
IDogOCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0X3RvX3Njb3BlIiwgImxlbmd0
aCIgOiA3IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fc2NvcGVfd2l0aF9w
cm9maWxlIiwgImxlbmd0aCIgOiA4IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNo
X3dpdGhfc2NvcGUiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3BvcF9zY29wZSIsICJsZW5ndGgiIDogMSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
cHVzaF9uYW1lX3Njb3BlIiwgImxlbmd0aCIgOiA0IH0sCkBAIC0xMjIsNyArMTIzLDggQEAKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlYnVnIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3dpbGxfY2FsbCIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV9kaWRfY2FsbCIsICJsZW5ndGgiIDog
MiB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0aCIgOiAyIH0KKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VuZCIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkiLCAibGVu
Z3RoIiA6IDQgfQogICAgICAgICBdCiAgICAgfSwKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAkocmV2aXNpb24gMTcwMTg2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAogICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzoKICAgICBjYXNlIG9wX2dldF9jYWxs
ZWU6CiAgICAgY2FzZSBvcF9lbnRlcjoKKyAgICAvL1RPRE86IFNob3VsZCB0aGlzIGZ1bmN0b3Ig
YmUgY2FsbGVkIHdpdGggb25lIG9wZXJhbmQ/CisgICAgY2FzZSBvcF9wcm9maWxlX3R5cGVzX3dp
dGhfaGlnaF9maWRlbGl0eToKICAgICBjYXNlIG9wX2NhdGNoOgogICAgIGNhc2Ugb3BfdG91Y2hf
ZW50cnk6CiAgICAgICAgIHJldHVybjsKQEAgLTEwNSw2ICsxMDcsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWxfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAg
ICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9m
aWxlOgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCk7CkBAIC0yNDksNiArMjUyLDcgQEAgdm9pZCBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbAogICAgIGNhc2Ugb3BfcHVzaF9uYW1lX3Njb3BlOgogICAg
IGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgorICAg
IGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKICAgICBjYXNlIG9wX3BvcF9zY29w
ZToKICAgICBjYXNlIG9wX2VuZDoKICAgICBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgpAQCAt
Mjg3LDYgKzI5MSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmwK
ICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4
OgogICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfcHJvZmlsZV90
eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CiAgICAgY2FzZSBvcF90b3VjaF9lbnRyeToKICNkZWZp
bmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAg
ICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVT
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAxNzAxODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkRG
R0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkRlYnVnZ2Vy
LmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgpAQCAt
NDcsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVT
Y29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgorI2luY2x1ZGUgIlR5cGVMb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNHZXRCeUlkTGlzdC5oIgpAQCAtODQyLDYg
Kzg0NCwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgKytp
dDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHJvZmls
ZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgLy9pbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgICsraXQ7CisgICAgICAgICAgICArK2l0OworICAgICAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAib3BfcHJvZmlsZV90eXBlc193
aXRoX2hpZ2hfZmlkZWxpdHkiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0
ZXJOYW1lKHIwKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9ub3Q6IHsKICAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgIm5vdCIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDY4LDYgKzE0Nzks
NyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgICAgIG9wZXJh
bmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
dG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewog
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
aWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xNDc2LDYgKzE0ODgsOCBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgKytpdDsgLy8gU3RydWN0dXJlCiAgICAg
ICAgICAgICBpbnQgb3BlcmFuZCA9ICgrK2l0KS0+dS5vcGVyYW5kOyAvLyBPcGVyYW5kCiAgICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRf
dG9fc2NvcGUiKTsKKyAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gb3BfcHV0X3RvX3Njb3BlX3dp
dGhfcHJvZmlsZSkKKyAgICAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzLCAlcywgJXU8JXN8JXM+LCA8c3RydWN0dXJlPiwgJWQiLAogICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksCiAgICAgICAgICAgICAgICAgbW9kZUFu
ZFR5cGUub3BlcmFuZCgpLCByZXNvbHZlTW9kZU5hbWUobW9kZUFuZFR5cGUubW9kZSgpKSwgcmVz
b2x2ZVR5cGVOYW1lKG1vZGVBbmRUeXBlLnR5cGUoKSksCkBAIC0xODc5LDYgKzE4OTMsNyBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmls
ZToKICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKICAgICAgICAgICAgIC8vIHB1dF90
b19zY29wZSBzY29wZSwgaWQsIHZhbHVlLCBSZXNvbHZlTW9kZUFuZFR5cGUsIFN0cnVjdHVyZSwg
T3BlcmFuZAogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVy
KHBjWzJdLnUub3BlcmFuZCk7CkBAIC0xODk0LDkgKzE5MDksNzYgQEAgQ29kZUJsb2NrOjpDb2Rl
QmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAgICAgICAgfSBlbHNlIGlmIChvcC5zdHJ1
Y3R1cmUpCiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51LnN0cnVjdHVyZS5z
ZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3Auc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3Au
b3BlcmFuZCk7CisKKyAgICAgICAgICAgIC8vIHB1dF90b19zY29wZV93aXRoX3Byb2ZpbGUgc2Nv
cGUsIGlkLCB2YWx1ZSwgUmVzb2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQsIFR5
cGVMb2NhdGlvbioKKyAgICAgICAgICAgIGlmIChwY1swXS51Lm9wY29kZSA9PSBvcF9wdXRfdG9f
c2NvcGVfd2l0aF9wcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2Nh
dGlvbiA9IHZtKCktPm5leHRMb2NhdGlvbigpOworICAgICAgICAgICAgICAgIHNpemVfdCBpbnN0
cnVjdGlvbk9mZnNldCA9IGkgKyBvcExlbmd0aCAtIDE7CisgICAgICAgICAgICAgICAgaW50IGRp
dm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0OyAKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
aW5lID0gMCwgY29sdW1uID0gMDsKKyAgICAgICAgICAgICAgICBleHByZXNzaW9uUmFuZ2VGb3JC
eXRlY29kZU9mZnNldChpbnN0cnVjdGlvbk9mZnNldCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQsIGxpbmUsIGNvbHVtbik7CisKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bGluZSA9
IGxpbmU7CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPmNvbHVtbiA9IGNvbHVtbjsKKyAgICAg
ICAgICAgICAgICBsb2NhdGlvbi0+c291cmNlSUQgPSBtX293bmVyRXhlY3V0YWJsZS0+c291cmNl
SUQoKTsKKyAgICAgICAgICAgICAgICAvL2xvY2F0aW9uLT5nbG9iYWxJbnN0cnVjdGlvbklEID0g
dm0oKS0+Z2V0TmV4dFVuaXF1ZUluc3RydWN0aW9uSUQoKTsKKworICAgICAgICAgICAgICAgIC8v
VE9ETzogaGFuZGxlIG90aGVyIG9wLnR5cGUgaGVyZQorICAgICAgICAgICAgICAgIFN5bWJvbFRh
YmxlKiBzeW1ib2xUYWJsZSA9IDA7CisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xv
c3VyZVZhcikgCisgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gb3AuYWN0aXZhdGlv
bi0+c3ltYm9sVGFibGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEds
b2JhbFZhcikKKyAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVj
dC5nZXQoKS0+c3ltYm9sVGFibGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBl
ID09IEdsb2JhbFByb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgICAgIC8vVE9ETzogaW1wbGVt
ZW50CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IGlmIChzeW1ib2xUYWJsZSkgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb24tPmdsb2JhbFZhcmlhYmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURGb3JWYXJpYWJs
ZShsb2NrZXIsIGlkZW50LmltcGwoKSwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBsb2Nh
dGlvbi0+Z2xvYmFsVHlwZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9yVmFyaWFi
bGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlk
ZWxpdHlOb0dsb2JhbElERXhpc3RzOworCisgICAgICAgICAgICAgICAgdm0oKS0+aGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyKCktPnJlZ2lzdGVyTG9jYXRpb24obG9jYXRpb24pOworICAgICAgICAg
ICAgICAgIGluc3RydWN0aW9uc1tpICsgN10udS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9w
X3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5OiB7CisKKyAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAg
IFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1fc3ltYm9sVGFibGUuZ2V0KCk7CisgICAgICAg
ICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gdm0oKS0+bmV4dExvY2F0aW9uKCk7CisgICAg
ICAgICAgICBzaXplX3QgaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpICsgb3BMZW5ndGggLSAxOworICAg
ICAgICAgICAgaW50IGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0OyAKKyAgICAgICAgICAg
IHVuc2lnbmVkIGxpbmUgPSAwLCBjb2x1bW4gPSAwOworICAgICAgICAgICAgZXhwcmVzc2lvblJh
bmdlRm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOworCisgICAgICAgICAgICBpbnQgaGFzR2xvYmFs
SURGbGFnID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAgICAgaWYgKGhhc0dsb2JhbElERmxh
ZykgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRh
YmxlLT5tX2xvY2spOworICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlE
ID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yUmVnaXN0ZXIobG9ja2VyLCB2aXJ0dWFsUmVnaXN0
ZXIub2Zmc2V0KCksICp2bSgpKTsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+Z2xvYmFsVHlw
ZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9yUmVnaXN0ZXIobG9ja2VyLCB2aXJ0
dWFsUmVnaXN0ZXIub2Zmc2V0KCksICp2bSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJsZUlEID0gSGlnaEZpZGVsaXR5Tm9HbG9i
YWxJREV4aXN0czsKICAgICAgICAgICAgIAorCisgICAgICAgICAgICBsb2NhdGlvbi0+bGluZSA9
IGxpbmU7CisgICAgICAgICAgICBsb2NhdGlvbi0+Y29sdW1uID0gY29sdW1uOworICAgICAgICAg
ICAgbG9jYXRpb24tPnNvdXJjZUlEID0gbV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCk7Cisg
ICAgICAgICAgICAvL2xvY2F0aW9uLT5nbG9iYWxJbnN0cnVjdGlvbklEID0gdm0oKS0+Z2V0TmV4
dFVuaXF1ZUluc3RydWN0aW9uSUQoKTsKKworICAgICAgICAgICAgLy9TdHJpbmcgbmFtZSA9IG5h
bWVGb3JSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICAgICAgLy9wcmludGYoIkxJ
TktJTkc6IG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5IGhhcyB1bmlxdWVJRDon
JWxsdScgYW5kIG5hbWU6JyVzJywgbGluZTonJXUnLCBjb2x1bW46JyV1J1xuIiwgZ2xvYmFsSUQs
IG5hbWUuYXNjaWkoKS5kYXRhKCksIGxvY2F0aW9uLT5saW5lLCBsb2NhdGlvbi0+Y29sdW1uKTsg
CisgICAgICAgICAgICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+cmVnaXN0ZXJM
b2NhdGlvbihsb2NhdGlvbik7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDJdLnUubG9j
YXRpb24gPSBsb2NhdGlvbjsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKwogICAgICAgICBjYXNlIG9wX2NhcHR1cmVkX21vdjoKICAgICAgICAgY2FzZSBv
cF9uZXdfY2FwdHVyZWRfZnVuYzogewogICAgICAgICAgICAgaWYgKHBjWzNdLnUuaW5kZXggPT0g
VUlOVF9NQVgpIHsKQEAgLTIzNDAsNiArMjQyMiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6CisgICAgICAgICAgICBjYXNlIG9w
X3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGU6CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF90b19z
Y29wZTogewogICAgICAgICAgICAgICAgIFJlc29sdmVNb2RlQW5kVHlwZSBtb2RlQW5kVHlwZSA9
CiAgICAgICAgICAgICAgICAgICAgIFJlc29sdmVNb2RlQW5kVHlwZShjdXJJbnN0cnVjdGlvbls0
XS51Lm9wZXJhbmQpOwpAQCAtMzU4MSw2ICszNjY0LDkgQEAgYm9vbCBDb2RlQmxvY2s6OnVzZXNP
cGNvZGUoT3Bjb2RlSUQgb3BjbwogCiBTdHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIo
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKIHsKKyAgICBpZiAoIXN5bWJvbFRhYmxl
KCkpIAorICAgICAgICByZXR1cm4gIiI7CisKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9y
IGVuZCA9IHN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgIGZvciAoU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgcHRyID0gc3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgcHRyICE9
IGVuZDsgKytwdHIpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDE3MDE4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDA4LDcgKzQwOCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotICAgIFN0cmluZyBuYW1lRm9yUmVn
aXN0ZXIoVmlydHVhbFJlZ2lzdGVyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFt
ZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcik7CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHZv
aWQgc2V0TnVtYmVyT2ZCeVZhbEluZm9zKHNpemVfdCBzaXplKSB7IG1fYnlWYWxJbmZvcy5yZXNp
emVUb0ZpdChzaXplKTsgfQpAQCAtOTQzLDYgKzk0Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKTsgLy8gV2lsbCBvbmx5IHJldHVybiB2YWxpZCByZXN1
bHRzIHdoZW4gY2FsbGVkIGR1cmluZyBHQy4gQXNzdW1lcyB0aGF0IHlvdSd2ZSBhbHJlYWR5IGVz
dGFibGlzaGVkIHRoYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUgaXMgbGl2ZS4KIAorCiBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCShyZXZpc2lvbiAxNzAxODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJUeXBl
TG9jYXRpb24uaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJTcGVjaWFs
UG9pbnRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgpAQCAtMTE4LDYgKzExOSw3IEBAIHN0
cnVjdCBJbnN0cnVjdGlvbiB7CiAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNBY3RpdmF0aW9u
PiBhY3RpdmF0aW9uOwogICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICBib29sKiBwcmVk
aWNhdGVQb2ludGVyOworICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uOwogICAgIH0gdTsK
ICAgICAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1R5cGVMb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9UeXBlTG9jYXRpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9UeXBlTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBUeXBlTG9jYXRpb25faAorI2RlZmluZSBUeXBlTG9jYXRpb25faAorCisjaW5jbHVkZSAi
VHlwZVNldC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIGVudW0gSGlnaEZpZGVsaXR5R2xv
YmFsSURGbGFncyB7CisgICAgICAgIEhpZ2hGaWRlbGl0eU5lZWRzVW5pcXVlSURHZW5lcmF0aW9u
ID0gLTEsCisgICAgICAgIEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHMgPSAtMgorICAgIH07
CisKK2NsYXNzIFR5cGVMb2NhdGlvbiB7CisgICAgICAgICAgICAgICAgICAgICAgIAorcHVibGlj
OgorICAgIFR5cGVMb2NhdGlvbigpIAorICAgICAgICA6IGluc3RydWN0aW9uVHlwZVNldChuZXcg
VHlwZVNldCgpKQorICAgICAgICAsIGdsb2JhbFR5cGVTZXQoMCkKKyAgICB7CisgICAgfQorCisg
ICAgflR5cGVMb2NhdGlvbigpCisgICAgeworICAgICAgICBkZWxldGUgaW5zdHJ1Y3Rpb25UeXBl
U2V0OworICAgICAgICBpZiAoZ2xvYmFsVHlwZVNldCkKKyAgICAgICAgICAgIGRlbGV0ZSBnbG9i
YWxUeXBlU2V0OworICAgIH0KKworICAgIC8vdWludDY0X3QgZ2xvYmFsVmFyaWFibGVJRDsKKyAg
ICBpbnQ2NF90IGdsb2JhbFZhcmlhYmxlSUQ7CisgICAgLy91aW50NjRfdCBnbG9iYWxJbnN0cnVj
dGlvbklEOworICAgIC8vc2l6ZV90IHVubGlua2VkQnl0ZUNvZGVPZmZzZXQ7CisgICAgaW50cHRy
X3Qgc291cmNlSUQ7CisgICAgdW5zaWduZWQgbGluZTsKKyAgICB1bnNpZ25lZCBjb2x1bW47Cisg
ICAgVHlwZVNldCogaW5zdHJ1Y3Rpb25UeXBlU2V0OworICAgIFR5cGVTZXQqIGdsb2JhbFR5cGVT
ZXQ7Cit9OworCit9IC8vbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy9Mb2NhdGlvbl9oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTcwMTg2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMDIsNiArMTAwMiwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1v
dmUoCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYy0+aW5kZXgoKSk7CiAgICAgaWYgKGNh
cHR1cmVNb2RlID09IElzQ2FwdHVyZWQpCiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh3
YXRjaGFibGVWYXJpYWJsZShkc3QtPmluZGV4KCkpKTsKKworICAgIGlmICghZHN0LT5pc1RlbXBv
cmFyeSgpICYmIGlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSkKKyAgICAg
ICAgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZHN0LCB0cnVlKTsKKwogICAgIHJl
dHVybiBkc3Q7CiB9CiAKQEAgLTExMTEsNiArMTExNSwyMSBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEVxdWFsCiAgICAgcmV0dXJuIGRzdDsKIH0KIAordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoUmVnaXN0ZXJJRCog
cmVnaXN0ZXJUb1Byb2ZpbGUsIGJvb2wgaGFzR2xvYmFsSUQpCit7CisgICAgLy9vcF9wcm9maWxl
X3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSB2YWx1ZV9yZWcgbG9jYXRpb24gaGFzR2xvYmFsSUQK
KyAgICBlbWl0T3Bjb2RlKG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVnaXN0ZXJUb1Byb2ZpbGUtPmluZGV4KCkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpZiAoaGFzR2xvYmFsSUQpIC8vZW1pdE1v
dmUgYW5kIHdlJ3JlIGludGVyZXN0ZWQgaW4gYSBnbG9iYWwgdmFyaWFibGUgaWQKKyAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDEpOworICAgIGVsc2UKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKDApOyAvL3B1dF9ieV9pZCwgZG9uJ3QgdHJ5IHRvIHRyYWNlIHRvIGEgZ2xvYmFs
IG9iamVjdAorCisgICAgLy9pbnN0cnVjdGlvbnMoKS5hcHBlbmQob2Zmc2V0KTsKK30KKworCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBi
b29sIGIpCiB7CiAgICAgcmV0dXJuIGVtaXRMb2FkKGRzdCwganNCb29sZWFuKGIpKTsKQEAgLTEy
NTUsMTMgKzEyNzQsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRU
bwogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0
aW9ucygpLnNpemUoKSk7CiAKICAgICAvLyBwdXRfdG9fc2NvcGUgc2NvcGUsIGlkLCB2YWx1ZSwg
UmVzb2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQKLSAgICBlbWl0T3Bjb2RlKG9w
X3B1dF90b19zY29wZSk7CisgICAgaWYgKGlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxpbmcoKSkKKyAgICAgICAgZW1pdE9wY29kZShvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxl
KTsKKyAgICBlbHNlCisgICAgICAgIGVtaXRPcGNvZGUob3BfcHV0X3RvX3Njb3BlKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChhZGRDb25zdGFudChpZGVudGlmaWVyKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHZhbHVlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoUmVzb2x2ZU1v
ZGVBbmRUeXBlKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSgpKS5vcGVyYW5kKCkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Cisg
ICAgaWYgKGlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSkKKyAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTMy
OCw2ICsxMzUyLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKworICAgIGlmIChpc0dlbmVyYXRp
bmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpCisgICAgICAgIGVtaXRQcm9maWxlVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KHZhbHVlLCBmYWxzZSk7CisKICAgICByZXR1cm4gdmFsdWU7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE3MDE4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMyLDYgKzMzMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGVtaXRO
b2RlKG4pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBlbWl0UHJvZmlsZVR5cGVzV2l0aEhp
Z2hGaWRlbGl0eShSZWdpc3RlcklEKiBkc3QsIGJvb2wpOworCiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dExvYWQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJik7CkBAIC02NzcsNiArNjc5
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVk0qIG1fdm07CiAKKyAgICAgICAgYm9v
bCBpc0dlbmVyYXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkgeyByZXR1cm4gdm0oKS0+
aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKTsgfQorCiAgICAgICAgIE9wY29kZUlE
IG1fbGFzdE9wY29kZUlEOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgc2l6ZV90IG1fbGFzdE9w
Y29kZVBvc2l0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMTcwMTg2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NDAsMTMgKzc0MCwxNSBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdFJlc29s
dmUoQnl0CiAgICAgICAgIGlmIChsb2NhbC5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpOwogICAgICAgICAgICAgbG9j
YWxSZWcgPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBsb2NhbFJlZyk7Ci0gICAgICAgIH0gZWxzZSBpZiAobG9jYWwuaXNDYXB0dXJlZCgpKSB7Cisg
ICAgICAgIH0gZWxzZSBpZiAobG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci5pc0dlbmVy
YXRpbmdIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKICAg
ICAgICAgICAgIEFTU0VSVChkc3QgIT0gbG9jYWxSZWcpOwogICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRlbXBEc3RTcmMgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFRvTnVtYmVyKHRlbXBEc3QuZ2V0KCksIGxvY2FsUmVnKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZSh0ZW1wRHN0U3JjLmdldCgpLCBsb2NhbFJlZyk7
CiAgICAgICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB0ZW1wRHN0U3JjLmdldCgpLCBt
X29wZXJhdG9yKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNHZW5lcmF0aW5nSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGluZygpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbFJlZywgdGVtcERzdFNyYy5nZXQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdGVtcERzdC5nZXQoKTsKICAgICAgICAgfQpAQCAtOTE1LDEwICs5MTcs
MTIgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZQogICAgICAgICBp
ZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRP
bmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGxvY2FsUmVnID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9jYWxSZWcpOwotICAg
ICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYg
KGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGluZygpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERz
dCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TW92ZSh0ZW1wRHN0LmdldCgpLCBsb2NhbFJlZyk7CiAgICAgICAgICAgICBlbWl0SW5j
T3JEZWMoZ2VuZXJhdG9yLCB0ZW1wRHN0LmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgICAg
IGlmIChnZW5lcmF0b3IuaXNHZW5lcmF0aW5nSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZygpKQor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShs
b2NhbFJlZywgdGVtcERzdC5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1v
dmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgfQpA
QCAtMTQwNywyNiArMTQxMSwyOSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBl
bWl0UmVhCiAKIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBK
U1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7
CiAgICAgaWYgKExvY2FsIGxvY2FsID0gZ2VuZXJhdG9yLmxvY2FsKG1faWRlbnQpKSB7CiAgICAg
ICAgIGlmIChsb2NhbC5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpOwogICAgICAgICAgICAgcmV0dXJuIGVtaXRSZWFk
TW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCksIGxvY2FsLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0
VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKQorICAgICAg
ICAgICAgfHwgZ2VuZXJhdG9yLmlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmco
KQogICAgICAgICAgICAgfHwgZ2VuZXJhdG9yLmxlZnRIYW5kU2lkZU5lZWRzQ29weShtX3JpZ2h0
SGFzQXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKSkgewogICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShyZXN1bHQuZ2V0KCksIGxvY2FsLmdldCgp
KTsKICAgICAgICAgICAgIGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIHJlc3Vs
dC5nZXQoKSwgcmVzdWx0LmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5kVHlwZXMo
UmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7
CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxpbmcoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TW92ZShsb2NhbC5nZXQoKSwgcmVzdWx0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVy
biBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHJlc3VsdC5nZXQoKSk7
CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZW1p
dFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgbG9jYWwuZ2V0KCksIGxvY2FsLmdldCgp
LCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5
cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAgICAgICAgIHJldHVybiBnZW5l
cmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHJlc3VsdCk7CiAgICAgfQogCi0g
ICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyBtX2lkZW50Lmxlbmd0
aCgpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obmV3RGl2b3QsIGRpdm90U3Rh
cnQoKSwgbmV3RGl2b3QpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRv
ci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgbV9pZGVudCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgbV9pZGVudCwgVGhyb3dJZk5v
dEZvdW5kKTsKQEAgLTE0NDMsOSArMTQ1MCwxMSBAQCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZl
Tm9kZTo6ZW1pdEJ5dGVjCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0
aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0
LCBtX3JpZ2h0KTsKICAgICAgICAgfQotICAgICAgICBpZiAobG9jYWwuaXNDYXB0dXJlZCgpKSB7
CisgICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzR2VuZXJhdGlu
Z0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGVtcERzdC5nZXQoKSwgbV9yaWdodCk7CisgICAgICAg
ICAgICBpZiAoZ2VuZXJhdG9yLmlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmco
KSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1v
dmUobG9jYWwuZ2V0KCksIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVy
YXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgdGVtcERzdC5nZXQoKSk7CiAgICAg
ICAgIH0KQEAgLTE1NDgsMTIgKzE1NTcsMTMgQEAgUmVnaXN0ZXJJRCogQ29uc3REZWNsTm9kZTo6
ZW1pdENvZGVTaW5nbAogICAgICAgICBpZiAoIW1faW5pdCkKICAgICAgICAgICAgIHJldHVybiBs
b2NhbC5nZXQoKTsKIAotICAgICAgICBpZiAobG9jYWwuaXNDYXB0dXJlZCgpKSB7CisgICAgICAg
IC8vVE9ETzogbWF5YmUgcHV0IGVtaXRFeHByZXNzaW9uSW5mbyBoZXJlCisgICAgICAgIGlmIChs
b2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5
cGVQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3Qg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUodGVtcERzdC5nZXQoKSwgbV9pbml0KTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdE1vdmUobG9jYWwuZ2V0KCksIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9Ci0gICAgICAg
IAorCiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUobG9jYWwuZ2V0KCksIG1faW5p
dCk7CiAgICAgfQogCkBAIC0xODcxLDcgKzE4ODEsOCBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuCiAgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50ID0gc2ltcGxl
QmluZGluZy0+Ym91bmRQcm9wZXJ0eSgpOwogICAgICAgICAgICAgTG9jYWwgbG9jYWwgPSBnZW5l
cmF0b3IubG9jYWwoaWRlbnQpOwogICAgICAgICAgICAgcHJvcGVydHlOYW1lID0gbG9jYWwuZ2V0
KCk7Ci0gICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZSB8fCBsb2NhbC5pc0NhcHR1cmVkKCkp
CisgICAgICAgICAgICAvL1RPRE86IG1heWJlIGVtaXQgZXhwcmVzc2lvbiBpbmZvPz8/CisgICAg
ICAgICAgICBpZiAoIXByb3BlcnR5TmFtZSB8fCBsb2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJh
dG9yLmlzR2VuZXJhdGluZ0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmcoKSkKICAgICAgICAgICAg
ICAgICBnb3RvIGdlbmVyaWNCaW5kaW5nOwogICAgICAgICAgICAgZXhwZWN0ZWRTdWJzY3JpcHQg
PSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLnB1c2hPcHRpbWlzZWRGb3JJbihleHBlY3RlZFN1
YnNjcmlwdC5nZXQoKSwgaXRlci5nZXQoKSwgaS5nZXQoKSwgcHJvcGVydHlOYW1lKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNzAxODYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkhlYXBS
b290VmlzaXRvci5oIgogI2luY2x1ZGUgIkhlYXBTdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAiSGln
aEZpZGVsaXR5TG9nLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtOTY5LDYg
Kzk3MCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3QKICNpZiBF
TkFCTEUoQUxMT0NBVElPTl9MT0dHSU5HKQogICAgIGRhdGFMb2dGKCJKU0MgR0Mgc3RhcnRpbmcg
Y29sbGVjdGlvbi5cbiIpOwogI2VuZGlmCisgICAgdm0oKS0+aGlnaEZpZGVsaXR5TG9nKCktPnBy
b2Nlc3NIaWdoRmlkZWxpdHlMb2coKTsKICAgICAKICAgICBkb3VibGUgYmVmb3JlID0gMDsKICAg
ICBpZiAoT3B0aW9uczo6bG9nR0MoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuY3BwCShyZXZpc2lvbiAxNzAxODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTEsNiArMTkxLDE0IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpydW4oRXJyb3JTdHIK
IHsKIH0KIAordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFy
aWFibGVJblRleHRSYW5nZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5fdmFyaWFibGVO
YW1lLCBjb25zdCBTdHJpbmcmIGluX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5fc3RhcnRMaW5lLCBpbnQg
aW5fc3RhcnRDb2x1bW4sIGludCBpbl9lbmRMaW5lLCBpbnQgaW5fZW5kQ29sdW1uLCBTdHJpbmcq
IG91dF90eXBlcykgCit7CisgICAgVk0mIHZtID0gZ2xvYmFsVk0oKTsKKyAgICBTdHJpbmcgdHlw
ZXModm0uZ2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UoaW5fc3RhcnRMaW5lLCBpbl9zdGFydENv
bHVtbiwgaW5fZW5kTGluZSwgaW5fZW5kQ29sdW1uLCBpbl92YXJpYWJsZU5hbWUsIGluX2lkKSk7
CisgICAgKm91dF90eXBlcyA9IHR5cGVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
IAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuaAkocmV2aXNpb24gMTcwMTg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3duUHJvcGVydGll
cywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIG92ZXJy
aWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0
dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdl
dFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZShFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgaW5fdmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGluX2lkLCBpbnQgaW5fc3RhcnRM
aW5lLCBpbnQgaW5fc3RhcnRDb2x1bW4sIGludCBpbl9lbmRMaW5lLCBpbnQgaW5fZW5kQ29sdW1u
LCBTdHJpbmcqIG91dF90eXBlcykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFNjcmlwdERlYnVn
U2VydmVyKFNjcmlwdERlYnVnU2VydmVyKiBzY3JpcHREZWJ1Z1NlcnZlcikgeyBtX3NjcmlwdERl
YnVnU2VydmVyID0gc2NyaXB0RGVidWdTZXJ2ZXI7IH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24JKHJldmlz
aW9uIDE3MDE4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
UnVudGltZS5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDIxIEBACiAgICAgICAg
IHsKICAgICAgICAgICAgICJuYW1lIjogImRpc2FibGUiLAogICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkRpc2FibGVzIHJlcG9ydGluZyBvZiBleGVjdXRpb24gY29udGV4dHMgY3JlYXRpb24u
IgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJnZXRSdW50aW1l
VHlwZUZvclZhcmlhYmxlSW5UZXh0UmFuZ2UiLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBb
CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2YXJpYWJsZU5hbWUiLCAidHlwZSI6ICJzdHJp
bmciLCAiZGVzY3JpcHRpb24iOiAiVmFyaWFibGUgd2Ugd2FudCB0eXBlIGluZnJvbWF0aW9uIGZv
ci4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzb3VyY2VJRCIsICJ0eXBlIjogInN0
cmluZyIsICJkZXNjcmlwdGlvbiI6ICJzb3VyY2VJRCB1bmlxdWVseSBpZGVudGlmeWluZyBhIHNj
cmlwdCIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXJ0TGluZSIsICJ0eXBlIjog
ImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAic3RhcnQgbGluZSBmb3IgdmFyaWFibGUgbmFtZSIg
fSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXJ0Q29sdW1uIiwgInR5cGUiOiAiaW50
ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJzdGFydCBjb2x1bW4gZm9yIHZhcmlhYmxlIG5hbWUiIH0s
CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRMaW5lIiwgInR5cGUiOiAiaW50ZWdlciIs
ICJkZXNjcmlwdGlvbiI6ICJlbmQgbGluZSBmb3IgdmFyaWFibGUgbmFtZSIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImVuZENvbHVtbiIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3Jp
cHRpb24iOiAiZW5kIGNvbHVtbiBmb3IgdmFyaWFibGUgbmFtZSIgfQorICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlw
ZXMiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVHlwZXMgZm9yIHJlcXVlc3Rl
ZCB2YXJpYWJsZS4iIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiUmV0dXJucyBkZXRhaWxlZCBpbmZvcm10YXRpb24gb24gZ2l2ZW4gZnVuY3Rpb24uIgogICAg
ICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNzAxODYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxvZy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpAQCAtMTY3LDcg
KzE2OCwzMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAgICAgRXhl
Y1N0YXRlKiBfX3JjZl9leGVjID0gKGV4ZWNDYWxsZWUpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgX19yY2ZfZXhlYyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKLSAgICAKKworI2Rl
ZmluZSBMTElOVF9QVVRfVE9fU0NPUEVfQ09NTU9OKCkgXAorICAgIExMSU5UX0JFR0lOKCk7IFwK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOyBcCisgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKTsgXAorICAgIEpTT2JqZWN0KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+KExMSU5UX09Q
KDEpLmpzVmFsdWUoKSk7IFwKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCk7IFwKKyAgICBSZXNvbHZlTW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUgPSBSZXNvbHZlTW9k
ZUFuZFR5cGUocGNbNF0udS5vcGVyYW5kKTsgXAorIFwKKyAgICBpZiAobW9kZUFuZFR5cGUubW9k
ZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhc2NvcGUtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50
KSkgXAorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4
ZWMsIGlkZW50KSk7IFwKKyBcCisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpOyBcCisgICAgc2NvcGUtPm1ldGhvZFRhYmxlKCktPnB1dChz
Y29wZSwgZXhlYywgaWRlbnQsIHZhbHVlLCBzbG90KTsgXAorIFwKKyAgICAvKiBDb3ZlcnMgaW1w
bGljaXQgZ2xvYmFscy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4
ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4q
LyAgXAorICAgIGlmIChtb2RlQW5kVHlwZS50eXBlKCkgPT0gR2xvYmFsUHJvcGVydHkgfHwgbW9k
ZUFuZFR5cGUudHlwZSgpID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykg
eyBcCisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlUHV0KCkgJiYgc2xvdC5iYXNlKCkgPT0g
c2NvcGUgJiYgc2NvcGUtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxl
KCkpIHsgXAorICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoY29kZUJsb2Nr
LT5tX2xvY2spOyBcCisgICAgICAgICAgICBwY1s1XS51LnN0cnVjdHVyZS5zZXQoZXhlYy0+dm0o
KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc2NvcGUtPnN0cnVjdHVyZSgpKTsgXAor
ICAgICAgICAgICAgcGNbNl0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsgXAorICAg
ICAgICB9IFwKKyAgICB9IFwKKwogCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGlu
dF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJv
bVdoZXJlLCBpbnQgb3BlcmFuZCkKIHsKQEAgLTUzMyw2ICs1NTcsMTUgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25ld19yZWdleAogICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmpl
Y3Q6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1
cmUoKSwgcmVnRXhwKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcm9m
aWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSBwY1syXS51LmxvY2F0aW9uOworICAgIEpTVmFsdWUg
diA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIHZtLmhpZ2hGaWRlbGl0eUxvZygpLT5y
ZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbih2LCBsb2NhdGlvbik7CisgICAgTExJTlRf
RU5EX0lNUEwoKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hh
c19pbnN0YW5jZSkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTQyNiwzMCArMTQ1OSwyMCBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgTExJTlRfUkVU
VVJOKHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpKTsKIH0KIAorCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlKQogewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwot
ICAgIEpTT2JqZWN0KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+KExMSU5UX09QKDEpLmpzVmFs
dWUoKSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOwotICAg
IFJlc29sdmVNb2RlQW5kVHlwZSBtb2RlQW5kVHlwZSA9IFJlc29sdmVNb2RlQW5kVHlwZShwY1s0
XS51Lm9wZXJhbmQpOwotCi0gICAgaWYgKG1vZGVBbmRUeXBlLm1vZGUoKSA9PSBUaHJvd0lmTm90
Rm91bmQgJiYgIXNjb3BlLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCkpCi0gICAgICAgIExMSU5U
X1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKLQotICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsK
LSAgICBzY29wZS0+bWV0aG9kVGFibGUoKS0+cHV0KHNjb3BlLCBleGVjLCBpZGVudCwgdmFsdWUs
IHNsb3QpOwotCi0gICAgLy8gQ292ZXJzIGltcGxpY2l0IGdsb2JhbHMuIFNpbmNlIHRoZXkgZG9u
J3QgZXhpc3QgdW50aWwgdGhleSBmaXJzdCBleGVjdXRlLCB3ZSBkaWRuJ3Qga25vdyBob3cgdG8g
Y2FjaGUgdGhlbSBhdCBjb21waWxlIHRpbWUuCi0gICAgaWYgKG1vZGVBbmRUeXBlLnR5cGUoKSA9
PSBHbG9iYWxQcm9wZXJ0eSB8fCBtb2RlQW5kVHlwZS50eXBlKCkgPT0gR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlUHV0
KCkgJiYgc2xvdC5iYXNlKCkgPT0gc2NvcGUgJiYgc2NvcGUtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0
eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIHBjWzVdLnUuc3RydWN0
dXJlLnNldChleGVjLT52bSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzY29wZS0+
c3RydWN0dXJlKCkpOwotICAgICAgICAgICAgcGNbNl0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRP
ZmZzZXQoKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBMTElOVF9QVVRfVE9fU0NPUEVfQ09NTU9O
KCk7CisgICAgTExJTlRfRU5EKCk7Cit9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlKQoreworICAgIC8vIHB1dF90b19zY29wZV93aXRo
X3Byb2ZpbGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVzb2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUs
IE9wZXJhbmQsIFR5cGVMb2NhdGlvbioKKyAgICBMTElOVF9QVVRfVE9fU0NPUEVfQ09NTU9OKCk7
CisgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHBjWzddLnUubG9jYXRpb247CisgICAgSlNW
YWx1ZSB2ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgdm0uaGlnaEZpZGVsaXR5TG9n
KCktPnJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9uKHYsIGxvY2F0aW9uKTsKICAgICBM
TElOVF9FTkQoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDE3MDE4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDgg
QEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYQogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fc2NvcGUpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpOworTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlKTsKK0xMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlk
ZWxpdHkpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tf
b3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKICNpZiBF
TkFCTEUoTExJTlRfQ19MT09QKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
c3RhY2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHJldmlzaW9uIDE3MDE4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTIzMiwzICsxMjMy
LDExIEBAIGVuZAogX2xsaW50X29wX2luaXRfZ2xvYmFsX2NvbnN0X25vcDoKICAgICBkaXNwYXRj
aCg1KQogCitfbGxpbnRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CisgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlk
ZWxpdHkpCisgICAgZGlzcGF0Y2goNCkKKworX2xsaW50X29wX3B1dF90b19zY29wZV93aXRoX3By
b2ZpbGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGUpCisgICAgZGlzcGF0Y2goOCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRl
bGl0eUxvZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxvZy5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KKworCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBIaWdoRmlkZWxpdHlMb2c6OmluaXRp
YWxpemVIaWdoRmlkZWxpdHlMb2coKQoreworICAgIEFTU0VSVCghbV9sb2dTdGFydFB0cik7Cisg
ICAgbV9oaWdoRmlkZWxpdHlMb2dTaXplID0gMjUwMDA7CisgICAgbV9sb2dTdGFydFB0ciA9IChM
b2czVHVwbGUqKikgbWFsbG9jKHNpemVvZihMb2czVHVwbGUqKSAqIG1faGlnaEZpZGVsaXR5TG9n
U2l6ZSk7CisgICAgbV9uZXh0QnVmZmVyID0gKExvZzNUdXBsZSoqKSBtYWxsb2Moc2l6ZW9mKExv
ZzNUdXBsZSopICogbV9oaWdoRmlkZWxpdHlMb2dTaXplKTsKKyAgICBMb2czVHVwbGUqKiBwMSA9
IG1fbG9nU3RhcnRQdHI7CisgICAgTG9nM1R1cGxlKiogcDIgPSBtX25leHRCdWZmZXI7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsgaSsrKSB7Cisg
ICAgICAgICpwMSA9IG5ldyBMb2czVHVwbGU7IAorICAgICAgICAqcDIgPSBuZXcgTG9nM1R1cGxl
OyAKKyAgICAgICAgcDErKzsKKyAgICAgICAgcDIrKzsKKyAgICB9CisKKyAgICBtX2N1cnJlbnRP
ZmZzZXQgPSAwOworfQorCitIaWdoRmlkZWxpdHlMb2c6On5IaWdoRmlkZWxpdHlMb2coKQorewor
ICAgIExvZzNUdXBsZSoqIHAxID0gbV9sb2dTdGFydFB0cjsKKyAgICBMb2czVHVwbGUqKiBwMiA9
IG1fbmV4dEJ1ZmZlcjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faGlnaEZpZGVsaXR5
TG9nU2l6ZTsgaSsrKSB7CisgICAgICAgIGRlbGV0ZSAqcDE7CisgICAgICAgIGRlbGV0ZSAqcDI7
CisgICAgICAgIHAxKys7CisgICAgICAgIHAyKys7CisgICAgfQorCisgICAgZnJlZShtX2xvZ1N0
YXJ0UHRyKTsKKyAgICBmcmVlKG1fbmV4dEJ1ZmZlcik7Cit9CisKK3ZvaWQgSGlnaEZpZGVsaXR5
TG9nOjpyZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbihKU1ZhbHVlIHYsIFR5cGVMb2Nh
dGlvbiogbG9jYXRpb24pCit7CisgICAgQVNTRVJUKG1fbG9nU3RhcnRQdHIpOworICAgIEFTU0VS
VChtX2N1cnJlbnRPZmZzZXQgPCBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUpOworCisgICAgTG9nM1R1
cGxlKiB0dXBsZSA9ICoobV9sb2dTdGFydFB0ciArIG1fY3VycmVudE9mZnNldCk7CisKKyAgICB0
dXBsZS0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICB0dXBsZS0+dmFsdWUgPSB2OworICAgIC8v
dHVwbGUtPnN0cnVjdHVyZUlEID0gKHYuaXNDZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJ
RCgpIDogMCk7IC8vMCBpcyBpbnZhbGlkIHN0cnVjdHVyZUlECisgICAgdHVwbGUtPnN0cnVjdHVy
ZSA9ICh2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCkgOiBudWxscHRyKTsgLy8w
IGlzIGludmFsaWQgc3RydWN0dXJlSUQKKworICAgIG1fY3VycmVudE9mZnNldCArPSAxOworICAg
IGlmIChtX2N1cnJlbnRPZmZzZXQgPT0gbV9oaWdoRmlkZWxpdHlMb2dTaXplKQorICAgICAgICBw
cm9jZXNzSGlnaEZpZGVsaXR5TG9nKHRydWUpOworfQorCit2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6
cHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyhib29sIG9uU2VwYXJhdGVUaHJlYWQpCit7CisgICAgLy90
aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIGV4ZWN1dGlvbiB0aHJlYWQu
CisKKyAgICBpZiAoIW1fY3VycmVudE9mZnNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQnl0
ZVNwaW5Mb2NrZXIqIGxvY2tlciA9IG5ldyBCeXRlU3BpbkxvY2tlcihtX2xvY2spOworICAgIFRo
cmVhZERhdGEqIGRhdGEgPSBuZXcgVGhyZWFkRGF0YTsKKyAgICBkYXRhLT5wcm9jY2Vzc0xvZ1Rv
T2Zmc2V0ID0gbV9jdXJyZW50T2Zmc2V0OworICAgIGRhdGEtPnByb2Nlc3NMb2dQdHIgPSBtX2xv
Z1N0YXJ0UHRyOworICAgIGRhdGEtPmxvY2tlciA9IGxvY2tlcjsKKworICAgIG1fY3VycmVudE9m
ZnNldCA9IDA7CisgICAgTG9nM1R1cGxlKiogdGVtcCA9IG1fbG9nU3RhcnRQdHI7CisgICAgbV9s
b2dTdGFydFB0ciA9IG1fbmV4dEJ1ZmZlcjsKKyAgICBtX25leHRCdWZmZXIgPSB0ZW1wOworICAg
IAorICAgIGlmIChvblNlcGFyYXRlVGhyZWFkKQorICAgICAgICBjcmVhdGVUaHJlYWQoYWN0dWFs
bHlQcm9jZXNzTG9nVGhyZWFkRnVuY3Rpb24sIGRhdGEsICJQcm9jZXNzSGlnaEZpZGVsaXR5TG9n
Iik7CisgICAgZWxzZSAKKyAgICAgICAgYWN0dWFsbHlQcm9jZXNzTG9nVGhyZWFkRnVuY3Rpb24o
ZGF0YSk7Cit9CisKK3ZvaWQgSGlnaEZpZGVsaXR5TG9nOjphY3R1YWxseVByb2Nlc3NMb2dUaHJl
YWRGdW5jdGlvbih2b2lkKiBhcmcpCit7CisgICAgZG91YmxlIGJlZm9yZSAgPSBjdXJyZW50VGlt
ZU1TKCk7CisgICAgVGhyZWFkRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFRocmVhZERhdGEqPihh
cmcpOworICAgIExvZzNUdXBsZSoqIHB0ciA9IGRhdGEtPnByb2Nlc3NMb2dQdHI7OworICAgIHNp
emVfdCBwcm9jZXNzTG9nVG9PZmZzZXQgPSBkYXRhLT5wcm9jY2Vzc0xvZ1RvT2Zmc2V0OyAKKyAg
ICBzaXplX3QgaSA9IDA7CisgICAgd2hpbGUgKGkgPCBwcm9jZXNzTG9nVG9PZmZzZXQpIHsKKyAg
ICAgICAgTG9nM1R1cGxlKiB0dXBsZSA9ICpwdHI7CisgICAgICAgIC8vVE9ETzogTWF5YmUgYWJz
dHJhY3QgdGhpcyBhd2F5IGluIEhlYXAKKyAgICAgICAgLy90eXBlU2V0LT5hZGRUeXBlRm9yVmFs
dWUodHVwbGUtPnZhbHVlLCB0dXBsZS0+c3RydWN0dXJlSUQgPyBIZWFwOjpoZWFwKHR1cGxlLT52
YWx1ZSktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQodHVwbGUtPnN0cnVjdHVyZUlEKSA6IG51bGxw
dHIpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHR1cGxlLT5zdHJ1Y3R1cmUgPyB0
dXBsZS0+c3RydWN0dXJlIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKHR1cGxlLT5sb2NhdGlvbi0+
Z2xvYmFsVHlwZVNldCkKKyAgICAgICAgICAgIHR1cGxlLT5sb2NhdGlvbi0+Z2xvYmFsVHlwZVNl
dC0+YWRkVHlwZUZvclZhbHVlKHR1cGxlLT52YWx1ZSwgc3RydWN0dXJlKTsKKyAgICAgICAgdHVw
bGUtPmxvY2F0aW9uLT5pbnN0cnVjdGlvblR5cGVTZXQtPmFkZFR5cGVGb3JWYWx1ZSh0dXBsZS0+
dmFsdWUsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0cisrOworICAgICAgICBpKys7CisgICAgfQor
CisgICAgZGVsZXRlIGRhdGEtPmxvY2tlcjsKKyAgICBkZWxldGUgZGF0YTsKKyAgICBkb3VibGUg
YWZ0ZXIgPSBjdXJyZW50VGltZU1TKCk7CisgICAgcHJpbnRmKCJQcm9jZXNzIGxvZyAnJWYnIG1z
XG4iLCBhZnRlciAtIGJlZm9yZSk7Cit9CisKKworfSAvL25hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9n
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhpZ2hGaWRlbGl0eUxvZ19oCisjZGVm
aW5lIEhpZ2hGaWRlbGl0eUxvZ19oCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisj
aW5jbHVkZSA8d3RmL0J5dGVTcGluTG9jay5oPgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIGNs
YXNzIFR5cGVMb2NhdGlvbjsKKworY2xhc3MgSGlnaEZpZGVsaXR5TG9nIHsKKworcHVibGljOgor
CisgICAgc3RydWN0IExvZzNUdXBsZSB7CisgICAgICAgIHB1YmxpYzoKKworICAgICAgICBKU1Zh
bHVlIHZhbHVlOworICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uOyAvL1R5cGVMb2NhdGlv
biogYXJlIGFsbG9jYXRlZCBkdXJpbmcgbGluayB0aW1lIGluIGEgQ29kZUJsb2NrLiBUaGlzIGNv
ZGUgYXNzdW1lcyB0aGF0IG5vIGNvZGUgYmxvY2tzIGRpZSBiZWZvcmUgd2UgcHJvY2VzcyB0aGUg
bG9nLgorICAgICAgICAvL1N0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOworICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZTsKKyAgICB9OworCisgICAgSGlnaEZpZGVsaXR5TG9nKCkKKyAgICAgICAg
OiBtX2xvZ1N0YXJ0UHRyKDApCisgICAgeworICAgICAgICBpbml0aWFsaXplSGlnaEZpZGVsaXR5
TG9nKCk7CisgICAgfQorCisgICAgfkhpZ2hGaWRlbGl0eUxvZygpOworCisgICAgdm9pZCByZWNv
cmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbihKU1ZhbHVlIHYsIFR5cGVMb2NhdGlvbiopOwor
ICAgIHZvaWQgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyhib29sIG9uU2VwYXJhdGVUaHJlYWQgPSBm
YWxzZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0aWFsaXplSGlnaEZpZGVsaXR5TG9nKCk7
CisgICAgc3RhdGljIHZvaWQgYWN0dWFsbHlQcm9jZXNzTG9nVGhyZWFkRnVuY3Rpb24odm9pZCop
OworCisgICAgdW5zaWduZWQgbV9oaWdoRmlkZWxpdHlMb2dTaXplOworICAgIHNpemVfdCBtX2N1
cnJlbnRPZmZzZXQ7CisgICAgTG9nM1R1cGxlKiogbV9sb2dTdGFydFB0cjsKKyAgICBMb2czVHVw
bGUqKiBtX25leHRCdWZmZXI7CisKKyAgICBCeXRlU3BpbkxvY2sgbV9sb2NrOworCisgICAgc3Ry
dWN0IFRocmVhZERhdGEgeworICAgICAgICBwdWJsaWM6CisgICAgICAgIExvZzNUdXBsZSoqIHBy
b2Nlc3NMb2dQdHI7CisgICAgICAgIHNpemVfdCBwcm9jY2Vzc0xvZ1RvT2Zmc2V0OworICAgICAg
ICBCeXRlU3BpbkxvY2tlciogbG9ja2VyOworICAgIH07Cit9OworCit9IC8vbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy9IaWdoRmlkZWxpdHlMb2dfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIgorCisjaW5j
bHVkZSAiVHlwZUxvY2F0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTdHJpbmcgSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBz
dGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lICwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNl
SUQpCit7CisgICAgU3RyaW5nIGdsb2JhbCA9IGdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJh
bmdlKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdmFyaWFibGVO
YW1lLCBzb3VyY2VJRCk7CisgICAgaWYgKCFnbG9iYWwuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZ2xvYmFsOworICAgIAorICAgIHJldHVybiBnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVJblJh
bmdlKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdmFyaWFibGVO
YW1lLCBzb3VyY2VJRCk7Cit9CisKK1dURjo6U3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
cjo6Z2V0R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1
bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBXVEY6OlN0cmluZyYsIGludHB0cl90
IHNvdXJjZUlEKQoreworICAgIGF1dG8gaXRlciA9IG1fZ2xvYmFsTG9jYXRpb25Ub0dsb2JhbElE
TWFwLmZpbmQoZ2V0TG9jYXRpb25CYXNlZEhhc2goc291cmNlSUQsIHN0YXJ0TGluZSkpOworICAg
IGF1dG8gZW5kID0gbV9nbG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXAuZW5kKCk7CisgICAgaWYg
KGl0ZXIgPT0gZW5kKQorICAgICAgICByZXR1cm4gIiI7CisKKyAgICBhdXRvIGl0ZXIyID0gbV9n
bG9iYWxJRE1hcC5maW5kKGl0ZXItPnZhbHVlKTsKKyAgICBhdXRvIGVuZDIgPSBtX2dsb2JhbElE
TWFwLmVuZCgpOworICAgIGlmIChpdGVyMiA9PSBlbmQyKQorICAgICAgICByZXR1cm4gIiI7CisK
KyAgICByZXR1cm4gaXRlcjItPnZhbHVlLT5zZWVuVHlwZXMoKTsKK30KKworV1RGOjpTdHJpbmcg
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdl
KHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgLCB1bnNpZ25lZCAsIHVuc2lnbmVkICwgY29u
c3QgV1RGOjpTdHJpbmcmICwgaW50cHRyX3Qgc291cmNlSUQpCit7CisgICAgYXV0byBpdGVyID0g
bV9nbG9iYWxMb2NhdGlvbk1hcC5maW5kKGdldExvY2F0aW9uQmFzZWRIYXNoKHNvdXJjZUlELCBz
dGFydExpbmUpKTsKKyAgICBhdXRvIGVuZCA9IG1fZ2xvYmFsTG9jYXRpb25NYXAuZW5kKCk7Cisg
ICAgaWYgKGl0ZXIgPT0gZW5kKQorICAgICAgICByZXR1cm4gICIiOworCisgICAgcmV0dXJuIGl0
ZXItPnZhbHVlLT5zZWVuVHlwZXMoKTsKK30KKwordm9pZCBIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXI6OnJlZ2lzdGVyTG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2NhdGlvbikKK3sKKyAgICBTdHJp
bmcgaGFzaFN0cmluZyhnZXRMb2NhdGlvbkJhc2VkSGFzaChsb2NhdGlvbi0+c291cmNlSUQsIGxv
Y2F0aW9uLT5saW5lKSk7CisKKyAgICBpZiAobG9jYXRpb24tPmdsb2JhbFZhcmlhYmxlSUQgIT0g
SGlnaEZpZGVsaXR5Tm9HbG9iYWxJREV4aXN0cykgeyAvL2J1aWxkIHRoZSByZWxhdGlvbnNoaXAg
TWFwOmhhc2hTdHJpbmc9Pmdsb2JhbElkLCBNYXAyOmdsb2JhbElEPT5UeXBlU2V0IAorICAgICAg
ICBBU1NFUlQobV9nbG9iYWxJRE1hcC5pc1ZhbGlkS2V5KGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJs
ZUlEKSk7CisgICAgICAgIG1fZ2xvYmFsSURNYXAuc2V0KGxvY2F0aW9uLT5nbG9iYWxWYXJpYWJs
ZUlELCBsb2NhdGlvbi0+Z2xvYmFsVHlwZVNldCk7CisgICAgICAgIG1fZ2xvYmFsTG9jYXRpb25U
b0dsb2JhbElETWFwLnNldChoYXNoU3RyaW5nLCBsb2NhdGlvbi0+Z2xvYmFsVmFyaWFibGVJRCk7
CisgICAgfQorCisgICAgQVNTRVJUKG1fZ2xvYmFsTG9jYXRpb25NYXAuaXNWYWxpZEtleShoYXNo
U3RyaW5nKSk7CisgICAgbV9nbG9iYWxMb2NhdGlvbk1hcC5zZXQoaGFzaFN0cmluZywgbG9jYXRp
b24tPmluc3RydWN0aW9uVHlwZVNldCk7Cit9CisKK1dURjo6U3RyaW5nIEhpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlcjo6Z2V0TG9jYXRpb25CYXNlZEhhc2goaW50cHRyX3QgaWQsIHVuc2lnbmVkIGxp
bmUpCit7CisgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGlkKSArIFN0cmluZygiOiIpICsgU3Ry
aW5nOjpudW1iZXIobGluZSk7Cit9CisKKworfSAvL25hbWVzcGFjZSBKU0MKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJfaAorI2RlZmluZSBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXJfaAorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKKyAgICBjbGFzcyBUeXBlTG9jYXRpb247CisKKworY2xhc3MgSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyIHsKKworcHVibGljOgorCisgICAgV1RGOjpTdHJpbmcgZ2V0VHlwZXNGb3JWYXJp
YWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBXVEY6OlN0cmluZyYgdmFy
aWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7CisgICAgV1RGOjpTdHJpbmcgZ2V0R2xvYmFs
VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBXVEY6
OlN0cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7CisgICAgV1RGOjpTdHJp
bmcgZ2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IGNvbnN0IFdURjo6U3RyaW5nJiB2YXJpYWJsZU5hbWUsIGludHB0cl90IHNvdXJjZUlEKTsKKyAg
ICB2b2lkIHJlZ2lzdGVyTG9jYXRpb24oVHlwZUxvY2F0aW9uKik7CisgICAgCitwcml2YXRlOgor
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBnZXRMb2NhdGlvbkJhc2VkSGFzaChpbnRwdHJfdCwgdW5z
aWduZWQpOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6U3RyaW5nLCBUeXBlU2V0Kj4gR2xv
YmFsTG9jYXRpb25NYXA7IC8vKGZvciBub3csIGhhY2sgaXQgYW5kIHNheSBNYXA6ICJJRDpMaW5l
IiA9PiBUeXBlU2V0LiBPYnZpb3VzbHksIHRoaXMgYXNzdW1lcyBhbGwgYXNzaWdubWVudHMgYXJl
IG9uIGRpc2NyZXRlIGxpbmVzKS4KKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50NjRfdCwgVHlwZVNl
dCo+IEdsb2JhbElETWFwOyAKKyAgICB0eXBlZGVmIEhhc2hNYXA8V1RGOjpTdHJpbmcsIGludDY0
X3Q+IEdsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcDsKKworICAgIEdsb2JhbElETWFwIG1fZ2xv
YmFsSURNYXA7CisgICAgR2xvYmFsTG9jYXRpb25NYXAgbV9nbG9iYWxMb2NhdGlvbk1hcDsKKyAg
ICBHbG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXAgbV9nbG9iYWxMb2NhdGlvblRvR2xvYmFsSURN
YXA7Cit9OworCisKK30gLy9uYW1lc3BhY2UgSlNDCisKKworI2VuZGlmIC8vSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAkocmV2aXNpb24gMTcwMTg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNyArMjcxLDkgQEAgdHlwZWRlZiBjb25z
dCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdihib29sLCBkaXNhYmxlR0MsIGZhbHNlKSBcCiAg
ICAgdih1bnNpZ25lZCwgZ2NNYXhIZWFwU2l6ZSwgMCkgXAogICAgIHYoYm9vbCwgcmVjb3JkR0NQ
YXVzZVRpbWVzLCBmYWxzZSkgXAotICAgIHYoYm9vbCwgbG9nSGVhcFN0YXRpc3RpY3NBdEV4aXQs
IGZhbHNlKQorICAgIHYoYm9vbCwgbG9nSGVhcFN0YXRpc3RpY3NBdEV4aXQsIGZhbHNlKSBcCisg
ICAgdihib29sLCBwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5LCBmYWxzZSkKKyAgICAKIAog
Y2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE3MDE4NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTIsNiAr
MTA1MiwzOCBAQCBib29sIFN0cnVjdHVyZTo6cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlCiAgICAg
fQogfQogCisKK1N0cnVjdHVyZVNoYXBlIFN0cnVjdHVyZTo6dG9TdHJ1Y3R1cmVTaGFwZSgpCit7
CisgICAgVmVjdG9yPFN0cnVjdHVyZSosIDg+IHN0cnVjdHVyZXM7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmU7CisgICAgUHJvcGVydHlUYWJsZSogdGFibGU7CisgICAgU3RydWN0dXJlU2hhcGUg
cmVwcmVzZW50YXRpb247CisKKyAgICBmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXph
dGlvbihzdHJ1Y3R1cmVzLCBzdHJ1Y3R1cmUsIHRhYmxlKTsKKyAgICAKKyAgICBpZiAodGFibGUp
IHsKKyAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLT5iZWdpbigp
OworICAgICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS0+ZW5kKCk7CisK
KyAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIHJlcHJl
c2VudGF0aW9uLm1fcHJvcGVydGllcy5hcHBlbmQoaXRlci0+a2V5KTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgc3RydWN0dXJlLT5tX2xvY2sudW5sb2NrKCk7CisgICAgfQorICAgIAor
ICAgIGZvciAodW5zaWduZWQgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKKyAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICByZXByZXNlbnRhdGlvbi5tX3Byb3BlcnRpZXMuYXBwZW5kKHN0cnVjdHVyZS0+bV9uYW1lSW5Q
cmV2aW91cy5nZXQoKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uOworfQor
CiB2b2lkIFN0cnVjdHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91
dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOlsiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAi
LCB7Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAko
cmV2aXNpb24gMTcwMTg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5MCw2ICszOTAsOCBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsKICAgICB9CisKKyAgICBT
dHJ1Y3R1cmVTaGFwZSB0b1N0cnVjdHVyZVNoYXBlKCk7CiAgICAgCiAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwg
RHVtcENvbnRleHQqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5jcHAJKHJldmlzaW9uIDE3MDE4NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYg
KzEwMywxMSBAQCBTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGUoVk0mIHZtKQogICAgICwgbV9jYXB0
dXJlRW5kKDApCiAgICAgLCBtX2Z1bmN0aW9uRW50ZXJlZE9uY2UoQ2xlYXJXYXRjaHBvaW50KQog
eworICAgIGlmICh2bS5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAg
ICAgIG1fdW5pcXVlSURNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaXF1ZUlETWFwPigpOworICAg
ICAgICBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0ZXJU
b1ZhcmlhYmxlTWFwPigpOworICAgICAgICBtX3VuaXF1ZVR5cGVTZXRNYXAgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFVuaXF1ZVR5cGVTZXRNYXA+KCk7CisgICAgfQogfQogCiBTeW1ib2xUYWJsZTo6flN5
bWJvbFRhYmxlKCkgeyB9CkBAIC0xNTcsOSArMTYyLDY5IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xU
YWJsZTo6Y2xvbmVDYXB0dXJlZE4KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcGFyYW1ldGVy
Q291bnQoKTsgaS0tOykKICAgICAgICAgICAgIHJlc3VsdC0+bV9zbG93QXJndW1lbnRzW2ldID0g
bV9zbG93QXJndW1lbnRzW2ldOwogICAgIH0KKworCisgICAgaWYgKG1fdW5pcXVlSURNYXAgJiYg
cmVzdWx0LT5tX3VuaXF1ZUlETWFwKSB7CisKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBp
dGVyID0gbV91bmlxdWVJRE1hcC0+YmVnaW4oKTsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gbV91
bmlxdWVJRE1hcC0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRl
cikKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fdW5pcXVlSURNYXAtPnNldChpdGVyLT5rZXks
IGl0ZXItPnZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8g
aXRlciA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5iZWdpbigpOworICAgICAgICAgICAgYXV0
byBlbmQgPSBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcC0+ZW5kKCk7CisgICAgICAgICAgICBmb3Ig
KDsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmVnaXN0
ZXJUb1ZhcmlhYmxlTWFwLT5zZXQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSk7CisgICAgICAgIH0K
KyAgICB9CisKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitpbnQ2NF90IFN5bWJvbFRh
YmxlOjp1bmlxdWVJREZvclZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJp
bmdJbXBsKiBrZXksIFZNJiB2bSkKK3sKKyAgICBhdXRvIGl0ZXIgPSBtX3VuaXF1ZUlETWFwLT5m
aW5kKGtleSk7CisgICAgYXV0byBlbmQgPSBtX3VuaXF1ZUlETWFwLT5lbmQoKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGVuZCwgaXRlciAhPSBlbmQpOworCisgICAgaW50NjRfdCYgaWQgPSBpdGVyLT52
YWx1ZTsKKyAgICBpZiAoaWQgPT0gSGlnaEZpZGVsaXR5TmVlZHNVbmlxdWVJREdlbmVyYXRpb24p
IHsKKyAgICAgICAgaWQgPSB2bS5nZXROZXh0VW5pcXVlVmFyaWFibGVJRCgpOworICAgICAgICBt
X3VuaXF1ZVR5cGVTZXRNYXAtPnNldChrZXksIG5ldyBUeXBlU2V0KTsgLy9tYWtlIGEgbmV3IGds
b2JhbCB0eXBlc2V0IGZvciB0aGUgSUQKKyAgICB9CisgICAgICAgICAKKyAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBUeXBlU2V0Kj4gVW5pcXVlVHlwZVNldE1hcDsKKwor
ICAgIHJldHVybiBpZDsKK30KKworaW50NjRfdCBTeW1ib2xUYWJsZTo6dW5pcXVlSURGb3JSZWdp
c3Rlcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIGludCByZWdpc3RlckluZGV4
LCBWTSYgdm0pCit7CisgICAgYXV0byBpdGVyID0gbV9yZWdpc3RlclRvVmFyaWFibGVNYXAtPmZp
bmQocmVnaXN0ZXJJbmRleCk7CisgICAgYXV0byBlbmQgPSBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1h
cC0+ZW5kKCk7CisgICAgQVNTRVJUX1VOVVNFRChlbmQsIGl0ZXIgIT0gZW5kKTsKKyAgICByZXR1
cm4gdW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGl0ZXItPnZhbHVlLmdldCgpLCB2bSk7Cit9
CisKK1R5cGVTZXQqIFN5bWJvbFRhYmxlOjpnbG9iYWxUeXBlU2V0Rm9yUmVnaXN0ZXIoY29uc3Qg
Q29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBpbnQgcmVnaXN0ZXJJbmRleCwgVk0mIHZtKQor
eworICAgIHVuaXF1ZUlERm9yUmVnaXN0ZXIobG9ja2VyLCByZWdpc3RlckluZGV4LCB2bSk7IC8v
ZW5zdXJlIGl0J3MgY3JlYXRlZAorICAgIGF1dG8gaXRlciA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxl
TWFwLT5maW5kKHJlZ2lzdGVySW5kZXgpOworICAgIGF1dG8gZW5kID0gbV9yZWdpc3RlclRvVmFy
aWFibGVNYXAtPmVuZCgpOworICAgIEFTU0VSVF9VTlVTRUQoZW5kLCBpdGVyICE9IGVuZCk7Cisg
ICAgcmV0dXJuIGdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGl0ZXItPnZhbHVlLmdl
dCgpLCB2bSk7Cit9CisKK1R5cGVTZXQqIFN5bWJvbFRhYmxlOjpnbG9iYWxUeXBlU2V0Rm9yVmFy
aWFibGUoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBTdHJpbmdJbXBsKiBrZXks
IFZNJiB2bSkKK3sKKyAgICB1bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwga2V5LCB2bSk7Cisg
ICAgcmV0dXJuIG1fdW5pcXVlVHlwZVNldE1hcC0+ZmluZChrZXkpLT52YWx1ZTsKK30KKworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNzAxODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisjaW5jbHVkZSAiVHlwZVNldC5oIgogI2luY2x1ZGUgIlZhcmlhYmxlV2F0Y2hwb2ludFNldC5o
IgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgpAQCAtMzM2
LDYgKzMzNyw5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgU3ltYm9sVGFibGVFbnRyeSwgSWRlbnRp
ZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFN0cmluZ0ltcGw+PiwgU3ltYm9sVGFibGVJ
bmRleEhhc2hUcmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0lt
cGw+LCBpbnQ2NF90PiBVbmlxdWVJRE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0
cmluZ0ltcGw+LCBUeXBlU2V0Kj4gVW5pcXVlVHlwZVNldE1hcDsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8aW50LCBSZWZQdHI8U3RyaW5nSW1wbD4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IFJlZ2lzdGVyVG9WYXJpYWJsZU1hcDsKIAog
ICAgIHN0YXRpYyBTeW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKICAgICB7CkBAIC00MTMsNiAr
NDE3LDEyIEBAIHB1YmxpYzoKICAgICAKICAgICBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgQ29u
Y3VycmVudEpJVExvY2tlciYsIFN0cmluZ0ltcGwqIGtleSwgY29uc3QgU3ltYm9sVGFibGVFbnRy
eSYgZW50cnkpCiAgICAgeworICAgICAgICAvL3VzZSAtMSBhcyBhIGZsYWcgdG8gaW5kaWNhdGUg
d2UgbmVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIElEIGJlY2F1c2Ugd2UgbmVlZCB0aGUgVk0gdG8g
ZG8gdGhpcy4gCisgICAgICAgIC8vV2hlbiBsaW5raW5nLCB3ZSBjYW4gcHJvZHVjZSB0aGlzIHVu
aXF1ZSBJRCBhcyB3ZSBoYXZlIGFjY2VzcyB0byBWTQorICAgICAgICBpZiAobV91bmlxdWVJRE1h
cCkgeworICAgICAgICAgICAgbV91bmlxdWVJRE1hcC0+c2V0KGtleSwgSGlnaEZpZGVsaXR5TmVl
ZHNVbmlxdWVJREdlbmVyYXRpb24pOyAKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJUb1ZhcmlhYmxl
TWFwLT5zZXQoZW50cnkuZ2V0SW5kZXgoKSwga2V5KTsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm4gbV9tYXAuYWRkKGtleSwgZW50cnkpOwogICAgIH0KICAgICAKQEAgLTQyNCw2ICs0MzQsMTAg
QEAgcHVibGljOgogICAgIAogICAgIE1hcDo6QWRkUmVzdWx0IHNldChjb25zdCBDb25jdXJyZW50
SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5LCBjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBlbnRy
eSkKICAgICB7CisgICAgICAgIGlmIChtX3VuaXF1ZUlETWFwKSB7CisgICAgICAgICAgICBtX3Vu
aXF1ZUlETWFwLT5zZXQoa2V5LCBIaWdoRmlkZWxpdHlOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7
IAorICAgICAgICAgICAgbV9yZWdpc3RlclRvVmFyaWFibGVNYXAtPnNldChlbnRyeS5nZXRJbmRl
eCgpLCBrZXkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX21hcC5zZXQoa2V5LCBlbnRy
eSk7CiAgICAgfQogICAgIApAQCAtNDQzLDcgKzQ1NywxMiBAQCBwdWJsaWM6CiAgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIHJldHVybiBjb250YWlu
cyhsb2NrZXIsIGtleSk7CiAgICAgfQotICAgIAorCisgICAgaW50NjRfdCB1bmlxdWVJREZvclZh
cmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXksIFZNJiB2
bSk7CisgICAgaW50NjRfdCB1bmlxdWVJREZvclJlZ2lzdGVyKGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImIGxvY2tlciwgaW50IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSk7CisgICAgVHlwZVNldCog
Z2xvYmFsVHlwZVNldEZvclJlZ2lzdGVyKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tl
ciwgaW50IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSk7CisgICAgVHlwZVNldCogZ2xvYmFsVHlwZVNl
dEZvclZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgU3RyaW5nSW1w
bCoga2V5LCBWTSYgdm0pOworCiAgICAgYm9vbCB1c2VzTm9uU3RyaWN0RXZhbCgpIHsgcmV0dXJu
IG1fdXNlc05vblN0cmljdEV2YWw7IH0KICAgICB2b2lkIHNldFVzZXNOb25TdHJpY3RFdmFsKGJv
b2wgdXNlc05vblN0cmljdEV2YWwpIHsgbV91c2VzTm9uU3RyaWN0RXZhbCA9IHVzZXNOb25TdHJp
Y3RFdmFsOyB9CiAKQEAgLTQ1NCw3ICs0NzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYXB0
dXJlRW5kKGludCBjYXB0dXJlRW5kKSB7IG1fY2FwdHVyZUVuZCA9IGNhcHR1cmVFbmQ7IH0KIAog
ICAgIGludCBjYXB0dXJlQ291bnQoKSBjb25zdCB7IHJldHVybiAtKG1fY2FwdHVyZUVuZCAtIG1f
Y2FwdHVyZVN0YXJ0KTsgfQotICAgIAorCiAgICAgYm9vbCBpc0NhcHR1cmVkKGludCBvcGVyYW5k
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wZXJhbmQgPD0gY2FwdHVyZVN0YXJ0KCkgJiYgb3Bl
cmFuZCA+IGNhcHR1cmVFbmQoKTsKQEAgLTQ2Nyw3ICs0ODYsNyBAQCBwdWJsaWM6CiAgICAgLy8g
MCBpZiB3ZSBkb24ndCBjYXB0dXJlIGFueSBhcmd1bWVudHM7IHBhcmFtZXRlckNvdW50KCkgaW4g
bGVuZ3RoIGlmIHdlIGRvLgogICAgIGNvbnN0IFNsb3dBcmd1bWVudCogc2xvd0FyZ3VtZW50cygp
IHsgcmV0dXJuIG1fc2xvd0FyZ3VtZW50cy5nZXQoKTsgfQogICAgIHZvaWQgc2V0U2xvd0FyZ3Vt
ZW50cyhzdGQ6OnVuaXF1ZV9wdHI8U2xvd0FyZ3VtZW50W10+IHNsb3dBcmd1bWVudHMpIHsgbV9z
bG93QXJndW1lbnRzID0gc3RkOjptb3ZlKHNsb3dBcmd1bWVudHMpOyB9Ci0gICAgCisKICAgICBT
eW1ib2xUYWJsZSogY2xvbmVDYXB0dXJlZE5hbWVzKFZNJik7CiAKICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CkBAIC00ODIsMTkgKzUwMSwyMiBA
QCBwcml2YXRlOgogICAgIHB1YmxpYzoKICAgICAgICAgV2F0Y2hwb2ludENsZWFudXAoU3ltYm9s
VGFibGUqKTsKICAgICAgICAgdmlydHVhbCB+V2F0Y2hwb2ludENsZWFudXAoKTsKLSAgICAgICAg
CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSgpIG92ZXJyaWRlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3ltYm9sVGFibGUq
IG1fc3ltYm9sVGFibGU7CiAgICAgfTsKLSAgICAKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN5
bWJvbFRhYmxlKFZNJik7CiAgICAgflN5bWJvbFRhYmxlKCk7CiAKICAgICBNYXAgbV9tYXA7Ci0g
ICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFVuaXF1ZUlETWFwPiBtX3VuaXF1ZUlETWFwOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlclRvVmFyaWFibGVNYXA+IG1fcmVnaXN0ZXJUb1Zhcmlh
YmxlTWFwOworICAgIHN0ZDo6dW5pcXVlX3B0cjxVbmlxdWVUeXBlU2V0TWFwPiBtX3VuaXF1ZVR5
cGVTZXRNYXA7CisKICAgICBpbnQgbV9wYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1RoaXM7CiAgICAg
Ym9vbCBtX3VzZXNOb25TdHJpY3RFdmFsOwogCkBAIC01MDIsMTIgKzUyNCwxMiBAQCBwcml2YXRl
OgogICAgIGludCBtX2NhcHR1cmVFbmQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd0FyZ3Vt
ZW50W10+IG1fc2xvd0FyZ3VtZW50czsKLSAgICAKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXRj
aHBvaW50Q2xlYW51cD4gbV93YXRjaHBvaW50Q2xlYW51cDsKIAogcHVibGljOgogICAgIElubGlu
ZVdhdGNocG9pbnRTZXQgbV9mdW5jdGlvbkVudGVyZWRPbmNlOwotICAgIAorCiAgICAgbXV0YWJs
ZSBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlR5cGVTZXQuaCIKKworI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitUeXBlU2V0OjpUeXBlU2V0
KCkKKyAgICA6IG1fc2VlblR5cGVzKFR5cGVOb3RoaW5nKQorICAgICwgbV9taWdodEhhdmVEdXBs
aWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KGZhbHNlKQoreworfQorCitSdW50aW1lVHlwZSBUeXBl
U2V0OjpnZXRSdW50aW1lVHlwZUZvclZhbHVlKEpTVmFsdWUgdiwgU3RydWN0dXJlKikKK3sKKyAg
ICBSdW50aW1lVHlwZSByZXQ7CisgICAgaWYgKHYuaXNGdW5jdGlvbigpKQorICAgICAgICByZXQg
PSBUeXBlRnVuY3Rpb247CisgICAgZWxzZSBpZiAodi5pc1VuZGVmaW5lZCgpKQorICAgICAgICBy
ZXQgPSBUeXBlVW5kZWZpbmVkOworICAgIGVsc2UgaWYgKHYuaXNOdWxsKCkpCisgICAgICAgIHJl
dCA9IFR5cGVOdWxsOworICAgIGVsc2UgaWYgKHYuaXNCb29sZWFuKCkpCisgICAgICAgIHJldCA9
IFR5cGVCb29sZWFuOworICAgIGVsc2UgaWYgKHYuaXNNYWNoaW5lSW50KCkpCisgICAgICAgIHJl
dCA9IFR5cGVNYWNoaW5lSW50OworICAgIGVsc2UgaWYgKHYuaXNOdW1iZXIoKSkKKyAgICAgICAg
cmV0ID0gVHlwZU51bWJlcjsKKyAgICBlbHNlIGlmICh2LmlzU3RyaW5nKCkpCisgICAgICAgIHJl
dCA9IFR5cGVTdHJpbmc7CisgICAgZWxzZSBpZiAodi5pc1ByaW1pdGl2ZSgpKQorICAgICAgICBy
ZXQgPSBUeXBlUHJpbWl0aXZlOworICAgIGVsc2UgaWYgKHYuaXNHZXR0ZXJTZXR0ZXIoKSkKKyAg
ICAgICAgcmV0ID0gVHlwZUdldHRlclNldHRlcjsKKyAgICAvL2Vsc2UgaWYgKHYuaXNDdXN0b21H
ZXR0ZXJTZXR0ZXIoKSkKKyAgICAvLyAgICByZXQgPSBUeXBlQ3VzdG9tR2V0dGVyU2V0dGVyOwor
ICAgIGVsc2UgaWYgKHYuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0ID0gVHlwZU9iamVjdDsKKyAg
ICBlbHNlCisgICAgICAgIENSQVNIKCk7CisKKyAgICByZXR1cm4gcmV0OworfQorCisvL3N0cnVj
dHVyZSBtYXkgYmUgbnVsbAordm9pZCBUeXBlU2V0OjphZGRUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgCit7CisgICAgUnVudGltZVR5cGUgdCA9IGdldFJ1bnRp
bWVUeXBlRm9yVmFsdWUodiwgc3RydWN0dXJlKTsKKyAgICBtX3NlZW5UeXBlcyA9IG1fc2VlblR5
cGVzIHwgdDsKKyAgICBpZiAoc3RydWN0dXJlKSB7CisgICAgICAgIC8vcHJpbnRmKCJnZXR0aW5n
IHN0cnVjdHVyZSByZXByZXNlbnRhdGlvblxuIik7CisgICAgICAgIFN0cnVjdHVyZVNoYXBlIHNo
YXBlID0gc3RydWN0dXJlLT50b1N0cnVjdHVyZVNoYXBlKCk7CisgICAgICAgIG1fc3RydWN0dXJl
SGlzdG9yeS5hcHBlbmQoc2hhcGUpOworICAgIH0KK30KKwordm9pZCBUeXBlU2V0OjptZXJnZVdp
dGhUeXBlU2V0KGNvbnN0IFR5cGVTZXQmIG90aGVyKQoreworICAgIG1fc2VlblR5cGVzIHw9IG90
aGVyLm1fc2VlblR5cGVzOworCisgICAgaWYgKG90aGVyLm1fc3RydWN0dXJlSGlzdG9yeS5zaXpl
KCkgPiAwKQorICAgICAgICBtX21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3Rvcnkg
PSB0cnVlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdGhlci5tX3N0cnVjdHVyZUhp
c3Rvcnkuc2l6ZSgpOyBpKyspCisgICAgICAgIG1fc3RydWN0dXJlSGlzdG9yeS5hcHBlbmQob3Ro
ZXIubV9zdHJ1Y3R1cmVIaXN0b3J5LmF0KGkpKTsKK30KKwordm9pZCBUeXBlU2V0OjpyZW1vdmVE
dXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KCkgCit7CisgICAgVmVjdG9yPFN0cnVjdHVyZVNo
YXBlPiBuZXdIaXN0b3J5OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVI
aXN0b3J5LnNpemUoKTsgaSsrKQorICAgICAgICBpZiAoIW5ld0hpc3RvcnkuY29udGFpbnMobV9z
dHJ1Y3R1cmVIaXN0b3J5LmF0KGkpKSkKKyAgICAgICAgICAgIG5ld0hpc3RvcnkuYXBwZW5kKG1f
c3RydWN0dXJlSGlzdG9yeS5hdChpKSk7CisKKyAgICBtX3N0cnVjdHVyZUhpc3RvcnkgPSBuZXdI
aXN0b3J5OworICAgIG1fbWlnaHRIYXZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeSA9IGZh
bHNlOworfQorCitXVEY6OlN0cmluZyBUeXBlU2V0OjpzZWVuVHlwZXMoKSAKK3sKKyAgICBpZiAo
bV9zZWVuVHlwZXMgPT0gVHlwZU5vdGhpbmcpCisgICAgICAgIHJldHVybiAiKFVucmVhY2hlZCBT
dGF0ZW1lbnQpIjsKKworICAgIGlmIChtX21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhp
c3RvcnkpCisgICAgICAgIHJlbW92ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkoKTsKKwor
ICAgIFdURjo6U3RyaW5nIHNlZW4oIiIpOworCisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZUZ1
bmN0aW9uKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIkZ1bmN0aW9uICIpOworICAgIGlmIChtX3Nl
ZW5UeXBlcyAmIFR5cGVVbmRlZmluZWQpCisgICAgICAgICBzZWVuLmFwcGVuZCgiVW5kZWZpbmVk
ICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdWxsKQorICAgICAgICAgc2Vlbi5hcHBl
bmQoIk51bGwgIik7CisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZUJvb2xlYW4pCisgICAgICAg
ICBzZWVuLmFwcGVuZCgiQm9vbGVhbiAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTWFj
aGluZUludCkKKyAgICAgICAgIHNlZW4uYXBwZW5kKCJNYWNoaW5lSW50ICIpOworICAgIGlmICht
X3NlZW5UeXBlcyAmIFR5cGVOdW1iZXIpCisgICAgICAgICBzZWVuLmFwcGVuZCgiTnVtYmVyICIp
OworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVTdHJpbmcpCisgICAgICAgICBzZWVuLmFwcGVu
ZCgiU3RyaW5nICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVQcmltaXRpdmUpCisgICAg
ICAgICBzZWVuLmFwcGVuZCgiUHJpbWl0aXZlICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5
cGVHZXR0ZXJTZXR0ZXIpCisgICAgICAgICBzZWVuLmFwcGVuZCgiR2V0dGVyU2V0dGVyICIpOwor
ICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVDdXN0b21HZXR0ZXJTZXR0ZXIpCisgICAgICAgICBz
ZWVuLmFwcGVuZCgiQ3VzdG9tR2V0dGVyU2V0dGVyICIpOworICAgIC8vaWYgKG1fc2VlblR5cGVz
ICYgVHlwZU9iamVjdCkKKyAgICAvLyAgICAgc2Vlbi5hcHBlbmQoIk9iamVjdCAiKTsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKTsgaSsrKSB7
CisgICAgICAgIFN0cnVjdHVyZVNoYXBlIHJlcHJlc2VudGF0aW9uID0gbV9zdHJ1Y3R1cmVIaXN0
b3J5LmF0KGkpOworICAgICAgICBzZWVuLmFwcGVuZCgieyIpOworICAgICAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8IHJlcHJlc2VudGF0aW9uLm1fcHJvcGVydGllcy5zaXplKCk7IGorKykgewor
ICAgICAgICAgICAgU3RyaW5nIHByb3AocmVwcmVzZW50YXRpb24ubV9wcm9wZXJ0aWVzLmF0KGop
LmdldCgpKTsKKyAgICAgICAgICAgIHNlZW4uYXBwZW5kKHByb3ApOworICAgICAgICAgICAgaWYg
KGogKyAxIDwgcmVwcmVzZW50YXRpb24ubV9wcm9wZXJ0aWVzLnNpemUoKSkKKyAgICAgICAgICAg
ICAgICBzZWVuLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgfQorICAgICAgICBzZWVuLmFwcGVuZCgi
fSAiKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2VlbjsKK30KKwordm9pZCBUeXBlU2V0OjpkdW1w
U2VlblR5cGVzKCkKK3sKKyAgICBwcmludGYoIiVzIiwgc2VlblR5cGVzKCkuYXNjaWkoKS5kYXRh
KCkpOworICAgIHByaW50ZigiXG4iKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTaGFwZTo6b3BlcmF0
b3I9PShjb25zdCBTdHJ1Y3R1cmVTaGFwZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fcHJv
cGVydGllcy5zaXplKCkgIT0gb3RoZXIubV9wcm9wZXJ0aWVzLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBtX3Byb3BlcnRpZXMu
c2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmIChTdHJpbmcobV9wcm9wZXJ0aWVz
LmF0KGkpKSAhPSBTdHJpbmcob3RoZXIubV9wcm9wZXJ0aWVzLmF0KGkpKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvL25hbWVz
cGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUeXBlU2V0X2gKKyNkZWZpbmUgVHlw
ZVNldF9oCisKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CisgICAgY2xhc3MgSlNWYWx1ZTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7CisKKyAgICBlbnVtIFJ1
bnRpbWVUeXBlIHsKKyAgICAgICAgVHlwZU5vdGhpbmcgICAgICAgICAgICA9IDB4MCwKKyAgICAg
ICAgVHlwZUZ1bmN0aW9uICAgICAgICAgICA9IDB4MSwKKyAgICAgICAgVHlwZVVuZGVmaW5lZCAg
ICAgICAgICA9IDB4MiwKKyAgICAgICAgVHlwZU51bGwgICAgICAgICAgICAgICA9IDB4NCwKKyAg
ICAgICAgVHlwZUJvb2xlYW4gICAgICAgICAgICA9IDB4OCwKKyAgICAgICAgVHlwZU1hY2hpbmVJ
bnQgICAgICAgICA9IDB4MTAsCisgICAgICAgIFR5cGVOdW1iZXIgICAgICAgICAgICAgPSAweDIw
LAorICAgICAgICBUeXBlU3RyaW5nICAgICAgICAgICAgID0gMHg0MCwKKyAgICAgICAgVHlwZVBy
aW1pdGl2ZSAgICAgICAgICA9IDB4ODAsCisgICAgICAgIFR5cGVHZXR0ZXJTZXR0ZXIgICAgICAg
PSAweDEwMCwKKyAgICAgICAgVHlwZUN1c3RvbUdldHRlclNldHRlciA9IDB4MjAwLAorICAgICAg
ICBUeXBlT2JqZWN0ICAgICAgICAgICAgID0gMHg0MDAsCisgICAgfTsKKworCitjbGFzcyBTdHJ1
Y3R1cmVTaGFwZSB7CisKK3B1YmxpYzoKKyAgICBWZWN0b3I8UmVmUHRyPFdURjo6U3RyaW5nSW1w
bD4+IG1fcHJvcGVydGllczsgICAgICAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3Ry
dWN0dXJlU2hhcGUmIG90aGVyKSBjb25zdDsKKworfTsKKworCitjbGFzcyBUeXBlU2V0IHsKKwor
cHVibGljOgorICAgIFR5cGVTZXQoKTsKKyAgICB2b2lkIGFkZFR5cGVGb3JWYWx1ZShKU1ZhbHVl
IHYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgbWVyZ2VXaXRoVHlwZVNldChjb25zdCBUeXBlU2V0
Jik7CisgICAgc3RhdGljIFJ1bnRpbWVUeXBlIGdldFJ1bnRpbWVUeXBlRm9yVmFsdWUoSlNWYWx1
ZSwgU3RydWN0dXJlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV1RGOjpTdHJpbmcgc2VlblR5
cGVzKCk7CisKK3ByaXZhdGU6CisgICAgdWludDMyX3QgbV9zZWVuVHlwZXM7CisgICAgdm9pZCBk
dW1wU2VlblR5cGVzKCk7CisgICAgVmVjdG9yPFN0cnVjdHVyZVNoYXBlPiBtX3N0cnVjdHVyZUhp
c3Rvcnk7CisgICAgYm9vbCBtX21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3Rvcnk7
CisgICAgdm9pZCByZW1vdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KCk7CisKK307CisK
KworfSAvL25hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vVHlwZVNldF9oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNzAxODYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDgg
QEAKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVk
ZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbmNyZW1l
bnRhbFN3ZWVwZXIuaCIKQEAgLTg4LDYgKzkwLDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmdUYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIKQEAgLTIzNiw2
ICsyMzksOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAg
LCBtX2NvZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAgICwgbV9lbmFibGVkUHJvZmls
ZXIobnVsbHB0cikKICAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0aW5FeGVjdXRhYmxl
czo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fbmV4dFVuaXF1ZVZhcmlhYmxlSUQoMSkKKyAgICAs
IG1fbmV4dFVuaXF1ZUluc3RydWN0aW9uSUQoMSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJ
bnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRh
KCkuc3RhY2soKTsKQEAgLTMyMywxMCArMzI4LDE2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICBpZiAoY2FuVXNlSklUKCkpCiAgICAgICAgIGRmZ1N0YXRl
ID0gYWRvcHRQdHIobmV3IERGRzo6TG9uZ0xpdmVkU3RhdGUoKSk7CiAjZW5kaWYKLSAgICAKKwog
ICAgIC8vIEluaXRpYWxpemUgdGhpcyBsYXN0LCBhcyBhIGZyZWUgd2F5IG9mIGFzc2VydGluZyB0
aGF0IFZNIGluaXRpYWxpemF0aW9uIGl0c2VsZgogICAgIC8vIHdvbid0IHVzZSB0aGlzLgogICAg
IG1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgU2ltcGxlVHlwZWRBcnJheUNv
bnRyb2xsZXIoKSk7CisKKyAgICAvL1RPRE86IGNvbmRpdGlvbmFsbHkgYWxsb2NhdGUgYWxsIHRo
aXMgc3R1ZmYgYmFzZWQgb24gd2hldGhlciB0aGUgaW5zcGVjdG9yIGlzIHJ1bm5pbmcKKyAgICBp
ZiAoT3B0aW9uczo6cHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgIG1f
aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXI+KCk7CisgICAgICAgIG1faGlnaEZpZGVsaXR5TG9nID0gc3RkOjptYWtlX3Vu
aXF1ZTxIaWdoRmlkZWxpdHlMb2c+KCk7CisgICAgfQogfQogCiBWTTo6flZNKCkKQEAgLTkxOSw2
ICs5MzAsNDQgQEAgdm9pZCBWTTo6c2V0RW5hYmxlZFByb2ZpbGVyKExlZ2FjeVByb2ZpbAogICAg
IH0KIH0KIAorU3RyaW5nIFZNOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBz
dGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIHNv
dXJjZUlEQXNTdHJpbmcpCit7CisgICAgaWYgKCFpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRl
bGl0eSgpKQorICAgICAgICByZXR1cm4gIihOb3QgUHJvZmlsaW5nKSI7CisKKyAgICBib29sIG9r
YXk7CisgICAgaW50cHRyX3Qgc291cmNlSUQgPSBzb3VyY2VJREFzU3RyaW5nLnRvSW50UHRyU3Ry
aWN0KCZva2F5KTsKKyAgICBpZiAoIW9rYXkpCisgICAgICAgIENSQVNIKCk7CisKKyAgICB1cGRh
dGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZVN0YXRlKCk7CisgICAgcHJpbnRmKCJHZXR0aW5nIHR5
cGUgZm9yIHZhcmlhYmxlIGdpdmVuIHNvdXJjZUlEOiclbGQnIGxpbmU6JyV1J1xuIiwgc291cmNl
SUQsIHN0YXJ0TGluZSk7CisgICAgcmV0dXJuIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLT5n
ZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5l
LCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQpOworfQorCit2b2lkIFZNOjp1cGRh
dGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZVN0YXRlKCkKK3sKKyAgICBpZiAoIWlzUHJvZmlsaW5n
VHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGhpZ2hGaWRl
bGl0eUxvZygpLT5wcm9jZXNzSGlnaEZpZGVsaXR5TG9nKCk7Cit9CisKK3ZvaWQgVk06OmR1bXBI
aWdoRmlkZWxpdHlQcm9maWxpbmdUeXBlcygpCit7CisgICAgaWYgKCFpc1Byb2ZpbGluZ1R5cGVz
V2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZVN0YXRlKCk7CisgICAgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKiBw
cm9maWxlciA9IG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmdldCgpOworICAgIGZvciAoQmFn
PFR5cGVMb2NhdGlvbj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2xvY2F0aW9uSW5mby5iZWdpbigpOyAh
IWl0ZXI7ICsraXRlcikgeworICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gKml0ZXI7
CisgICAgICAgIHByaW50ZigiW0xpbmUsIENvbHVtbl06OlsldSwgJXVdIExvY2FsOiclcycgR2xv
YmFsOiclcydcbiIsIGxvY2F0aW9uLT5saW5lLCBsb2NhdGlvbi0+Y29sdW1uLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZXItPmdldExvY2Fs
VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UobG9jYXRpb24tPmxpbmUsIGxvY2F0aW9uLT5jb2x1bW4s
IGxvY2F0aW9uLT5saW5lLCBsb2NhdGlvbi0+Y29sdW1uLCAiIiwgbG9jYXRpb24tPnNvdXJjZUlE
KS5hc2NpaSgpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZXItPmdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKGxvY2F0
aW9uLT5saW5lLCBsb2NhdGlvbi0+Y29sdW1uLCBsb2NhdGlvbi0+bGluZSwgbG9jYXRpb24tPmNv
bHVtbiwgIiIsIGxvY2F0aW9uLT5zb3VyY2VJRCkuYXNjaWkoKS5kYXRhKCkpOworICAgIH0KK30K
Kwogdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0qIHZtKQogewogICAgIGxvZ1Nhbml0aXplU3Rh
Y2sodm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNzAx
ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw5ICs0NiwxMSBAQAogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRodW5r
R2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKICNpbmNsdWRlICJXYXRj
aHBvaW50LmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgorI2luY2x1ZGUgPHd0Zi9CYWcuaD4K
ICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvRGF0
ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNzQsNiArNzYsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKICAgICBjbGFzcyBFeGVj
U3RhdGU7CiAgICAgY2xhc3MgSGFuZGxlU3RhY2s7CisgICAgY2xhc3MgSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyOworICAgIGNsYXNzIEhpZ2hGaWRlbGl0eUxvZzsKICAgICBjbGFzcyBJZGVudGlm
aWVyOwogICAgIGNsYXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwpA
QCAtODQsNiArODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRh
YmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hOwogICAgIGNsYXNzIFJlZ0V4cENhY2hlOworICAg
IGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAgICAgY2xhc3MgU291cmNlUHJvdmlkZXI7CiAgICAg
Y2xhc3MgU291cmNlUHJvdmlkZXJDYWNoZTsKICAgICBzdHJ1Y3QgU3RhY2tGcmFtZTsKQEAgLTk2
LDYgKzEwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFVubGlua2VkRXZhbENvZGVC
bG9jazsKICAgICBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CisgICAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogICAg
IGNsYXNzIFZNRW50cnlTY29wZTsKICAgICBjbGFzcyBXYXRjaHBvaW50OwogICAgIGNsYXNzIFdh
dGNocG9pbnRTZXQ7CkBAIC01MTAsNiArNTE2LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJl
dHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsgfQogCisgICAgICAgIGJvb2wgaXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSB7IHJldHVybiAhIW1faGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyOyB9CisgICAgICAgIFN0cmluZyBnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1
bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5l
LCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBjb25zdCBT
dHJpbmcmIHNvdXJjZUlEKTsKKyAgICAgICAgSGlnaEZpZGVsaXR5TG9nKiBoaWdoRmlkZWxpdHlM
b2coKSB7IHJldHVybiBtX2hpZ2hGaWRlbGl0eUxvZy5nZXQoKTsgfQorICAgICAgICBIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIqIGhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcigpIHsgcmV0dXJuIG1f
aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgdXBkYXRlSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVTdGF0ZSgpOworICAgICAgICBUeXBlTG9jYXRpb24qIG5leHRM
b2NhdGlvbigpIHsgcmV0dXJuIG1fbG9jYXRpb25JbmZvLmFkZCgpOyB9IC8vVE9ETzogcG9zc2li
bGUgb3B0bWl6YXRpb246IHdoZW4gY29kZWJsb2NrcyBkaWUsIHJlcG9ydCB3aGljaCBsb2NhdGlv
bnMgYXJlIG5vIGxvbmdlciBiZWluZyBjaGFuZ2VkIHNvIHdlIGRvbid0IHdhbGsgb3ZlciB0aGVt
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcEhpZ2hGaWRlbGl0eVByb2ZpbGlu
Z1R5cGVzKCk7CisgICAgICAgIHVpbnQ2NF90IGdldE5leHRVbmlxdWVWYXJpYWJsZUlEKCkgeyBy
ZXR1cm4gbV9uZXh0VW5pcXVlVmFyaWFibGVJRCsrOyB9CisgICAgICAgIHVpbnQ2NF90IGdldE5l
eHRVbmlxdWVJbnN0cnVjdGlvbklEKCkgeyByZXR1cm4gbV9uZXh0VW5pcXVlSW5zdHJ1Y3Rpb25J
RCsrOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2xlYXJFeGNlcHRpb25TY29wZTsKQEAg
LTU1OCw2ICs1NzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxCdWlsdGlu
RXhlY3V0YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOwogICAgICAgICBSZWZDb3VudGVkQXJy
YXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyPiBtX2hpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlcjsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hGaWRlbGl0
eUxvZz4gbV9oaWdoRmlkZWxpdHlMb2c7CisgICAgICAgIC8vdWludDY0X3QgbV9uZXh0VW5pcXVl
VmFyaWFibGVJRDsKKyAgICAgICAgaW50NjRfdCBtX25leHRVbmlxdWVWYXJpYWJsZUlEOworICAg
ICAgICB1aW50NjRfdCBtX25leHRVbmlxdWVJbnN0cnVjdGlvbklEOworICAgICAgICBCYWc8VHlw
ZUxvY2F0aW9uPiBtX2xvY2F0aW9uSW5mbzsKICAgICB9OwogCiAjaWYgRU5BQkxFKEdDX1ZBTElE
QVRJT04pCkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
b3VyY2VDb2RlVGV4dEVkaXRvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwkocmV2aXNpb24g
MTcwMTg2KQorKysgU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291
cmNlQ29kZVRleHRFZGl0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTk3NCw3ICs5NzQsMTAgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdAogICAgICAgICAgICAgbW9k
ZSA9IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuTW9kZS5N
YXJrZWRUb2tlbnM7CiAgICAgICAgIGVsc2UgaWYgKCh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlIHx8IHRoaXMuX3NvdXJjZUNvZGUuc291
cmNlTWFwcy5sZW5ndGggIT09IDApICYmIFdlYkluc3BlY3Rvci5tb2RpZmllcktleXMubWV0YUtl
eSAmJiAhV2ViSW5zcGVjdG9yLm1vZGlmaWVyS2V5cy5hbHRLZXkgJiYgIVdlYkluc3BlY3Rvci5t
b2RpZmllcktleXMuc2hpZnRLZXkpCiAgICAgICAgICAgICBtb2RlID0gV2ViSW5zcGVjdG9yLkNv
ZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLk5vblN5bWJvbFRva2VuczsKKyAg
ICAgICAgLy9lbHNlCisgICAgICAgIC8vICAgIG1vZGUgPSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJv
clRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUuUG9zdEphdmFTY3JpcHRFeHByZXNzaW9uOwog
CisgICAgICAgIC8vY29uc29sZS5sb2coIlRva2VuIHRyYWNraW5nIG1vZGUgPSAiICsgbW9kZSkK
ICAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5lbmFibGVkID0gbW9kZSAhPT0g
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLk5vbmU7
CiAKICAgICAgICAgaWYgKG1vZGUgPT09IHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW9k
ZSkKQEAgLTk5Miw2ICs5OTUsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
cHJvdG90CiAgICAgICAgICAgICB0aGlzLl9kaXNtaXNzUG9wb3ZlcigpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5n
Q29udHJvbGxlci5Nb2RlLkphdmFTY3JpcHRFeHByZXNzaW9uOgorICAgICAgICAvL2Nhc2UgV2Vi
SW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLlBvc3RKYXZh
U2NyaXB0RXhwcmVzc2lvbjoKICAgICAgICAgICAgIHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xs
ZXIubW91c2VPdmVyRGVsYXlEdXJhdGlvbiA9IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5EdXJhdGlvblRvTW91c2VPdmVyVG9rZW5Ub01ha2VIb3ZlcmVkVG9rZW47CiAgICAgICAg
ICAgICB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLm1vdXNlT3V0UmVsZWFzZURlbGF5RHVy
YXRpb24gPSBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRHVyYXRpb25Ub01vdXNl
T3V0T2ZIb3ZlcmVkVG9rZW5Ub1JlbGVhc2U7CiAgICAgICAgICAgICB0aGlzLnRva2VuVHJhY2tp
bmdDb250cm9sbGVyLmNsYXNzTmFtZUZvckhpZ2hsaWdodGVkUmFuZ2UgPSBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVRleHRFZGl0b3IuSG92ZXJlZEV4cHJlc3Npb25IaWdobGlnaHRTdHlsZUNsYXNz
TmFtZTsKQEAgLTEwMjksNiArMTAzMyw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5wcm90b3QKICAgICAgICAgICAgIHRoaXMuX2Rpc21pc3NQb3BvdmVyKCk7CiAgICAgfSwK
IAorCiAgICAgdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZFJhbmdlV2FzQ2xpY2tl
ZDogZnVuY3Rpb24odG9rZW5UcmFja2luZ0NvbnRyb2xsZXIpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5tb2RlICE9PSBXZWJJbnNwZWN0b3IuQ29kZU1p
cnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUuTm9uU3ltYm9sVG9rZW5zKQpAQCAtMTA0
NywxMiArMTA1MiwxNSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90
CiAKICAgICB0b2tlblRyYWNraW5nQ29udHJvbGxlck5ld0hpZ2hsaWdodENhbmRpZGF0ZTogZnVu
Y3Rpb24odG9rZW5UcmFja2luZ0NvbnRyb2xsZXIsIGNhbmRpZGF0ZSkKICAgICB7CisgICAgICAg
IC8vY29uc29sZS5sb2coInRva2VuVHJhY2tpbmdDb250cm9sbGVyTmV3SGlnaGxpZ2h0Q2FuZGlk
YXRlLCBtb2RlID0gIiArIHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW9kZSkKKwogICAg
ICAgICBpZiAodGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5tb2RlID09PSBXZWJJbnNwZWN0
b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUuTm9uU3ltYm9sVG9rZW5z
KSB7CiAgICAgICAgICAgICB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLmhpZ2hsaWdodFJh
bmdlKGNhbmRpZGF0ZS5ob3ZlcmVkVG9rZW5SYW5nZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5tb2Rl
ID09PSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUu
SmF2YVNjcmlwdEV4cHJlc3Npb24pIHsKKyAgICAgICAgICAgIC8vfHwgdGhpcy50b2tlblRyYWNr
aW5nQ29udHJvbGxlci5tb2RlID09PSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tp
bmdDb250cm9sbGVyLk1vZGUuUG9zdEphdmFTY3JpcHRFeHByZXNzaW9uKSB7CiAgICAgICAgICAg
ICB0aGlzLl90b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdodGVkSmF2YVNjcmlwdEV4cHJl
c3Npb24oY2FuZGlkYXRlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA3
NywzOSArMTA4NSw3MSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90
CiAKICAgICAgICAgZnVuY3Rpb24gcG9wdWxhdGUoZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgfHwgd2FzVGhyb3duKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLQogICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSAhPT0gdGhpcy50b2tl
blRyYWNraW5nQ29udHJvbGxlci5jYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBh
eWxvYWQocmVzdWx0KTsKLSAgICAgICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7Ci0gICAgICAg
ICAgICBjYXNlICJmdW5jdGlvbiI6Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJG
b3JGdW5jdGlvbihkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgIm9iamVjdCI6Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGEuc3VidHlwZSA9PT0gInJlZ2V4
cCIpIAotICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvclJlZ0V4cChkYXRh
KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dQ
b3BvdmVyRm9yT2JqZWN0KGRhdGEpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSAic3RyaW5nIjoKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvclN0
cmluZyhkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgIm51
bWJlciI6Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JOdW1iZXIoZGF0YSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJib29sZWFuIjoKLSAg
ICAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvckJvb2xlYW4oZGF0YSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJ1bmRlZmluZWQiOgotICAgICAgICAg
ICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yVW5kZWZpbmVkKGRhdGEpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgdmFyIGRhdGEKKyAgICAgICAgICAgICAgICwgc291cmNl
SUQgPSB0aGlzLl9zb3VyY2VDb2RlLl9zY3JpcHRzWzBdLl9pZAorICAgICAgICAgICAgICAgLCBk
aXNwbGF5ID0gX2Rpc3BsYXkuYmluZCh0aGlzKQorCisgICAgICAgICAgICBpZiAoZXJyb3IgfHwg
d2FzVGhyb3duKSB7CisgICAgICAgICAgICAgICAgLy9yZXR1cm47CisgICAgICAgICAgICAgICAg
Ly9teSBvd24gc3BlY2lhbCBtb2RlCisgICAgICAgICAgICAgICAgZGF0YSA9IHsgdHlwZSA6ICJu
dW1iZXIiLCBfZGVzY3JpcHRpb24gOiAiIiB9CisgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxv
ZygiXG5jcmVhdGluZyBvd24gZGF0YSIpCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRhdGEgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlc3Vs
dCkKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gX2Rpc3BsYXkoKSB7Cisg
ICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNl
ICJmdW5jdGlvbiI6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yRnVu
Y3Rpb24oZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgIm9iamVjdCI6CisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN1YnR5cGUgPT09
ICJyZWdleHAiKSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9y
UmVnRXhwKGRhdGEpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvck9iamVjdChkYXRhKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JTdHJpbmcoZGF0YSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yTnVtYmVyKGRhdGEpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JCb29sZWFuKGRhdGEpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICJ1bmRlZmluZWQiOgorICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9zaG93UG9wb3ZlckZvclVuZGVmaW5lZChkYXRhKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmhvdmVyZWRUb2tlbi5zdGF0ZS5sYXN0VHlw
ZSA9PT0gInZhcmlhYmxlIikgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZXIoZXJy
b3IsIHR5cGVTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5fZGVzY3JpcHRpb24g
Kz0gIlxuIiArICJUeXBlczogeyIgKyB0eXBlU3RyaW5nICsgIn0iCisgICAgICAgICAgICAgICAg
ICAgIGRpc3BsYXkoKQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZhciBy
YW5nZSA9IGNhbmRpZGF0ZS5ob3ZlcmVkVG9rZW5SYW5nZQorICAgICAgICAgICAgICAgIC8vY29u
c29sZS5sb2coIlxuU3RhcnQgbGluZTogIiArIHJhbmdlLnN0YXJ0LmxpbmUgKyAiICAgZW5kTGlu
ZTogIiArIHJhbmdlLmVuZC5saW5lKQorICAgICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRS
dW50aW1lVHlwZUZvclZhcmlhYmxlSW5UZXh0UmFuZ2UoY2FuZGlkYXRlLmhvdmVyZWRUb2tlbi5z
dHJpbmcsIHNvdXJjZUlELCByYW5nZS5zdGFydC5saW5lICsgMSwgcmFuZ2Uuc3RhcnQuY2gsIHJh
bmdlLmVuZC5saW5lICsgMSwgcmFuZ2UuZW5kLmNoLCBoYW5kbGVyKQorICAgICAgICAgICAgfSBl
bHNlIGlmICghKGVycm9yIHx8IHdhc1Rocm93bikpIHsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
KCkKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygi
XG5ub3Qgc2hvd2luZyBhIHBvcG92ZXIiKQogICAgICAgICAgICAgfQorCisKICAgICAgICAgfQog
Ci0gICAgICAgIERlYnVnZ2VyQWdlbnQuZXZhbHVhdGVPbkNhbGxGcmFtZS5pbnZva2Uoe2NhbGxG
cmFtZUlkOiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZS5pZCwg
ZXhwcmVzc2lvbjogY2FuZGlkYXRlLmV4cHJlc3Npb24sIG9iamVjdEdyb3VwOiAicG9wb3ZlciIs
IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogdHJ1ZX0sIHBvcHVsYXRlLmJp
bmQodGhpcykpOworICAgICAgICBpZiAodGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5tb2Rl
ID09PSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUu
UG9zdEphdmFTY3JpcHRFeHByZXNzaW9uKSB7CisgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCJc
bmNhbGxpbmcgcG9wdWxhdGUgdy8gcmFuZG9tIHZhbHVlcyIpCisgICAgICAgICAgICBwb3B1bGF0
ZSh0cnVlLCBudWxsLCB0cnVlKQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIERlYnVnZ2Vy
QWdlbnQuZXZhbHVhdGVPbkNhbGxGcmFtZS5pbnZva2Uoe2NhbGxGcmFtZUlkOiBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZS5pZCwgZXhwcmVzc2lvbjogY2FuZGlk
YXRlLmV4cHJlc3Npb24sIG9iamVjdEdyb3VwOiAicG9wb3ZlciIsIGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZTogdHJ1ZX0sIHBvcHVsYXRlLmJpbmQodGhpcykpOwogICAgIH0s
CiAKICAgICBfc2hvd1BvcG92ZXI6IGZ1bmN0aW9uKGNvbnRlbnQpCkluZGV4OiBTb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3Iu
anMJKHJldmlzaW9uIDE3MDE4NikKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RleHRFZGl0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDQ2IEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yID0gZnVuY3Rpb24oZWxlbWUKICAgICB0aGlzLl9mb3Jt
YXR0ZXJTb3VyY2VNYXAgPSBudWxsOwogCiAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8
fCBudWxsOworCisgICAgZnVuY3Rpb24gbW91c2VVcFRlc3QoZXZlbnQpIHsKKworICAgICAgICBp
ZiAoIWRlbGVnYXRlIHx8ICFkZWxlZ2F0ZS5fc291cmNlQ29kZSB8fCAhZGVsZWdhdGUuX3NvdXJj
ZUNvZGUuX3NjcmlwdHMgfHwgIWRlbGVnYXRlLl9zb3VyY2VDb2RlLl9zY3JpcHRzWzBdKQorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgdGhpcy5fdG9rZW5UcmFja2luZ0NvbnRyb2xsZXIu
ZW5hYmxlZCA9IHRydWUKKworICAgICAgICB2YXIgc2NyaXB0ID0gZGVsZWdhdGUuX3NvdXJjZUNv
ZGUuX3NjcmlwdHNbMF0KKyAgICAgICAgICAgLCBzb3VyY2VJRCA9IHNjcmlwdC5faWQKKyAgICAg
ICAgICAgLCB0b2tlbkluZm8gPSB0aGlzLl90b2tlblRyYWNraW5nQ29udHJvbGxlci5faG92ZXJl
ZFRva2VuSW5mbworICAgICAgICAgICAsIHRva2VuIAorCisgICAgICAgIGlmICghdG9rZW5JbmZv
IHx8ICF0b2tlbkluZm8udG9rZW4pCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB0b2tl
biA9IHRva2VuSW5mby50b2tlbgorICAgICAgICAvL2NvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5
KHRva2VuSW5mbywgdW5kZWZpbmVkLCAyKSkKKyAgICAgICAgaWYgKHRva2VuLnN0YXRlLmxhc3RU
eXBlID09PSAidmFyaWFibGUiKSB7CisKKyAgICAgICAgICAgIC8vZGVsZWdhdGUuc291cmNlQ29k
ZS5fc2NyaXB0cy5mb3JFYWNoKGZ1bmN0aW9uKGUsIGlkeCkgeworICAgICAgICAgICAgLy8gICAg
Y29uc29sZS5sb2coIlxuSURYOiAiICsgaWR4ICsgIlxuVVJMOiAiICsgZS5fdXJsICsgIlxuSUQ6
ICIgKyBlLl9pZCkKKyAgICAgICAgICAgIC8vfSkKKworICAgICAgICAgICAgZnVuY3Rpb24gY2Fs
bGJhY2soZXJyb3IsIHR5cGVTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIAor
ICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRVJST1IgZnJvbSBoYW5kbGVyOiAiICsg
ZXJyb3IpCisKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiXG5cdGdvdCBydW50aW1lIHR5
cGVzIGluIHVybDogXCIiICsgc2NyaXB0Ll91cmwgKyAiXCIiICsgIlxuXHRSdW50aW1lIHR5cGVz
IGZvciB2YXJpYWJsZTogJyIgKyB0b2tlbi5zdHJpbmcgKyAiJyBpczogJyIgKyB0eXBlU3RyaW5n
ICsgIiciKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiXG5TdGFy
dCBsaW5lOiAiICsgdG9rZW5JbmZvLnBvc2l0aW9uLmxpbmUpCisKKyAgICAgICAgICAgIHZhciBs
aW5lID0gdG9rZW5JbmZvLnBvc2l0aW9uLmxpbmUgKyAxCisgICAgICAgICAgICBSdW50aW1lQWdl
bnQuZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKHRva2VuLnN0cmluZywgc291
cmNlSUQsIGxpbmUsIHRva2VuSW5mby5wb3NpdGlvbi5jaCwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLCB0b2tlbklu
Zm8ucG9zaXRpb24uY2ggKyB0b2tlbi5zdHJpbmcubGVuZ3RoLCBjYWxsYmFjaykKKyAgICAgICAg
fQorICAgIH0KKworICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIG1v
dXNlVXBUZXN0LmJpbmQodGhpcyksIHRydWUpOworICAgIAogfTsKIAogV2ViSW5zcGVjdG9yLk9i
amVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGV4dEVkaXRvcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233655</attachid>
            <date>2014-06-23 17:03:07 -0700</date>
            <delta_ts>2014-06-23 17:15:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>84080</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxNzAzMzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAj
aW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9y
LmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgogI2lu
Y2x1ZGUgIkNvcGllZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMu
aCIKQEAgLTM0Nyw2ICszNDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblVuZGVm
aW5lZChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRWZmZWN0ZnVsNDIoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFi
bGVzIChFeGVjU3RhdGUqKTsKIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncyhFeGVj
U3RhdGUqKTsKQEAgLTQ5Myw2ICs0OTUsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgYWRkRnVu
Y3Rpb24odm0sICJjcmVhdGVJbXB1cmVHZXR0ZXIiLCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRl
ciwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUi
LCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlLCAyKTsKKyAgICAgICAgYWRkRnVuY3Rp
b24odm0sICJkdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMiLCBmdW5jdGlvbkR1bXBUeXBlc0ZvckFs
bFZhcmlhYmxlcyAsIDQpOwogICAgICAgICAKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQpAQCAtOTI3LDYgKzkzMCwxMiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFrCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShNYXNxdWVyYWRlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBleGVjLT52
bSgpLmR1bXBIaWdoRmlkZWxpdHlQcm9maWxpbmdUeXBlcygpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIC8vIFVzZSBTRUggZm9yIFJlbGVhc2UgYnVp
bGRzIG9ubHkgdG8gZ2V0IHJpZCBvZiB0aGUgY3Jhc2ggcmVwb3J0IGRpYWxvZwogLy8gKGx1Y2tp
bHkgdGhlIHNhbWUgdGVzdHMgZmFpbCBpbiBSZWxlYXNlIGFuZCBEZWJ1ZyBidWlsZHMgc28gZmFy
KS4gTmVlZCB0bwogLy8gYmUgaW4gYSBzZXBhcmF0ZSBtYWluIGZ1bmN0aW9uIGJlY2F1c2UgdGhl
IGpzY21haW4gZnVuY3Rpb24gcmVxdWlyZXMgb2JqZWN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTcwMzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTgzNSw2ICs4MzUsMTMgQEAKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252
ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
MjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDQ0
M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAw
RTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1
MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkZCNzEzNzE5NTM3NEI4MDBC
QjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MTMzMTk1Mzc0QjcwMEJCNjEyRSAvKiBIaWdoRmlkZWxp
dHlMb2cuY3BwICovOyB9OworCQk1MkZCNzEzODE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVs
aXR5TG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MkZCNzEzNDE5NTM3NEI3MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTJGQjcxMzkxOTUzNzRCODAw
QkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzEzNTE5NTM3NEI4MDBCQjYxMkUgLyog
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCAqLzsgfTsKKwkJNTJGQjcxM0ExOTUzNzRCODAw
QkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGQjcxMzYxOTUzNzRCODAwQkI2MTJFIC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTUyRkI3MjExMTk1Mzc1QzYwMEJCNjEyRSAvKiBUeXBlTG9jYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3
MjEwMTk1Mzc1QzYwMEJCNjEyRSAvKiBUeXBlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkZCNzIxNDE5NTM3NjBDMDBCQjYxMkUg
LyogVHlwZVNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MkZCNzIxMjE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5jcHAgKi87IH07CisJCTUy
RkI3MjE1MTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzIxMzE5NTM3NjBDMDBCQjYxMkUgLyogVHlw
ZVNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU1MTA1MDI2MThFQjgyNzUwMDAwMUYzRSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDBGODhGMEE1MDhCMTAw
MDA1RjA2MSAvKiBKU0NhbGxiYWNrRnVuY3Rpb24uaCAqLzsgfTsKIAkJNTUyRUE3MEMxOTA4NzA0
ODAwQTY2RjJGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QkYxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
RGF0YVZpZXdQcm90b3R5cGUuY3BwICovOyB9OwogCQk1NTQwNzU3MjE4REE1OEFEMDBFRkY3RjIg
LyogQXJnTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLzsgfTsKQEAgLTI5NzAs
NiArMjk3NywxNCBAQAogCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGpzYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgfTsKIAkJNTFGMEVCNjEw
NUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUg
PSBGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1
MUYwRUMwNzA1Qzg2QzlBMDBFNkRGMUIgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIi
OyBuYW1lID0gbGlib2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNv
dXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTUyMkFCQUY5MTk0QTgwNDMwMDhCMUM4NSAv
KiBUeXBlTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUxv
Y2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRkI3MTMzMTk1Mzc0Qjcw
MEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSGlnaEZpZGVsaXR5TG9nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTJGQjcxMzQxOTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIaWdoRmlkZWxpdHlMb2cuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGQjcxMzUxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MkZCNzEzNjE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZCNzIxMDE5NTM3NUM2MDBC
QjYxMkUgLyogVHlwZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVMb2NhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZCNzIxMjE5NTM3NjBDMDBCQjYxMkUgLyog
VHlwZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGQjcyMTMxOTUzNzYwQzAwQkI2
MTJFIC8qIFR5cGVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTQwNzU4NDE4RjRBMzc1MDA2MDJB
NUQgLyogQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NTQwN0FDODE4REE1OEFEMDBFRkY3RjIgLyogbGliQ29tcGls
ZVJ1bnRpbWVUb0xMVk1JUi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJDb21w
aWxlUnVudGltZVRvTExWTUlSLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTVENTM3MjZEMEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gVHJhY2luZy5kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY0Myw2
ICs0NjU4LDEwIEBACiAJCQkJMEYyQjY2QjMxN0I2QjVBQjAwQTdBRTNGIC8qIEdlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaCAqLywKIAkJCQlCQzAyRTlCODBFMTg0NTQ1MDAwRjkyOTcgLyog
R2V0dGVyU2V0dGVyLmNwcCAqLywKIAkJCQlCQzMzN0JERTBFMUFGMEI4MDA3NjkxOEEgLyogR2V0
dGVyU2V0dGVyLmggKi8sCisJCQkJNTJGQjcxMzMxOTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRl
bGl0eUxvZy5jcHAgKi8sCisJCQkJNTJGQjcxMzQxOTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRl
bGl0eUxvZy5oICovLAorCQkJCTUyRkI3MTM1MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuY3BwICovLAorCQkJCTUyRkI3MTM2MTk1Mzc0QjgwMEJCNjEyRSAvKiBI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCAqLywKIAkJCQk5MzNBMzQ5RDAzOEFFODBGMDA4NjM1
Q0UgLyogSWRlbnRpZmllci5jcHAgKi8sCiAJCQkJOTMzQTM0OUEwMzhBRTdDNjAwODYzNUNFIC8q
IElkZW50aWZpZXIuaCAqLywKIAkJCQk4NjA2RERFOTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRp
ZmllcklubGluZXMuaCAqLywKQEAgLTQ5MTQsNiArNDkzMyw4IEBACiAJCQkJMEYyQjY2REIxN0I2
QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlzLmggKi8sCiAJCQkJMEYyQjY2REMxN0I2QjVBQjAw
QTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmNwcCAqLywKIAkJCQkwRjJCNjZERDE3QjZCNUFCMDBB
N0FFM0YgLyogVHlwZWRBcnJheVR5cGUuaCAqLywKKwkJCQk1MkZCNzIxMjE5NTM3NjBDMDBCQjYx
MkUgLyogVHlwZVNldC5jcHAgKi8sCisJCQkJNTJGQjcyMTMxOTUzNzYwQzAwQkI2MTJFIC8qIFR5
cGVTZXQuaCAqLywKIAkJCQlBN0E4QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXku
aCAqLywKIAkJCQk4NjY3MzlEMTEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9u
LmggKi8sCiAJCQkJQTdBOEFGMzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggKi8s
CkBAIC01Mzg1LDYgKzU0MDYsNyBAQAogCQkJCTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8sCiAJCQkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMy
OTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJMEYwRkM0NTgxNEJEMTVG
MTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCisJCQkJNTIyQUJBRjkxOTRBODA0
MzAwOEIxQzg1IC8qIFR5cGVMb2NhdGlvbi5oICovLAogCQkJCTBGQjU0NjdDMTRGNUNGRDMwMDJD
Mjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkwRkI1NDY3
QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovLAog
CQkJCTE0Q0E5NThDMTZBQjUwRkEwMDkzOEEwNiAvKiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5o
ICovLApAQCAtNTQyMCw2ICs1NDQyLDcgQEAKIAkJCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0Ug
LyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovLAogCQkJCUJDQ0YwRDBCMEVG
MEI4QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgKi8sCiAJCQkJQkNDRjBEMDcw
RUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmggKi8sCisJCQkJNTJGQjcyMTAx
OTUzNzVDNjAwQkI2MTJFIC8qIFR5cGVMb2NhdGlvbi5oICovLAogCQkJCUE3OUU3ODFFMTVFRUNC
QTgwMDQ3Qzg1NSAvKiBVbmxpbmtlZENvZGVCbG9jay5jcHAgKi8sCiAJCQkJQTc5RTc4MUYxNUVF
Q0JBODAwNDdDODU1IC8qIFVubGlua2VkQ29kZUJsb2NrLmggKi8sCiAJCQkJQjU5Rjg5MzgxODkx
QURCNTAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwICovLApAQCAtNTg4
OSw2ICs1OTEyLDEwIEBACiAJCQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hl
Y2tNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyog
QVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCMkM0MTAxNTZCREUwMDI4
NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyRkI3MjE1MTk1Mzc2
MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkZCNzIxMTE5NTM3
NUM2MDBCQjYxMkUgLyogVHlwZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkZCNzEz
QTE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MkZCNzEzODE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9y
QWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBH
Q0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTI0OEY5MTkxNDQyRDkwMEI3RkRFNCAv
KiBWYXJpYWJsZVdhdGNocG9pbnRTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc2MDMs
NiArNzYzMCw3IEBACiAJCQkJMEY0ODUzMjExODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYzOTQ4NDE1RTQ4MTE4MDA2QTU5N0MgLyogREZH
QXJyYXlNb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDlBMjk0MTdBMEJDNzQwMEVFMjYx
OCAvKiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyRkI3
MTM5MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY2NjZFQzYxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcxNENBNDE2RUE5MkYwMDBGM0VCRUIgLyogREZH
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNG
MjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTc2MzgsNiArNzY2Niw3IEBACiAJCQkJQTc4QTk3NzQxNzk3MzhCODAwOURGNzQ0IC8qIERGR0Zh
aWxlZEZpbmFsaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzhBOTc3NjE3OTczOEI4MDA5
REY3NDQgLyogREZHRmluYWxpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJEQzE1MTUx
QzVENEQwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUy
RkI3MjE0MTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOUQzMzk2MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTdEODlDRjcxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg2RUM5REM3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTc3MjAsNiArNzc0OSw3IEBACiAJCQkJQTdCNDhGNDkwRUU4
OTM2RjAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODZEQjY0NjQwRjk1QzZGQzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZN
UG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU2QTFENTE1MDAxQ0Y0MDAyOTkyQjEgLyog
RXhlY3V0aW9uQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MkZCNzEzNzE5NTM3NEI4
MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMDMz
MkMwMThBREZBRTEwMDVGOTc5QSAvKiBFeGl0aW5nSklUVHlwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkIxMDU4NTE2NzU0ODBGMDBGOEFCNkUgLyogRXhpdEtpbmQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZFQTBBMUMxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDYgKzExMyw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXNvbHZlX3Njb3BlIiwg
Imxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfZnJvbV9zY29w
ZSIsICJsZW5ndGgiIDogOCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0X3RvX3Nj
b3BlIiwgImxlbmd0aCIgOiA3IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9f
c2NvcGVfd2l0aF9wcm9maWxlIiwgImxlbmd0aCIgOiA4IH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9wdXNoX3dpdGhfc2NvcGUiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX3BvcF9zY29wZSIsICJsZW5ndGgiIDogMSB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfcHVzaF9uYW1lX3Njb3BlIiwgImxlbmd0aCIgOiA0IH0sCkBAIC0xMjIsNyAr
MTIzLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlYnVnIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3dpbGxfY2FsbCIsICJsZW5n
dGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV9kaWRfY2FsbCIs
ICJsZW5ndGgiIDogMiB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0
aCIgOiAyIH0KKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VuZCIsICJsZW5ndGgiIDogMiB9
LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlk
ZWxpdHkiLCAibGVuZ3RoIiA6IDQgfQogICAgICAgICBdCiAgICAgfSwKICAgICB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAkocmV2
aXNpb24gMTcwMzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKICAg
ICBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgogICAgIGNhc2Ugb3BfcHJvZmlsZV9kaWRfY2Fs
bDoKKyAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5OgogICAgIGNh
c2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6CiAgICAgY2FzZSBvcF9l
bmQ6CkBAIC0xMDUsNiArMTA2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KAogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgog
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX291dF9vZl9saW5lOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lk
OgorICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKICAgICBjYXNlIG9wX3B1
dF90b19zY29wZTogewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwpA
QCAtMjQ5LDYgKzI1MSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmwKICAgICBjYXNlIG9wX3B1c2hfbmFtZV9zY29wZToKICAgICBjYXNlIG9wX3B1c2hfd2l0aF9z
Y29wZToKICAgICBjYXNlIG9wX3B1dF90b19zY29wZToKKyAgICBjYXNlIG9wX3B1dF90b19zY29w
ZV93aXRoX3Byb2ZpbGU6CiAgICAgY2FzZSBvcF9wb3Bfc2NvcGU6CiAgICAgY2FzZSBvcF9lbmQ6
CiAgICAgY2FzZSBvcF9wcm9maWxlX3dpbGxfY2FsbDoKQEAgLTI4Nyw2ICsyOTAsNyBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsCiAgICAgY2FzZSBvcF9wdXRfYnlf
dmFsX2RpcmVjdDoKICAgICBjYXNlIG9wX3B1dF9ieV9pbmRleDoKICAgICBjYXNlIG9wX3RlYXJf
b2ZmX2FyZ3VtZW50czoKKyAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVs
aXR5OgogICAgIGNhc2Ugb3BfdG91Y2hfZW50cnk6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENP
REVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRf
T1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTcwMzMyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVk
ZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIkhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJM
TEludEVudHJ5cG9pbnQuaCIKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IlBvbHltb3JwaGljR2V0QnlJZExpc3QuaCIKQEAgLTg0Miw2ICs4NDQsMTUgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2Zp
ZGVsaXR5OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIC8vaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICArK2l0Owor
ICAgICAgICAgICAgKytpdDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5Iik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfbm90OiB7CiAg
ICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJub3QiKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ2OCw2ICsxNDc5LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgICAgICBvcGVyYW5kKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmls
ZToKICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpAQCAtMTQ3Niw2ICsxNDg4LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgK
ICAgICAgICAgICAgICsraXQ7IC8vIFN0cnVjdHVyZQogICAgICAgICAgICAgaW50IG9wZXJhbmQg
PSAoKytpdCktPnUub3BlcmFuZDsgLy8gT3BlcmFuZAogICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X3RvX3Njb3BlIik7CisgICAgICAg
ICAgICBpZiAob3Bjb2RlID09IG9wX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGUpCisgICAgICAg
ICAgICAgICAgKytpdDsKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICV1PCVz
fCVzPiwgPHN0cnVjdHVyZT4sICVkIiwKICAgICAgICAgICAgICAgICByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShyMSkuZGF0YSgpLAogICAgICAgICAgICAgICAgIG1vZGVBbmRUeXBlLm9wZXJhbmQoKSwgcmVz
b2x2ZU1vZGVOYW1lKG1vZGVBbmRUeXBlLm1vZGUoKSksIHJlc29sdmVUeXBlTmFtZShtb2RlQW5k
VHlwZS50eXBlKCkpLApAQCAtMTg3OSw2ICsxODkzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2so
U2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIG9wX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGU6CiAgICAgICAgIGNhc2Ugb3Bf
cHV0X3RvX3Njb3BlOiB7CiAgICAgICAgICAgICAvLyBwdXRfdG9fc2NvcGUgc2NvcGUsIGlkLCB2
YWx1ZSwgUmVzb2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQKICAgICAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwpA
QCAtMTg5NCw5ICsxOTA5LDY4IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFi
bGUqIG8KICAgICAgICAgICAgIH0gZWxzZSBpZiAob3Auc3RydWN0dXJlKQogICAgICAgICAgICAg
ICAgIGluc3RydWN0aW9uc1tpICsgNV0udS5zdHJ1Y3R1cmUuc2V0KCp2bSgpLCBvd25lckV4ZWN1
dGFibGUsIG9wLnN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUu
cG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wLm9wZXJhbmQpOworCisgICAgICAg
ICAgICBpZiAocGNbMF0udS5vcGNvZGUgPT0gb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSkg
eworICAgICAgICAgICAgICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhpcyBpbnN0cnVjdGlvbiBpczog
cHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSBzY29wZSwgaWQsIHZhbHVlLCBSZXNvbHZlTW9kZUFu
ZFR5cGUsIFN0cnVjdHVyZSwgT3BlcmFuZCwgVHlwZUxvY2F0aW9uKgorICAgICAgICAgICAgICAg
IFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSB2bSgpLT5uZXh0TG9jYXRpb24oKTsKKyAgICAgICAg
ICAgICAgICBzaXplX3QgaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpICsgb3BMZW5ndGggLSAxOworICAg
ICAgICAgICAgICAgIGludCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsgCisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbGluZSA9IDAsIGNvbHVtbiA9IDA7CisgICAgICAgICAgICAgICAg
ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOworCisgICAgICAgICAgICAg
ICAgbG9jYXRpb24tPm1fbGluZSA9IGxpbmU7CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1f
Y29sdW1uID0gY29sdW1uOworICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX3NvdXJjZUlEID0g
bV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCk7CisKKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogaGFuZGxlIG90aGVyIHZhbHVlcyBmb3Igb3AudHlwZSBoZXJlLCBhbmQgYWxzbyBjb25zaWRl
ciB3aGF0IHRvIGRvIHdoZW4gd2UgY2FuJ3Qgc3RhdGljYWxseSBkZXRlcm1pbmUgdGhlIGdsb2Jh
bElECisgICAgICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gMDsKKyAgICAg
ICAgICAgICAgICBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyKSAKKyAgICAgICAgICAgICAgICAg
ICAgc3ltYm9sVGFibGUgPSBvcC5hY3RpdmF0aW9uLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyKQorICAgICAgICAgICAgICAgICAg
ICBzeW1ib2xUYWJsZSA9IG1fZ2xvYmFsT2JqZWN0LmdldCgpLT5zeW1ib2xUYWJsZSgpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChzeW1ib2xUYWJsZSkgeworICAgICAg
ICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9s
b2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9
IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAq
dm0oKSk7CisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQucmVz
ZXQoc3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGlkZW50Lmlt
cGwoKSwgKnZtKCkpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURF
eGlzdHM7CisKKyAgICAgICAgICAgICAgICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIo
KS0+aW5zZXJ0TmV3TG9jYXRpb24obG9jYXRpb24pOworICAgICAgICAgICAgICAgIGluc3RydWN0
aW9uc1tpICsgN10udS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNf
d2l0aF9oaWdoX2ZpZGVsaXR5OiB7CisKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSA9IG1fc3ltYm9sVGFibGUuZ2V0KCk7CisgICAgICAgICAgICBUeXBlTG9jYXRp
b24qIGxvY2F0aW9uID0gdm0oKS0+bmV4dExvY2F0aW9uKCk7CisgICAgICAgICAgICBzaXplX3Qg
aW5zdHJ1Y3Rpb25PZmZzZXQgPSBpICsgb3BMZW5ndGggLSAxOworICAgICAgICAgICAgaW50IGRp
dm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0OyAKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUg
PSAwLCBjb2x1bW4gPSAwOworICAgICAgICAgICAgZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVP
ZmZzZXQoaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBs
aW5lLCBjb2x1bW4pOworCisgICAgICAgICAgICBpbnQgaGFzR2xvYmFsSURGbGFnID0gcGNbM10u
dS5vcGVyYW5kOworICAgICAgICAgICAgaWYgKGhhc0dsb2JhbElERmxhZykgeworICAgICAgICAg
ICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwor
ICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPSBzeW1ib2xUYWJs
ZS0+dW5pcXVlSURGb3JSZWdpc3Rlcihsb2NrZXIsIHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKSwg
KnZtKCkpOworICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQucmVzZXQo
c3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JSZWdpc3Rlcihsb2NrZXIsIHZpcnR1YWxSZWdp
c3Rlci5vZmZzZXQoKSwgKnZtKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxpdHlOb0dsb2JhbElE
RXhpc3RzOwogICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGxvY2F0aW9uLT5tX2xpbmUgPSBs
aW5lOworICAgICAgICAgICAgbG9jYXRpb24tPm1fY29sdW1uID0gY29sdW1uOworICAgICAgICAg
ICAgbG9jYXRpb24tPm1fc291cmNlSUQgPSBtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKTsK
KworICAgICAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKCktPmluc2VydE5l
d0xvY2F0aW9uKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgMl0udS5s
b2NhdGlvbiA9IGxvY2F0aW9uOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCiAg
ICAgICAgIGNhc2Ugb3BfY2FwdHVyZWRfbW92OgogICAgICAgICBjYXNlIG9wX25ld19jYXB0dXJl
ZF9mdW5jOiB7CiAgICAgICAgICAgICBpZiAocGNbM10udS5pbmRleCA9PSBVSU5UX01BWCkgewpA
QCAtMjM0MCw2ICsyNDE0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y2FzZSBvcF9nZXRfZnJvbV9zY29wZToKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3Bl
X3dpdGhfcHJvZmlsZToKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAgICAg
ICAgICAgICAgICAgUmVzb2x2ZU1vZGVBbmRUeXBlIG1vZGVBbmRUeXBlID0KICAgICAgICAgICAg
ICAgICAgICAgUmVzb2x2ZU1vZGVBbmRUeXBlKGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiAxNzAzMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0Myw2ICs5NDMsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCk7IC8vIFdpbGwgb25seSByZXR1cm4gdmFsaWQgcmVz
dWx0cyB3aGVuIGNhbGxlZCBkdXJpbmcgR0MuIEFzc3VtZXMgdGhhdCB5b3UndmUgYWxyZWFkeSBl
c3RhYmxpc2hlZCB0aGF0IHRoZSBvd25lciBleGVjdXRhYmxlIGlzIGxpdmUuCiAKKwogcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkgb3Zl
cnJpZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rp
b24uaAkocmV2aXNpb24gMTcwMzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiVHlw
ZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiU3BlY2lh
bFBvaW50ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKQEAgLTExOCw2ICsxMTksNyBAQCBz
dHJ1Y3QgSW5zdHJ1Y3Rpb24gewogICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQWN0aXZhdGlv
bj4gYWN0aXZhdGlvbjsKICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgYm9vbCogcHJl
ZGljYXRlUG9pbnRlcjsKKyAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbjsKICAgICB9IHU7
CiAgICAgICAgIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9UeXBlTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVHlwZUxvY2F0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VHlwZUxvY2F0aW9uX2gKKyNkZWZpbmUgVHlwZUxvY2F0aW9uX2gKKworI2luY2x1ZGUgIlR5cGVT
ZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gSGlnaEZpZGVsaXR5R2xvYmFsSURGbGFn
cyB7CisgICAgSGlnaEZpZGVsaXR5TmVlZHNVbmlxdWVJREdlbmVyYXRpb24gPSAtMSwKKyAgICBI
aWdoRmlkZWxpdHlOb0dsb2JhbElERXhpc3RzID0gLTIKK307CisKK2NsYXNzIFR5cGVMb2NhdGlv
biB7CisgICAgICAgICAgICAgICAgICAgICAgIAorcHVibGljOgorICAgIFR5cGVMb2NhdGlvbigp
IAorICAgICAgICA6IG1faW5zdHJ1Y3Rpb25UeXBlU2V0KHN0ZDo6bWFrZV91bmlxdWU8VHlwZVNl
dD4oKSkKKyAgICAgICAgLCBtX2dsb2JhbFR5cGVTZXQobnVsbHB0cikKKyAgICB7CisgICAgfQor
CisgICAgaW50NjRfdCBtX2dsb2JhbFZhcmlhYmxlSUQ7CisgICAgaW50cHRyX3QgbV9zb3VyY2VJ
RDsKKyAgICB1bnNpZ25lZCBtX2xpbmU7CisgICAgdW5zaWduZWQgbV9jb2x1bW47CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFR5cGVTZXQ+IG1faW5zdHJ1Y3Rpb25UeXBlU2V0OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxUeXBlU2V0PiBtX2dsb2JhbFR5cGVTZXQ7Cit9OworCit9IC8vbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy9UeXBlTG9jYXRpb25faApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlz
aW9uIDE3MDMzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsMTAgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKAogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChzcmMtPmluZGV4KCkpOwogICAgIGlmIChjYXB0dXJlTW9kZSA9PSBJc0NhcHR1cmVk
KQogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQod2F0Y2hhYmxlVmFyaWFibGUoZHN0LT5p
bmRleCgpKSk7CisKKyAgICBpZiAoIWRzdC0+aXNUZW1wb3JhcnkoKSAmJiBpc1Byb2ZpbGluZ1R5
cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICBlbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hG
aWRlbGl0eShkc3QsIHRydWUpOworCiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMTExMSw2ICsx
MTE1LDE4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWwKICAgICBy
ZXR1cm4gZHN0OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJvZmlsZVR5cGVz
V2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJvZmlsZSwgYm9vbCBoYXNH
bG9iYWxJRCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2Zp
ZGVsaXR5KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVnaXN0ZXJUb1Byb2ZpbGUtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsgLy8gcGxhY2Vob2xkZXIgZm9y
IFR5cGVMb2NhdGlvbgorICAgIC8vIFRoaXMgaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB3
ZSBzaG91bGQgdHJhY2sgdGhpcyB2YWx1ZSB0byBpdHMgZ2xvYmFsSUQgb3Igbm90LgorICAgIGlm
IChoYXNHbG9iYWxJRCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDEpOworICAgIGVs
c2UKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworfQorCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29sIGIpCiB7CiAg
ICAgcmV0dXJuIGVtaXRMb2FkKGRzdCwganNCb29sZWFuKGIpKTsKQEAgLTEyNTUsMTMgKzEyNzEs
MTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUbwogICAgIG1fY29k
ZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUo
KSk7CiAKICAgICAvLyBwdXRfdG9fc2NvcGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVzb2x2ZU1vZGVB
bmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQKLSAgICBlbWl0T3Bjb2RlKG9wX3B1dF90b19zY29w
ZSk7CisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAg
IGVtaXRPcGNvZGUob3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSk7CisgICAgZWxzZQorICAg
ICAgICBlbWl0T3Bjb2RlKG9wX3B1dF90b19zY29wZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHNjb3BlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3Rh
bnQoaWRlbnRpZmllcikpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgo
KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFJlc29sdmVNb2RlQW5kVHlwZShyZXNvbHZl
TW9kZSwgcmVzb2x2ZVR5cGUoKSkub3BlcmFuZCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGlmIChpc1Byb2ZpbGlu
Z1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0xMzI4LDYgKzEzNDksMTAgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKDApOworCisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5
KCkpCisgICAgICAgIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZhbHVlLCBmYWxz
ZSk7CisKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTE0MjQsNiArMTQ0OSwxMCBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFs
dWUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVByb2ZpbGUpOwor
CisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgIGVt
aXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZhbHVlLCBmYWxzZSk7CisKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE3MDMzMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIGVtaXROb2RlKG4pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBlbWl0UHJv
ZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiBkc3QsIGJvb2wpOworCiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJik7
CkBAIC02NzcsNiArNjc5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVk0qIG1fdm07
CiAKKyAgICAgICAgYm9vbCBpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpIHsgcmV0
dXJuIHZtKCktPmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCk7IH0KKwogICAgICAg
ICBPcGNvZGVJRCBtX2xhc3RPcGNvZGVJRDsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIHNpemVf
dCBtX2xhc3RPcGNvZGVQb3NpdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE3MDMzMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQwLDEzICs3NDAsMTUgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6
OmVtaXRSZXNvbHZlKEJ5dAogICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKICAgICAg
ICAgICAgIGxvY2FsUmVnID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgbG9jYWxSZWcpOwotICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVy
ZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0
b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
OwogICAgICAgICAgICAgQVNTRVJUKGRzdCAhPSBsb2NhbFJlZyk7CiAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGVtcERzdFNyYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0VG9OdW1iZXIodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBEc3RTcmMuZ2V0KCksIGxvY2Fs
UmVnKTsKICAgICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHRlbXBEc3RTcmMuZ2V0
KCksIG1fb3BlcmF0b3IpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5
cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbFJlZywgdGVtcERzdFNyYy5nZXQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdGVtcERzdC5nZXQoKTsKICAgICAgICAgfQpAQCAtOTE1LDEwICs5MTcs
MTIgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZQogICAgICAgICBp
ZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRP
bmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGxvY2FsUmVnID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9jYWxSZWcpOwotICAg
ICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYg
KGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdo
RmlkZWxpdHkoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3QgPSBn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE1vdmUodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcpOwogICAgICAgICAgICAgZW1pdEluY09yRGVj
KGdlbmVyYXRvciwgdGVtcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAgICAgICBpZiAo
Z2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsUmVnLCB0
ZW1wRHN0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGlu
YXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CkBAIC0xNDA3LDYg
KzE0MTEsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0UmVhCiAKIFJl
Z2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBKU1RleHRQb3NpdGlv
biBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7CiAgICAgaWYgKExv
Y2FsIGxvY2FsID0gZ2VuZXJhdG9yLmxvY2FsKG1faWRlbnQpKSB7CiAgICAgICAgIGlmIChsb2Nh
bC5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNl
cHRpb25JZk5lZWRlZCgpOwpAQCAtMTQxNCwxMCArMTQxOSwxMyBAQCBSZWdpc3RlcklEKiBSZWFk
TW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlm
IChsb2NhbC5pc0NhcHR1cmVkKCkKKyAgICAgICAgICAgIHx8IGdlbmVyYXRvci5pc1Byb2ZpbGlu
Z1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpCiAgICAgICAgICAgICB8fCBnZW5lcmF0b3IubGVmdEhh
bmRTaWRlTmVlZHNDb3B5KG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdl
bmVyYXRvcikpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHJl
c3VsdC5nZXQoKSwgbG9jYWwuZ2V0KCkpOwogICAgICAgICAgICAgZW1pdFJlYWRNb2RpZnlBc3Np
Z25tZW50KGdlbmVyYXRvciwgcmVzdWx0LmdldCgpLCByZXN1bHQuZ2V0KCksIG1fcmlnaHQsIG1f
b3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0
LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5nZXQoKSwgcmVzdWx0LmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChk
c3QsIHJlc3VsdC5nZXQoKSk7CiAgICAgICAgIH0KQEAgLTE0MjYsNyArMTQzNCw2IEBAIFJlZ2lz
dGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEIKICAgICAgICAgcmV0dXJuIGdlbmVy
YXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKICAgICB9CiAKLSAg
ICBKU1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3Ro
KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RTdGFy
dCgpLCBuZXdEaXZvdCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9y
LmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lkZW50KTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBUaHJvd0lmTm90
Rm91bmQpOwpAQCAtMTQ0Myw5ICsxNDUwLDExIEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVO
b2RlOjplbWl0Qnl0ZWMKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRp
b25JZk5lZWRlZCgpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShkc3Qs
IG1fcmlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkpIHsK
KyAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdU
eXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHRlbXBEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUodGVtcERzdC5nZXQoKSwgbV9yaWdodCk7CisgICAgICAgICAgICBp
ZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsLmdl
dCgpLCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRv
RGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CkBAIC0x
NTQ4LDEyICsxNTU3LDEzIEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2lu
Z2wKICAgICAgICAgaWYgKCFtX2luaXQpCiAgICAgICAgICAgICByZXR1cm4gbG9jYWwuZ2V0KCk7
CiAKLSAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkgeworICAgICAgICAvLyBGSVhNRTog
bWF5YmUgY2FsbCBlbWl0RXhwcmVzc2lvbkluZm8gaGVyZQorICAgICAgICBpZiAobG9jYWwuaXND
YXB0dXJlZCgpIHx8IGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgp
KSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wRHN0Lmdl
dCgpLCBtX2luaXQpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TW92ZShsb2Nh
bC5nZXQoKSwgdGVtcERzdC5nZXQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShsb2NhbC5nZXQoKSwgbV9pbml0KTsKICAgICB9CiAK
QEAgLTE4NzEsNyArMTg4MSw4IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW4KICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQgPSBzaW1wbGVCaW5kaW5nLT5ib3Vu
ZFByb3BlcnR5KCk7CiAgICAgICAgICAgICBMb2NhbCBsb2NhbCA9IGdlbmVyYXRvci5sb2NhbChp
ZGVudCk7CiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSBsb2NhbC5nZXQoKTsKLSAgICAgICAg
ICAgIGlmICghcHJvcGVydHlOYW1lIHx8IGxvY2FsLmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBTaG91bGQgSSBlbWl0IGV4cHJlc3Npb24gaW5mbyBoZXJlPworICAgICAgICAg
ICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwgbG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci5p
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQogICAgICAgICAgICAgICAgIGdvdG8g
Z2VuZXJpY0JpbmRpbmc7CiAgICAgICAgICAgICBleHBlY3RlZFN1YnNjcmlwdCA9IGdlbmVyYXRv
ci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IucHVzaE9wdGltaXNlZEZvckluKGV4cGVjdGVkU3Vic2NyaXB0Lmdl
dCgpLCBpdGVyLmdldCgpLCBpLmdldCgpLCBwcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9y
LmgiCiAjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlM
b2cuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC05NjksNiArOTcwLDggQEAg
dm9pZCBIZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdAogI2lmIEVOQUJMRShBTExP
Q0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0YUxvZ0YoIkpTQyBHQyBzdGFydGluZyBjb2xsZWN0aW9u
LlxuIik7CiAjZW5kaWYKKyAgICBpZiAodm0oKS0+aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoKSkKKyAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdoRmlk
ZWxpdHlMb2coZmFsc2UsICJHQyIpOwogICAgIAogICAgIGRvdWJsZSBiZWZvcmUgPSAwOwogICAg
IGlmIChPcHRpb25zOjpsb2dHQygpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5jcHAJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
MSw2ICsxOTEsMTMgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJ1bihFcnJvclN0cgog
ewogfQogCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVGb3JWYXJp
YWJsZUluVGV4dFJhbmdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5h
bWUsIGNvbnN0IFN0cmluZyYgaW5faWQsIGludCBpbl9zdGFydExpbmUsIGludCBpbl9zdGFydENv
bHVtbiwgaW50IGluX2VuZExpbmUsIGludCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5cGVz
KSAKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxWTSgpOworICAgIFN0cmluZyB0eXBlcyh2bS5nZXRU
eXBlc0ZvclZhcmlhYmxlSW5SYW5nZShpbl9zdGFydExpbmUsIGluX3N0YXJ0Q29sdW1uLCBpbl9l
bmRMaW5lLCBpbl9lbmRDb2x1bW4sIGluX3ZhcmlhYmxlTmFtZSwgaW5faWQpKTsKKyAgICAqb3V0
X3R5cGVzID0gdHlwZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCShy
ZXZpc2lvbiAxNzAzMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFs
UHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykgb3ZlcnJpZGUgZmluYWw7
CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXApIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBy
dW4oRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5
cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl92
YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5faWQsIGludCBpbl9zdGFydExpbmUsIGludCBp
bl9zdGFydENvbHVtbiwgaW50IGluX2VuZExpbmUsIGludCBpbl9lbmRDb2x1bW4sIFN0cmluZyog
b3V0X3R5cGVzKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0U2NyaXB0RGVidWdTZXJ2ZXIoU2Ny
aXB0RGVidWdTZXJ2ZXIqIHNjcmlwdERlYnVnU2VydmVyKSB7IG1fc2NyaXB0RGVidWdTZXJ2ZXIg
PSBzY3JpcHREZWJ1Z1NlcnZlcjsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgkocmV2aXNpb24gMTcwMzMy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpz
b24JKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsMjEgQEAKICAgICAgICAgewogICAgICAg
ICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlz
YWJsZXMgcmVwb3J0aW5nIG9mIGV4ZWN1dGlvbiBjb250ZXh0cyBjcmVhdGlvbi4iCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImdldFJ1bnRpbWVUeXBlRm9yVmFy
aWFibGVJblRleHRSYW5nZSIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInZhcmlhYmxlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJWYXJpYWJsZSB3ZSB3YW50IHR5cGUgaW5mcm9tYXRpb24gZm9yLiIgfSwKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlEIiwgInR5cGUiOiAic3RyaW5nIiwgImRl
c2NyaXB0aW9uIjogInNvdXJjZUlEIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGEgc2NyaXB0IiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhcnRMaW5lIiwgInR5cGUiOiAiaW50ZWdlciIs
ICJkZXNjcmlwdGlvbiI6ICJzdGFydCBsaW5lIGZvciB2YXJpYWJsZSBuYW1lIiB9LAorICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic3RhcnRDb2x1bW4iLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRl
c2NyaXB0aW9uIjogInN0YXJ0IGNvbHVtbiBmb3IgdmFyaWFibGUgbmFtZSIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImVuZExpbmUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0
aW9uIjogImVuZCBsaW5lIGZvciB2YXJpYWJsZSBuYW1lIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZW5kQ29sdW1uIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJl
bmQgY29sdW1uIGZvciB2YXJpYWJsZSBuYW1lIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlcyIsICJ0eXBl
IjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJUeXBlcyBmb3IgcmVxdWVzdGVkIHZhcmlhYmxl
LiIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5z
IGRldGFpbGVkIGluZm9ybXRhdGlvbiBvbiBnaXZlbiBmdW5jdGlvbi4iCiAgICAgICAgIH0KICAg
ICBdLAogICAgICJldmVudHMiOiBbCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVk
ZSAiSGlnaEZpZGVsaXR5TG9nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCkBAIC0xNjcsNyArMTY4LDMwIEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAgICAgICBFeGVjU3RhdGUqIF9f
cmNmX2V4ZWMgPSAoZXhlY0NhbGxlZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
ICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBfX3JjZl9leGVjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQotICAgIAorCisjZGVmaW5lIExMSU5U
X1BVVF9UT19TQ09QRV9DT01NT04oKSBcCisgICAgTExJTlRfQkVHSU4oKTsgXAorICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7IFwKKyAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOyBcCisg
ICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJTlRfT1AoMSkuanNWYWx1
ZSgpKTsgXAorICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsgXAor
ICAgIFJlc29sdmVNb2RlQW5kVHlwZSBtb2RlQW5kVHlwZSA9IFJlc29sdmVNb2RlQW5kVHlwZShw
Y1s0XS51Lm9wZXJhbmQpOyBcCisgXAorICAgIGlmIChtb2RlQW5kVHlwZS5tb2RlKCkgPT0gVGhy
b3dJZk5vdEZvdW5kICYmICFzY29wZS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKSBcCisgICAg
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQp
KTsgXAorIFwKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSk7IFwKKyAgICBzY29wZS0+bWV0aG9kVGFibGUoKS0+cHV0KHNjb3BlLCBleGVj
LCBpZGVudCwgdmFsdWUsIHNsb3QpOyBcCisgXAorICAgIC8qIENvdmVycyBpbXBsaWNpdCBnbG9i
YWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2Ug
ZGlkbid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLiovICBcCisgICAg
aWYgKG1vZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBtb2RlQW5kVHlwZS50
eXBlKCkgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7IFwKKyAgICAg
ICAgaWYgKHNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiBzbG90LmJhc2UoKSA9PSBzY29wZSAmJiBz
Y29wZS0+c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgeyBcCisg
ICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7
IFwKKyAgICAgICAgICAgIHBjWzVdLnUuc3RydWN0dXJlLnNldChleGVjLT52bSgpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBzY29wZS0+c3RydWN0dXJlKCkpOyBcCisgICAgICAgICAg
ICBwY1s2XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOyBcCisgICAgICAgIH0gXAor
ICAgIH0gXAorCiAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29w
ZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGlu
dCBvcGVyYW5kKQogewpAQCAtNTMzLDYgKzU1NywxNSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbmV3X3JlZ2V4CiAgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRl
KHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdF
eHApKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNf
d2l0aF9oaWdoX2ZpZGVsaXR5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVHlwZUxvY2F0
aW9uKiBsb2NhdGlvbiA9IHBjWzJdLnUubG9jYXRpb247CisgICAgSlNWYWx1ZSB2ID0gTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCk7CisgICAgdm0uaGlnaEZpZGVsaXR5TG9nKCktPnJlY29yZFR5cGVJ
bmZvcm1hdGlvbkZvckxvY2F0aW9uKHYsIGxvY2F0aW9uKTsKKyAgICBMTElOVF9FTkRfSU1QTCgp
OworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfaGFzX2luc3RhbmNl
KQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xNDI2LDMwICsxNDU5LDIwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV8KICAgICBMTElOVF9SRVRVUk4oc2xvdC5n
ZXRWYWx1ZShleGVjLCBpZGVudCkpOwogfQogCisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wdXRfdG9fc2NvcGUpCiB7Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7Ci0gICAgSlNPYmpl
Y3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7Ci0gICAgUmVzb2x2ZU1v
ZGVBbmRUeXBlIG1vZGVBbmRUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBlKHBjWzRdLnUub3BlcmFu
ZCk7Ci0KLSAgICBpZiAobW9kZUFuZFR5cGUubW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAh
c2NvcGUtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkKLSAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwotCi0gICAgUHV0UHJvcGVy
dHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwotICAgIHNjb3Bl
LT5tZXRob2RUYWJsZSgpLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7Ci0K
LSAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1
bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVt
IGF0IGNvbXBpbGUgdGltZS4KLSAgICBpZiAobW9kZUFuZFR5cGUudHlwZSgpID09IEdsb2JhbFBy
b3BlcnR5IHx8IG1vZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3MpIHsKLSAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiBzbG90
LmJhc2UoKSA9PSBzY29wZSAmJiBzY29wZS0+c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNzZXNB
cmVDYWNoZWFibGUoKSkgewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
Y29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgcGNbNV0udS5zdHJ1Y3R1cmUuc2V0KGV4
ZWMtPnZtKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHNjb3BlLT5zdHJ1Y3R1cmUo
KSk7Ci0gICAgICAgICAgICBwY1s2XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwot
ICAgICAgICB9Ci0gICAgfQorICAgIExMSU5UX1BVVF9UT19TQ09QRV9DT01NT04oKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19z
Y29wZV93aXRoX3Byb2ZpbGUpCit7CisgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGlzIGluc3RydWN0
aW9uIGlzIHRoZSBzYW1lIGFzIHB1dF90b19zY29wZSB3aXRoIGEgVHlwZUxvY2F0aW9uIGFwcGVu
ZGVkOiBwdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlIHNjb3BlLCBpZCwgdmFsdWUsIFJlc29sdmVN
b2RlQW5kVHlwZSwgU3RydWN0dXJlLCBPcGVyYW5kLCBUeXBlTG9jYXRpb24qCisgICAgTExJTlRf
UFVUX1RPX1NDT1BFX0NPTU1PTigpOworICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSBwY1s3
XS51LmxvY2F0aW9uOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOwor
ICAgIHZtLmhpZ2hGaWRlbGl0eUxvZygpLT5yZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlv
bih2LCBsb2NhdGlvbik7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAxNzAzMzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTI0LDYgKzEyNCw4IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaGEKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9z
Y29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tX3Nj
b3BlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3Bl
KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlX3dp
dGhfcHJvZmlsZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2Zp
bGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUq
KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKIGV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0
ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNzAzMzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcg
Y29weSkKQEAgLTEyMzIsMyArMTIzMiwxMSBAQCBlbmQKIF9sbGludF9vcF9pbml0X2dsb2JhbF9j
b25zdF9ub3A6CiAgICAgZGlzcGF0Y2goNSkKIAorX2xsaW50X29wX3Byb2ZpbGVfdHlwZXNfd2l0
aF9oaWdoX2ZpZGVsaXR5OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Byb2Zp
bGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KQorICAgIGRpc3BhdGNoKDQpCisKK19sbGludF9v
cF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlKQor
ICAgIGRpc3BhdGNoKDgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdo
RmlkZWxpdHlMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hpZ2hGaWRlbGl0eUxvZy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKKworI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCisj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRp
YyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKwordm9pZCBIaWdoRmlkZWxpdHlMb2c6Omlu
aXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKQoreworICAgIEFTU0VSVCghbV9sb2dTdGFydFB0cik7
CisgICAgbV9oaWdoRmlkZWxpdHlMb2dTaXplID0gNTAwMDA7CisgICAgbV9sb2dTdGFydFB0ciA9
IChMb2czVHVwbGUqKikgbWFsbG9jKHNpemVvZihMb2czVHVwbGUqKSAqIG1faGlnaEZpZGVsaXR5
TG9nU2l6ZSk7CisgICAgbV9uZXh0QnVmZmVyID0gKExvZzNUdXBsZSoqKSBtYWxsb2Moc2l6ZW9m
KExvZzNUdXBsZSopICogbV9oaWdoRmlkZWxpdHlMb2dTaXplKTsKKyAgICBMb2czVHVwbGUqKiBw
MSA9IG1fbG9nU3RhcnRQdHI7CisgICAgTG9nM1R1cGxlKiogcDIgPSBtX25leHRCdWZmZXI7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsgaSsrKSB7
CisgICAgICAgICpwMSA9IG5ldyBMb2czVHVwbGU7IAorICAgICAgICAqcDIgPSBuZXcgTG9nM1R1
cGxlOyAKKyAgICAgICAgcDErKzsKKyAgICAgICAgcDIrKzsKKyAgICB9CisKKyAgICBtX2N1cnJl
bnRPZmZzZXQgPSAwOworfQorCitIaWdoRmlkZWxpdHlMb2c6On5IaWdoRmlkZWxpdHlMb2coKQor
eworICAgIExvZzNUdXBsZSoqIHAxID0gbV9sb2dTdGFydFB0cjsKKyAgICBMb2czVHVwbGUqKiBw
MiA9IG1fbmV4dEJ1ZmZlcjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faGlnaEZpZGVs
aXR5TG9nU2l6ZTsgaSsrKSB7CisgICAgICAgIGRlbGV0ZSAqcDE7CisgICAgICAgIGRlbGV0ZSAq
cDI7CisgICAgICAgIHAxKys7CisgICAgICAgIHAyKys7CisgICAgfQorCisgICAgZnJlZShtX2xv
Z1N0YXJ0UHRyKTsKKyAgICBmcmVlKG1fbmV4dEJ1ZmZlcik7Cit9CisKK3ZvaWQgSGlnaEZpZGVs
aXR5TG9nOjpyZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbihKU1ZhbHVlIHYsIFR5cGVM
b2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgQVNTRVJUKG1fbG9nU3RhcnRQdHIpOworICAgIEFT
U0VSVChtX2N1cnJlbnRPZmZzZXQgPCBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUpOworCisgICAgTG9n
M1R1cGxlKiB0dXBsZSA9ICoobV9sb2dTdGFydFB0ciArIG1fY3VycmVudE9mZnNldCk7CisKKyAg
ICB0dXBsZS0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICB0dXBsZS0+dmFsdWUgPSB2OworICAg
IHR1cGxlLT5zdHJ1Y3R1cmUgPSAodi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgp
IDogbnVsbHB0cik7CisKKyAgICBtX2N1cnJlbnRPZmZzZXQgKz0gMTsKKyAgICBpZiAobV9jdXJy
ZW50T2Zmc2V0ID09IG1faGlnaEZpZGVsaXR5TG9nU2l6ZSkKKyAgICAgICAgcHJvY2Vzc0hpZ2hG
aWRlbGl0eUxvZyh0cnVlLCAiTG9nIEZ1bGwiKTsKK30KKwordm9pZCBIaWdoRmlkZWxpdHlMb2c6
OnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coYm9vbCBhc3luY2hyb25vdXNseSwgU3RyaW5nIHJlYXNv
bikKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIGV4
ZWN1dGlvbiB0aHJlYWQuCisgICAgaWYgKCFtX2N1cnJlbnRPZmZzZXQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxlcjon
IiwgcmVhc29uLCInIik7CisKKyAgICBCeXRlU3BpbkxvY2tlciogbG9ja2VyID0gbmV3IEJ5dGVT
cGluTG9ja2VyKG1fbG9jayk7CisgICAgVGhyZWFkRGF0YSogZGF0YSA9IG5ldyBUaHJlYWREYXRh
OworICAgIGRhdGEtPm1fcHJvY2Nlc3NMb2dUb09mZnNldCA9IG1fY3VycmVudE9mZnNldDsKKyAg
ICBkYXRhLT5tX3Byb2Nlc3NMb2dQdHIgPSBtX2xvZ1N0YXJ0UHRyOworICAgIGRhdGEtPm1fbG9j
a2VyID0gbG9ja2VyOworCisgICAgbV9jdXJyZW50T2Zmc2V0ID0gMDsKKyAgICBMb2czVHVwbGUq
KiB0ZW1wID0gbV9sb2dTdGFydFB0cjsKKyAgICBtX2xvZ1N0YXJ0UHRyID0gbV9uZXh0QnVmZmVy
OworICAgIG1fbmV4dEJ1ZmZlciA9IHRlbXA7CisgICAgCisgICAgaWYgKGFzeW5jaHJvbm91c2x5
KQorICAgICAgICBjcmVhdGVUaHJlYWQoYWN0dWFsbHlQcm9jZXNzTG9nVGhyZWFkRnVuY3Rpb24s
IGRhdGEsICJQcm9jZXNzSGlnaEZpZGVsaXR5TG9nIik7CisgICAgZWxzZSAKKyAgICAgICAgYWN0
dWFsbHlQcm9jZXNzTG9nVGhyZWFkRnVuY3Rpb24oZGF0YSk7Cit9CisKK3ZvaWQgSGlnaEZpZGVs
aXR5TG9nOjphY3R1YWxseVByb2Nlc3NMb2dUaHJlYWRGdW5jdGlvbih2b2lkKiBhcmcpCit7Cisg
ICAgZG91YmxlIGJlZm9yZSAgPSBjdXJyZW50VGltZU1TKCk7CisgICAgVGhyZWFkRGF0YSogZGF0
YSA9IHN0YXRpY19jYXN0PFRocmVhZERhdGEqPihhcmcpOworICAgIExvZzNUdXBsZSoqIHB0ciA9
IGRhdGEtPm1fcHJvY2Vzc0xvZ1B0cjs7CisgICAgc2l6ZV90IHByb2Nlc3NMb2dUb09mZnNldCA9
IGRhdGEtPm1fcHJvY2Nlc3NMb2dUb09mZnNldDsgCisgICAgc2l6ZV90IGkgPSAwOworICAgIHdo
aWxlIChpIDwgcHJvY2Vzc0xvZ1RvT2Zmc2V0KSB7CisgICAgICAgIExvZzNUdXBsZSogdHVwbGUg
PSAqcHRyOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHR1cGxlLT5zdHJ1Y3R1cmUg
PyB0dXBsZS0+c3RydWN0dXJlIDogbnVsbHB0cjsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZVNo
YXBlPiBzaGFwZTsgCisgICAgICAgIGlmIChzdHJ1Y3R1cmUpCisgICAgICAgICAgICBzaGFwZSA9
IHN0cnVjdHVyZS0+dG9TdHJ1Y3R1cmVTaGFwZSgpOworICAgICAgICBpZiAodHVwbGUtPmxvY2F0
aW9uLT5tX2dsb2JhbFR5cGVTZXQpCisgICAgICAgICAgICB0dXBsZS0+bG9jYXRpb24tPm1fZ2xv
YmFsVHlwZVNldC0+YWRkVHlwZUZvclZhbHVlKHR1cGxlLT52YWx1ZSwgc2hhcGUpOworICAgICAg
ICB0dXBsZS0+bG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5hZGRUeXBlRm9yVmFsdWUo
dHVwbGUtPnZhbHVlLCBzaGFwZSk7CisgICAgICAgIHB0cisrOworICAgICAgICBpKys7CisgICAg
fQorCisgICAgZGVsZXRlIGRhdGEtPm1fbG9ja2VyOworICAgIGRlbGV0ZSBkYXRhOworICAgIGRv
dWJsZSBhZnRlciA9IGN1cnJlbnRUaW1lTVMoKTsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ZGF0YUxvZ0YoIlByb2Nlc3MgbG9nICclZicgbXNcbiIsIGFmdGVyIC0gYmVmb3JlKTsKK30KKwor
Cit9IC8vbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGlnaEZpZGVsaXR5TG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSGlnaEZpZGVsaXR5TG9nX2gKKyNkZWZpbmUgSGlnaEZpZGVsaXR5TG9nX2gKKworI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlIDx3dGYvQnl0ZVNwaW5Mb2NrLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCisgICAgY2xhc3MgVHlwZUxvY2F0aW9uOworCitjbGFzcyBI
aWdoRmlkZWxpdHlMb2cgeworCitwdWJsaWM6CisgICAgc3RydWN0IExvZzNUdXBsZSB7CisgICAg
ICAgIHB1YmxpYzoKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKKyAgICAgICAgVHlwZUxvY2F0aW9u
KiBsb2NhdGlvbjsgCisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgIH07CisKKyAg
ICBIaWdoRmlkZWxpdHlMb2coKQorICAgICAgICA6IG1fbG9nU3RhcnRQdHIoMCkKKyAgICB7Cisg
ICAgICAgIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKKyAgICB9CisKKyAgICB+SGlnaEZp
ZGVsaXR5TG9nKCk7CisKKyAgICB2b2lkIHJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9u
KEpTVmFsdWUgdiwgVHlwZUxvY2F0aW9uKik7CisgICAgdm9pZCBwcm9jZXNzSGlnaEZpZGVsaXR5
TG9nKGJvb2wgYXN5bmNocm9ub3VzbHkgPSBmYWxzZSwgU3RyaW5nID0gIiIpOworCitwcml2YXRl
OgorICAgIHZvaWQgaW5pdGlhbGl6ZUhpZ2hGaWRlbGl0eUxvZygpOworICAgIHN0YXRpYyB2b2lk
IGFjdHVhbGx5UHJvY2Vzc0xvZ1RocmVhZEZ1bmN0aW9uKHZvaWQqKTsKKworICAgIHVuc2lnbmVk
IG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsKKyAgICBzaXplX3QgbV9jdXJyZW50T2Zmc2V0OworICAg
IExvZzNUdXBsZSoqIG1fbG9nU3RhcnRQdHI7CisgICAgTG9nM1R1cGxlKiogbV9uZXh0QnVmZmVy
OworCisgICAgQnl0ZVNwaW5Mb2NrIG1fbG9jazsKKworICAgIHN0cnVjdCBUaHJlYWREYXRhIHsK
KyAgICAgICAgcHVibGljOgorICAgICAgICBMb2czVHVwbGUqKiBtX3Byb2Nlc3NMb2dQdHI7Cisg
ICAgICAgIHNpemVfdCBtX3Byb2NjZXNzTG9nVG9PZmZzZXQ7CisgICAgICAgIEJ5dGVTcGluTG9j
a2VyKiBtX2xvY2tlcjsKKyAgICB9OworfTsKKworfSAvL25hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vSGlnaEZpZGVsaXR5TG9nX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKKworI2luY2x1ZGUgIlR5cGVMb2NhdGlv
bi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworCitTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlh
YmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRMaW5lICwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxl
TmFtZSwgaW50cHRyX3Qgc291cmNlSUQpCit7CisgICAgU3RyaW5nIGdsb2JhbCA9IGdldEdsb2Jh
bFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUs
IGVuZENvbHVtbiwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7CisgICAgaWYgKCFnbG9iYWwuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gZ2xvYmFsOworICAgIAorICAgIHJldHVybiBnZXRMb2Nh
bFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUs
IGVuZENvbHVtbiwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7Cit9CisKK1dURjo6U3RyaW5nIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUluUmFuZ2Uo
dW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBX
VEY6OlN0cmluZyYsIGludHB0cl90IHNvdXJjZUlEKQoreworICAgIGF1dG8gaXRlciA9IG1fZ2xv
YmFsTG9jYXRpb25Ub0dsb2JhbElETWFwLmZpbmQoZ2V0TG9jYXRpb25CYXNlZEhhc2goc291cmNl
SUQsIHN0YXJ0TGluZSkpOworICAgIGF1dG8gZW5kID0gbV9nbG9iYWxMb2NhdGlvblRvR2xvYmFs
SURNYXAuZW5kKCk7CisgICAgaWYgKGl0ZXIgPT0gZW5kKQorICAgICAgICByZXR1cm4gIiI7CisK
KyAgICBhdXRvIGl0ZXIyID0gbV9nbG9iYWxJRE1hcC5maW5kKGl0ZXItPnZhbHVlKTsKKyAgICBh
dXRvIGVuZDIgPSBtX2dsb2JhbElETWFwLmVuZCgpOworICAgIGlmIChpdGVyMiA9PSBlbmQyKQor
ICAgICAgICByZXR1cm4gIiI7CisKKyAgICByZXR1cm4gaXRlcjItPnZhbHVlLT5zZWVuVHlwZXMo
KTsKK30KKworV1RGOjpTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRMb2NhbFR5
cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgLCB1bnNp
Z25lZCAsIHVuc2lnbmVkICwgY29uc3QgV1RGOjpTdHJpbmcmICwgaW50cHRyX3Qgc291cmNlSUQp
Cit7CisgICAgYXV0byBpdGVyID0gbV9nbG9iYWxMb2NhdGlvbk1hcC5maW5kKGdldExvY2F0aW9u
QmFzZWRIYXNoKHNvdXJjZUlELCBzdGFydExpbmUpKTsKKyAgICBhdXRvIGVuZCA9IG1fZ2xvYmFs
TG9jYXRpb25NYXAuZW5kKCk7CisgICAgaWYgKGl0ZXIgPT0gZW5kKQorICAgICAgICByZXR1cm4g
ICIiOworCisgICAgcmV0dXJuIGl0ZXItPnZhbHVlLT5zZWVuVHlwZXMoKTsKK30KKwordm9pZCBI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlvbiog
bG9jYXRpb24pCit7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2dGKCJSZWdpc3Rl
cmluZyBsb2NhdGlvbjo6IGxpbmU6JXUsIGNvbHVtbjoldVxuIiwgbG9jYXRpb24tPm1fbGluZSwg
bG9jYXRpb24tPm1fY29sdW1uKTsKKworICAgIFN0cmluZyBoYXNoU3RyaW5nKGdldExvY2F0aW9u
QmFzZWRIYXNoKGxvY2F0aW9uLT5tX3NvdXJjZUlELCBsb2NhdGlvbi0+bV9saW5lKSk7CisKKyAg
ICBpZiAobG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCAhPSBIaWdoRmlkZWxpdHlOb0dsb2Jh
bElERXhpc3RzKSB7IAorICAgICAgICBBU1NFUlQobV9nbG9iYWxJRE1hcC5pc1ZhbGlkS2V5KGxv
Y2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQpKTsKKyAgICAgICAgLy8gQnVpbGQgdGhlIG1hcHBp
bmcgcmVsYXRpb25zaGlwcyBNYXAxOmhhc2hTdHJpbmc9Pmdsb2JhbElkLCBNYXAyOmdsb2JhbElE
PT5UeXBlU2V0IAorICAgICAgICBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcC5zZXQoaGFz
aFN0cmluZywgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCk7CisgICAgICAgIG1fZ2xvYmFs
SURNYXAuc2V0KGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQsIGxvY2F0aW9uLT5tX2dsb2Jh
bFR5cGVTZXQuZ2V0KCkpOworICAgIH0KKworICAgIEFTU0VSVChtX2dsb2JhbExvY2F0aW9uTWFw
LmlzVmFsaWRLZXkoaGFzaFN0cmluZykpOworICAgIG1fZ2xvYmFsTG9jYXRpb25NYXAuc2V0KGhh
c2hTdHJpbmcsIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldC5nZXQoKSk7Cit9CisKK1dU
Rjo6U3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYXRpb25CYXNlZEhhc2go
aW50cHRyX3QgaWQsIHVuc2lnbmVkIGxpbmUpCit7CisgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KGlkKSArIFN0cmluZygiOiIpICsgU3RyaW5nOjpudW1iZXIobGluZSk7Cit9CisKK30gLy9uYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCisjZGVmaW5l
IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVHlwZUxvY2F0aW9uOworCitjbGFzcyBIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIgeworCitwdWJsaWM6CisgICAgV1RGOjpTdHJpbmcgZ2V0VHlwZXNG
b3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBXVEY6OlN0cmlu
ZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7CisgICAgV1RGOjpTdHJpbmcgZ2V0
R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25z
dCBXVEY6OlN0cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7CisgICAgV1RG
OjpTdHJpbmcgZ2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExp
bmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRD
b2x1bW4sIGNvbnN0IFdURjo6U3RyaW5nJiB2YXJpYWJsZU5hbWUsIGludHB0cl90IHNvdXJjZUlE
KTsKKyAgICB2b2lkIGluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlvbiopOworICAgIAorcHJp
dmF0ZToKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZ2V0TG9jYXRpb25CYXNlZEhhc2goaW50cHRy
X3QsIHVuc2lnbmVkKTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxXVEY6OlN0cmluZywgVHlwZVNl
dCo+IEdsb2JhbExvY2F0aW9uTWFwOyAvLyAoZm9yIG5vdywgaGFjayBpdCBhbmQgc2F5IE1hcDoi
SUQ6TGluZSIgPT4gVHlwZVNldC4gT2J2aW91c2x5LCB0aGlzIGFzc3VtZXMgYWxsIGFzc2lnbm1l
bnRzIGFyZSBvbiBkaXNjcmV0ZSBsaW5lcykuCisgICAgdHlwZWRlZiBIYXNoTWFwPGludDY0X3Qs
IFR5cGVTZXQqPiBHbG9iYWxJRE1hcDsgCisgICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6U3RyaW5n
LCBpbnQ2NF90PiBHbG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXA7CisKKyAgICBHbG9iYWxJRE1h
cCBtX2dsb2JhbElETWFwOworICAgIEdsb2JhbExvY2F0aW9uTWFwIG1fZ2xvYmFsTG9jYXRpb25N
YXA7CisgICAgR2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwIG1fZ2xvYmFsTG9jYXRpb25Ub0ds
b2JhbElETWFwOworfTsKKworCit9IC8vbmFtZXNwYWNlIEpTQworCisKKyNlbmRpZiAvL0hpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlcl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmgJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSw5IEBAIHR5cGVk
ZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgZGlzYWJsZUdDLCBmYWxz
ZSkgXAogICAgIHYodW5zaWduZWQsIGdjTWF4SGVhcFNpemUsIDApIFwKICAgICB2KGJvb2wsIHJl
Y29yZEdDUGF1c2VUaW1lcywgZmFsc2UpIFwKLSAgICB2KGJvb2wsIGxvZ0hlYXBTdGF0aXN0aWNz
QXRFeGl0LCBmYWxzZSkKKyAgICB2KGJvb2wsIGxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0LCBmYWxz
ZSkgXAorICAgIHYoYm9vbCwgcHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSwgZmFsc2UpCisg
ICAgCiAKIGNsYXNzIE9wdGlvbnMgewogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxNzAzMzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDUyLDYgKzEwNTIsNDAgQEAgYm9vbCBTdHJ1Y3R1cmU6OnByb3RvdHlwZUNoYWluTWF5SW50ZXJj
ZQogICAgIH0KIH0KIAorCitQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRv
U3RydWN0dXJlU2hhcGUoKQoreworICAgIFZlY3RvcjxTdHJ1Y3R1cmUqLCA4PiBzdHJ1Y3R1cmVz
OworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgIFByb3BlcnR5VGFibGUqIHRhYmxlOwor
ICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gc2hhcGUgPSBTdHJ1Y3R1cmVTaGFwZTo6Y3JlYXRl
KCk7CisKKyAgICBmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihzdHJ1Y3R1
cmVzLCBzdHJ1Y3R1cmUsIHRhYmxlKTsKKyAgICAKKyAgICBpZiAodGFibGUpIHsKKyAgICAgICAg
UHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLT5iZWdpbigpOworICAgICAgICBQ
cm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS0+ZW5kKCk7CisKKyAgICAgICAgZm9y
ICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIHNoYXBlLT5hZGRQcm9wZXJ0
eShpdGVyLT5rZXkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdHJ1Y3R1cmUtPm1f
bG9jay51bmxvY2soKTsKKyAgICB9CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gc3RydWN0
dXJlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1
Y3R1cmVzW2ldOworICAgICAgICBpZiAoIXN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cykKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNoYXBlLT5hZGRQcm9wZXJ0eShzdHJ1Y3R1
cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0KCkpOworICAgIH0KKworICAgIHNoYXBlLT5tYXJrQXNG
aW5hbCgpOworCisgICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKK30KKwogdm9pZCBTdHJ1Y3R1
cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoUmF3UG9p
bnRlcih0aGlzKSwgIjpbIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDE3MDMz
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTAsNiArMzkwLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQ7CiAgICAgfQorCisgICAgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmVTaGFwZT4gdG9TdHJ1Y3R1cmVTaGFwZSgpOwogICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1
bXBDb250ZXh0KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAxNzAzMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsx
MDMsMTEgQEAgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlKFZNJiB2bSkKICAgICAsIG1fY2FwdHVy
ZUVuZCgwKQogICAgICwgbV9mdW5jdGlvbkVudGVyZWRPbmNlKENsZWFyV2F0Y2hwb2ludCkKIHsK
KyAgICBpZiAodm0uaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAg
ICBtX3VuaXF1ZUlETWFwID0gc3RkOjptYWtlX3VuaXF1ZTxVbmlxdWVJRE1hcD4oKTsKKyAgICAg
ICAgbV9yZWdpc3RlclRvVmFyaWFibGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyVG9W
YXJpYWJsZU1hcD4oKTsKKyAgICAgICAgbV91bmlxdWVUeXBlU2V0TWFwID0gc3RkOjptYWtlX3Vu
aXF1ZTxVbmlxdWVUeXBlU2V0TWFwPigpOworICAgIH0KIH0KIAogU3ltYm9sVGFibGU6On5TeW1i
b2xUYWJsZSgpIHsgfQpAQCAtMTU3LDkgKzE2Miw3MiBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFi
bGU6OmNsb25lQ2FwdHVyZWROCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHBhcmFtZXRlckNv
dW50KCk7IGktLTspCiAgICAgICAgICAgICByZXN1bHQtPm1fc2xvd0FyZ3VtZW50c1tpXSA9IG1f
c2xvd0FyZ3VtZW50c1tpXTsKICAgICB9CisKKyAgICBpZiAobV91bmlxdWVJRE1hcCAmJiByZXN1
bHQtPm1fdW5pcXVlSURNYXApIHsKKworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGl0ZXIg
PSBtX3VuaXF1ZUlETWFwLT5iZWdpbigpOworICAgICAgICAgICAgYXV0byBlbmQgPSBtX3VuaXF1
ZUlETWFwLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC0+bV91bmlxdWVJRE1hcC0+c2V0KGl0ZXItPmtleSwgaXRl
ci0+dmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBpdGVy
ID0gbV9yZWdpc3RlclRvVmFyaWFibGVNYXAtPmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVu
ZCA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBp
dGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yZWdpc3RlclRv
VmFyaWFibGVNYXAtPnNldChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fdW5pcXVlVHlwZVNldE1hcC0+YmVn
aW4oKTsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gbV91bmlxdWVUeXBlU2V0TWFwLT5lbmQoKTsK
KyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAg
IHJlc3VsdC0+bV91bmlxdWVUeXBlU2V0TWFwLT5zZXQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSk7
CisgICAgICAgIH0KKyAgICB9CisKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitpbnQ2
NF90IFN5bWJvbFRhYmxlOjp1bmlxdWVJREZvclZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImLCBTdHJpbmdJbXBsKiBrZXksIFZNJiB2bSkKK3sKKyAgICBhdXRvIGl0ZXIgPSBtX3Vu
aXF1ZUlETWFwLT5maW5kKGtleSk7CisgICAgYXV0byBlbmQgPSBtX3VuaXF1ZUlETWFwLT5lbmQo
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGVuZCwgaXRlciAhPSBlbmQpOworCisgICAgaW50NjRfdCYg
aWQgPSBpdGVyLT52YWx1ZTsKKyAgICBpZiAoaWQgPT0gSGlnaEZpZGVsaXR5TmVlZHNVbmlxdWVJ
REdlbmVyYXRpb24pIHsKKyAgICAgICAgaWQgPSB2bS5nZXROZXh0VW5pcXVlVmFyaWFibGVJRCgp
OworICAgICAgICBtX3VuaXF1ZVR5cGVTZXRNYXAtPnNldChrZXksIG5ldyBUeXBlU2V0KTsgLy9t
YWtlIGEgbmV3IGdsb2JhbCB0eXBlc2V0IGZvciB0aGUgSUQKKyAgICB9CisgICAgICAgICAKKyAg
ICByZXR1cm4gaWQ7Cit9CisKK2ludDY0X3QgU3ltYm9sVGFibGU6OnVuaXF1ZUlERm9yUmVnaXN0
ZXIoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBpbnQgcmVnaXN0ZXJJbmRleCwg
Vk0mIHZtKQoreworICAgIGF1dG8gaXRlciA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5maW5k
KHJlZ2lzdGVySW5kZXgpOworICAgIGF1dG8gZW5kID0gbV9yZWdpc3RlclRvVmFyaWFibGVNYXAt
PmVuZCgpOworICAgIEFTU0VSVF9VTlVTRUQoZW5kLCBpdGVyICE9IGVuZCk7CisgICAgcmV0dXJu
IHVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpdGVyLT52YWx1ZS5nZXQoKSwgdm0pOworfQor
CitUeXBlU2V0KiBTeW1ib2xUYWJsZTo6Z2xvYmFsVHlwZVNldEZvclJlZ2lzdGVyKGNvbnN0IENv
bmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgaW50IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSkKK3sK
KyAgICB1bmlxdWVJREZvclJlZ2lzdGVyKGxvY2tlciwgcmVnaXN0ZXJJbmRleCwgdm0pOyAvL2Vu
c3VyZSBpdCdzIGNyZWF0ZWQKKyAgICBhdXRvIGl0ZXIgPSBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1h
cC0+ZmluZChyZWdpc3RlckluZGV4KTsKKyAgICBhdXRvIGVuZCA9IG1fcmVnaXN0ZXJUb1Zhcmlh
YmxlTWFwLT5lbmQoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGVuZCwgaXRlciAhPSBlbmQpOworICAg
IHJldHVybiBnbG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUobG9ja2VyLCBpdGVyLT52YWx1ZS5nZXQo
KSwgdm0pOworfQorCitUeXBlU2V0KiBTeW1ib2xUYWJsZTo6Z2xvYmFsVHlwZVNldEZvclZhcmlh
YmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgU3RyaW5nSW1wbCoga2V5LCBW
TSYgdm0pCit7CisgICAgdW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGtleSwgdm0pOworICAg
IHJldHVybiBtX3VuaXF1ZVR5cGVTZXRNYXAtPmZpbmQoa2V5KS0+dmFsdWU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJUeXBlU2V0LmgiCiAjaW5jbHVkZSAiVmFyaWFibGVXYXRjaHBvaW50U2V0LmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CkBAIC0zMzYsNiAr
MzM3LDkgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBTeW1ib2xUYWJsZUVudHJ5LCBJZGVudGlmaWVy
UmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8U3RyaW5nSW1wbD4+LCBTeW1ib2xUYWJsZUluZGV4
SGFzaFRyYWl0cz4gTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4s
IGludDY0X3Q+IFVuaXF1ZUlETWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5n
SW1wbD4sIFR5cGVTZXQqPiBVbmlxdWVUeXBlU2V0TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxp
bnQsIFJlZlB0cjxTdHJpbmdJbXBsPiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8aW50Pj4gUmVnaXN0ZXJUb1ZhcmlhYmxlTWFwOwogCiAgICAg
c3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZtKQogICAgIHsKQEAgLTQxMyw2ICs0MTcs
MTIgQEAgcHVibGljOgogICAgIAogICAgIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5LCBjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBl
bnRyeSkKICAgICB7CisgICAgICAgIGlmIChtX3VuaXF1ZUlETWFwKSB7CisgICAgICAgICAgICAv
LyBVc2UgYSBmbGFnIHRvIGluZGljYXRlIHRoYXQgd2UgbmVlZCB0byBwcm9kdWNlIGEgdW5pcXVl
IElELiBCZWNhdXNlIFZNIGlzIGluIGNoYXJnZSBvZiBjcmVhdGluZyB1bmlxdWVJRHMsIAorICAg
ICAgICAgICAgLy8gd2hlbiB1bmlxdWVJRCgpIGlzIGNhbGxlZCwgd2UgY2hlY2sgdGhpcyBmbGFn
IHRvIHNlZSBpZiB1bmlxdWVJRCBjcmVhdGlvbiBpcyBuZWNlc3NhcnkuCisgICAgICAgICAgICBt
X3VuaXF1ZUlETWFwLT5zZXQoa2V5LCBIaWdoRmlkZWxpdHlOZWVkc1VuaXF1ZUlER2VuZXJhdGlv
bik7IAorICAgICAgICAgICAgbV9yZWdpc3RlclRvVmFyaWFibGVNYXAtPnNldChlbnRyeS5nZXRJ
bmRleCgpLCBrZXkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX21hcC5hZGQoa2V5LCBl
bnRyeSk7CiAgICAgfQogICAgIApAQCAtNDI0LDYgKzQzNCwxMCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgTWFwOjpBZGRSZXN1bHQgc2V0KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJ
bXBsKiBrZXksIGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5KQogICAgIHsKKyAgICAgICAg
aWYgKG1fdW5pcXVlSURNYXApIHsKKyAgICAgICAgICAgIG1fdW5pcXVlSURNYXAtPnNldChrZXks
IEhpZ2hGaWRlbGl0eU5lZWRzVW5pcXVlSURHZW5lcmF0aW9uKTsgCisgICAgICAgICAgICBtX3Jl
Z2lzdGVyVG9WYXJpYWJsZU1hcC0+c2V0KGVudHJ5LmdldEluZGV4KCksIGtleSk7CisgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIG1fbWFwLnNldChrZXksIGVudHJ5KTsKICAgICB9CiAgICAgCkBA
IC00NDQsNiArNDU4LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNvbnRhaW5zKGxvY2tl
ciwga2V5KTsKICAgICB9CiAgICAgCisgICAgaW50NjRfdCB1bmlxdWVJREZvclZhcmlhYmxlKGNv
bnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXksIFZNJiB2bSk7CisgICAg
aW50NjRfdCB1bmlxdWVJREZvclJlZ2lzdGVyKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxv
Y2tlciwgaW50IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSk7CisgICAgVHlwZVNldCogZ2xvYmFsVHlw
ZVNldEZvclJlZ2lzdGVyKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgaW50IHJl
Z2lzdGVySW5kZXgsIFZNJiB2bSk7CisgICAgVHlwZVNldCogZ2xvYmFsVHlwZVNldEZvclZhcmlh
YmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgU3RyaW5nSW1wbCoga2V5LCBW
TSYgdm0pOworCiAgICAgYm9vbCB1c2VzTm9uU3RyaWN0RXZhbCgpIHsgcmV0dXJuIG1fdXNlc05v
blN0cmljdEV2YWw7IH0KICAgICB2b2lkIHNldFVzZXNOb25TdHJpY3RFdmFsKGJvb2wgdXNlc05v
blN0cmljdEV2YWwpIHsgbV91c2VzTm9uU3RyaWN0RXZhbCA9IHVzZXNOb25TdHJpY3RFdmFsOyB9
CiAKQEAgLTQ5NCw3ICs1MTMsMTAgQEAgcHJpdmF0ZToKICAgICB+U3ltYm9sVGFibGUoKTsKIAog
ICAgIE1hcCBtX21hcDsKLSAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlSURNYXA+IG1f
dW5pcXVlSURNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyVG9WYXJpYWJsZU1hcD4g
bV9yZWdpc3RlclRvVmFyaWFibGVNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPFVuaXF1ZVR5cGVT
ZXRNYXA+IG1fdW5pcXVlVHlwZVNldE1hcDsKKwogICAgIGludCBtX3BhcmFtZXRlckNvdW50SW5j
bHVkaW5nVGhpczsKICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWw7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVHlwZVNldC5oIgorCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK1R5cGVT
ZXQ6OlR5cGVTZXQoKQorICAgIDogbV9zZWVuVHlwZXMoVHlwZU5vdGhpbmcpCisgICAgLCBtX3N0
cnVjdHVyZUhpc3RvcnkobmV3IFZlY3RvcjxSZWZQdHI8U3RydWN0dXJlU2hhcGU+PikKKyAgICAs
IG1fbWlnaHRIYXZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeShmYWxzZSkKK3sKK30KKwor
UnVudGltZVR5cGUgVHlwZVNldDo6Z2V0UnVudGltZVR5cGVGb3JWYWx1ZShKU1ZhbHVlIHYpCit7
CisgICAgUnVudGltZVR5cGUgcmV0OworICAgIGlmICh2LmlzRnVuY3Rpb24oKSkKKyAgICAgICAg
cmV0ID0gVHlwZUZ1bmN0aW9uOworICAgIGVsc2UgaWYgKHYuaXNVbmRlZmluZWQoKSkKKyAgICAg
ICAgcmV0ID0gVHlwZVVuZGVmaW5lZDsKKyAgICBlbHNlIGlmICh2LmlzTnVsbCgpKQorICAgICAg
ICByZXQgPSBUeXBlTnVsbDsKKyAgICBlbHNlIGlmICh2LmlzQm9vbGVhbigpKQorICAgICAgICBy
ZXQgPSBUeXBlQm9vbGVhbjsKKyAgICBlbHNlIGlmICh2LmlzTWFjaGluZUludCgpKQorICAgICAg
ICByZXQgPSBUeXBlTWFjaGluZUludDsKKyAgICBlbHNlIGlmICh2LmlzTnVtYmVyKCkpCisgICAg
ICAgIHJldCA9IFR5cGVOdW1iZXI7CisgICAgZWxzZSBpZiAodi5pc1N0cmluZygpKQorICAgICAg
ICByZXQgPSBUeXBlU3RyaW5nOworICAgIGVsc2UgaWYgKHYuaXNQcmltaXRpdmUoKSkKKyAgICAg
ICAgcmV0ID0gVHlwZVByaW1pdGl2ZTsKKyAgICBlbHNlIGlmICh2LmlzT2JqZWN0KCkpCisgICAg
ICAgIHJldCA9IFR5cGVPYmplY3Q7CisgICAgZWxzZQorICAgICAgICBDUkFTSCgpOworCisgICAg
cmV0dXJuIHJldDsKK30KKwordm9pZCBUeXBlU2V0OjphZGRUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2
LCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBzaGFwZSkgCit7CisgICAgUnVudGltZVR5cGUg
dCA9IGdldFJ1bnRpbWVUeXBlRm9yVmFsdWUodik7CisgICAgbV9zZWVuVHlwZXMgPSBtX3NlZW5U
eXBlcyB8IHQ7CisKKyAgICBpZiAoc2hhcGUpIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmVIaXN0b3J5
LT5hcHBlbmQoc2hhcGUpOworICAgICAgICBtX21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVy
ZUhpc3RvcnkgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBUeXBlU2V0OjpyZW1vdmVEdXBsaWNh
dGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KCkgCit7CisgICAgVmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVT
aGFwZT4+KiBuZXdIaXN0b3J5ID0gbmV3IFZlY3RvcjxSZWZQdHI8U3RydWN0dXJlU2hhcGU+PjsK
KyAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gY29udGFpbmVyOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LT5zaXplKCk7IGkrKykgeworICAgICAgICBSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+IGEgPSBtX3N0cnVjdHVyZUhpc3RvcnktPmF0KGkpOworICAgICAg
ICBTdHJpbmcgaGFzaCA9IGEtPnByb3BlcnR5SGFzaCgpOworICAgICAgICBhdXRvIGl0ZXIgPSBj
b250YWluZXIuZmluZChoYXNoKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gY29udGFpbmVyLmVuZCgp
KSB7CisgICAgICAgICAgICBjb250YWluZXIuYWRkKGhhc2gsIHRydWUpOworICAgICAgICAgICAg
bmV3SGlzdG9yeS0+YXBwZW5kKGEpOworICAgICAgICB9CisgICAgfQorCisgICAgZGVsZXRlIG1f
c3RydWN0dXJlSGlzdG9yeTsKKyAgICBtX3N0cnVjdHVyZUhpc3RvcnkgPSBuZXdIaXN0b3J5Owor
ICAgIG1fbWlnaHRIYXZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeSA9IGZhbHNlOworfQor
CitXVEY6OlN0cmluZyBUeXBlU2V0OjpzZWVuVHlwZXMoKSAKK3sKKyAgICBpZiAobV9zZWVuVHlw
ZXMgPT0gVHlwZU5vdGhpbmcpCisgICAgICAgIHJldHVybiAiKFVucmVhY2hlZCBTdGF0ZW1lbnQp
IjsKKworICAgIGlmIChtX21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkpCisg
ICAgICAgIHJlbW92ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkoKTsKKworICAgIFdURjo6
U3RyaW5nIHNlZW4oIiIpOworCisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZUZ1bmN0aW9uKQor
ICAgICAgICAgc2Vlbi5hcHBlbmQoIkZ1bmN0aW9uICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAm
IFR5cGVVbmRlZmluZWQpCisgICAgICAgICBzZWVuLmFwcGVuZCgiVW5kZWZpbmVkICIpOworICAg
IGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdWxsKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIk51bGwg
Iik7CisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZUJvb2xlYW4pCisgICAgICAgICBzZWVuLmFw
cGVuZCgiQm9vbGVhbiAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTWFjaGluZUludCkK
KyAgICAgICAgIHNlZW4uYXBwZW5kKCJNYWNoaW5lSW50ICIpOworICAgIGlmIChtX3NlZW5UeXBl
cyAmIFR5cGVOdW1iZXIpCisgICAgICAgICBzZWVuLmFwcGVuZCgiTnVtYmVyICIpOworICAgIGlm
IChtX3NlZW5UeXBlcyAmIFR5cGVTdHJpbmcpCisgICAgICAgICBzZWVuLmFwcGVuZCgiU3RyaW5n
ICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVQcmltaXRpdmUpCisgICAgICAgICBzZWVu
LmFwcGVuZCgiUHJpbWl0aXZlICIpOworCisgICAgc2Vlbi5hcHBlbmQoIlN0cnVjdHVyZXM6WyAi
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJlSGlzdG9yeS0+c2l6ZSgp
OyBpKyspIHsKKyAgICAgICAgc2Vlbi5hcHBlbmQobV9zdHJ1Y3R1cmVIaXN0b3J5LT5hdChpKS0+
c3RyaW5nUmVwcmVzZW50YXRpb24oKSk7CisgICAgICAgIHNlZW4uYXBwZW5kKCIgIik7CisgICAg
fQorICAgIHNlZW4uYXBwZW5kKCJdIik7CisKKyAgICBpZiAobV9zdHJ1Y3R1cmVIaXN0b3J5LT5z
aXplKCkpIHsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIiAgIik7CisgICAgICAgIHNlZW4uYXBwZW5k
KCJMVUI6ICIpOworICAgICAgICBzZWVuLmFwcGVuZChTdHJ1Y3R1cmVTaGFwZTo6bGVhc3RVcHBl
ckJvdW5kKG1fc3RydWN0dXJlSGlzdG9yeSkpOworICAgIH0KKworICAgIHJldHVybiBzZWVuOwor
fQorCit2b2lkIFR5cGVTZXQ6OmR1bXBTZWVuVHlwZXMoKQoreworICAgIGRhdGFMb2coc2VlblR5
cGVzKCksICJcbiIpOworfQorCitTdHJ1Y3R1cmVTaGFwZTo6U3RydWN0dXJlU2hhcGUoKQorICAg
IDogbV9wcm9wZXJ0eUhhc2gobnVsbHB0cikKKyAgICAsIG1fZmluYWwoZmFsc2UpCit7Cit9CisK
K3ZvaWQgU3RydWN0dXJlU2hhcGU6Om1hcmtBc0ZpbmFsKCkKK3sKKyAgICBBU1NFUlQoIW1fZmlu
YWwpOworICAgIG1fZmluYWwgPSB0cnVlOworfQorCit2b2lkIFN0cnVjdHVyZVNoYXBlOjphZGRQ
cm9wZXJ0eShSZWZQdHI8V1RGOjpTdHJpbmdJbXBsPiBpbXBsKQoreworICAgIEFTU0VSVCghbV9m
aW5hbCk7CisgICAgbV9maWVsZHMuc2V0KGltcGwsIHRydWUpOworfQorCitTdHJpbmcgU3RydWN0
dXJlU2hhcGU6OnByb3BlcnR5SGFzaCgpIAoreworICAgIEFTU0VSVChtX2ZpbmFsKTsKKyAgICBp
ZiAobV9wcm9wZXJ0eUhhc2gpCisgICAgICAgIHJldHVybiAqbV9wcm9wZXJ0eUhhc2g7CisKKyAg
ICBtX3Byb3BlcnR5SGFzaCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RyaW5nPigpOworICAgIG1fcHJv
cGVydHlIYXNoLT5hcHBlbmQoIjoiKTsKKyAgICBmb3IgKGF1dG8gaXRlciA9IG1fZmllbGRzLmJl
Z2luKCksIGVuZCA9IG1fZmllbGRzLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAg
ICAgIFN0cmluZyBwcm9wZXJ0eSA9IFN0cmluZyhpdGVyLT5rZXkpOworICAgICAgICBwcm9wZXJ0
eS5yZXBsYWNlKCI6IiwgIlxcOiIpOyAvLyBFbnN1cmUgdGhhdCBoYXNoKHsiZm9vOiIsICJiYXIi
fSkgIT0gaGFzaCh7ImZvbyIsICI6YmFyIn0pIGJlY2F1c2Ugd2UncmUgdXNpbmcgY29sb25zIGFz
IGEgc2VwYXJhdG9yIGFuZCBjb2xvbnMgYXJlIGxlZ2FsIGNoYXJhY3RlcnMgaW4gZmllbGQgbmFt
ZXMgaW4gSlMuCisgICAgICAgIG1fcHJvcGVydHlIYXNoLT5hcHBlbmQocHJvcGVydHkpOworICAg
IH0KKworICAgIHJldHVybiAqbV9wcm9wZXJ0eUhhc2g7Cit9CisKK1dURjo6U3RyaW5nIFN0cnVj
dHVyZVNoYXBlOjpsZWFzdFVwcGVyQm91bmQoVmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+
KiBzaGFwZXMpCit7CisgICAgU3RyaW5nIGx1YigiIik7CisKKyAgICBpZiAoIXNoYXBlcy0+c2l6
ZSgpKQorICAgICAgICByZXR1cm4gbHViOworICAgICAKKyAgICBSZWZQdHI8U3RydWN0dXJlU2hh
cGU+IG9yaWdpbiA9IHNoYXBlcy0+YXQoMCk7CisgICAgbHViLmFwcGVuZCgieyIpOworICAgIGZv
ciAoYXV0byBpdGVyID0gb3JpZ2luLT5tX2ZpZWxkcy5iZWdpbigpLCBlbmQgPSBvcmlnaW4tPm1f
ZmllbGRzLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgIGJvb2wgc2hvdWxk
QWRkID0gdHJ1ZTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDEsIHNpemUgPSBzaGFwZXMtPnNp
emUoKTsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgLy8gSWYgYWxsIG90aGVyIFNoYXBl
cyBoYXZlIHRoZSBzYW1lIGZpZWxkIGFzIG9yaWdpbiwgYWRkIGl0IHRvIHRoZSBsZWFzdCB1cHBl
ciBib3VuZC4KKyAgICAgICAgICAgIGlmICghc2hhcGVzLT5hdChpKS0+bV9maWVsZHMuY29udGFp
bnMoaXRlci0+a2V5KSkgeworICAgICAgICAgICAgICAgIHNob3VsZEFkZCA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlm
IChzaG91bGRBZGQpCisgICAgICAgICAgICBsdWIuYXBwZW5kKFN0cmluZyhpdGVyLT5rZXkuZ2V0
KCkpICsgU3RyaW5nKCIsICIpKTsKKyAgICB9CisKKyAgICBpZiAobHViLmxlbmd0aCgpID49IDMp
CisgICAgICAgIGx1YiA9IGx1Yi5sZWZ0KGx1Yi5sZW5ndGgoKSAtIDIpOyAvLyBSZW1vdmUgdGhl
IHRyYWlsaW5nICcsICcKKworICAgIGx1Yi5hcHBlbmQoIn0iKTsKKyAgICAKKyAgICByZXR1cm4g
bHViOworfQorCitTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnN0cmluZ1JlcHJlc2VudGF0aW9uKCkK
K3sKKyAgICBTdHJpbmcgcmVwcmVzZW50YXRpb24oInsiKTsKKyAgICBmb3IgKGF1dG8gaXRlciA9
IG1fZmllbGRzLmJlZ2luKCksIGVuZCA9IG1fZmllbGRzLmVuZCgpOyBpdGVyICE9IGVuZDsgKytp
dGVyKSB7CisgICAgICAgIFN0cmluZyBwcm9wKGl0ZXItPmtleS5nZXQoKSk7CisgICAgICAgIHJl
cHJlc2VudGF0aW9uLmFwcGVuZChwcm9wKTsKKyAgICAgICAgcmVwcmVzZW50YXRpb24uYXBwZW5k
KCIsICIpOworICAgIH0KKworICAgIGlmIChyZXByZXNlbnRhdGlvbi5sZW5ndGgoKSA+PSAzKQor
ICAgICAgICByZXByZXNlbnRhdGlvbiA9IHJlcHJlc2VudGF0aW9uLmxlZnQocmVwcmVzZW50YXRp
b24ubGVuZ3RoKCkgLSAyKTsKKworICAgIHJlcHJlc2VudGF0aW9uLmFwcGVuZCgifSIpOworCisg
ICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uOworfQorCit9IC8vbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBUeXBlU2V0X2gKKyNkZWZpbmUgVHlwZVNldF9oCisKKworI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBKU1ZhbHVlOworCitlbnVtIFJ1bnRpbWVUeXBlIHsKKyAgICBU
eXBlTm90aGluZyAgICAgICAgICAgID0gMHgwLAorICAgIFR5cGVGdW5jdGlvbiAgICAgICAgICAg
PSAweDEsCisgICAgVHlwZVVuZGVmaW5lZCAgICAgICAgICA9IDB4MiwKKyAgICBUeXBlTnVsbCAg
ICAgICAgICAgICAgID0gMHg0LAorICAgIFR5cGVCb29sZWFuICAgICAgICAgICAgPSAweDgsCisg
ICAgVHlwZU1hY2hpbmVJbnQgICAgICAgICA9IDB4MTAsCisgICAgVHlwZU51bWJlciAgICAgICAg
ICAgICA9IDB4MjAsCisgICAgVHlwZVN0cmluZyAgICAgICAgICAgICA9IDB4NDAsCisgICAgVHlw
ZVByaW1pdGl2ZSAgICAgICAgICA9IDB4ODAsCisgICAgVHlwZU9iamVjdCAgICAgICAgICAgICA9
IDB4MTAwCit9OworCitjbGFzcyBTdHJ1Y3R1cmVTaGFwZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0
cnVjdHVyZVNoYXBlPiB7CisgICAgZnJpZW5kIGNsYXNzIFR5cGVTZXQ7CisKK3B1YmxpYzoKKyAg
ICBTdHJ1Y3R1cmVTaGFwZSgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hh
cGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJ1Y3R1cmVTaGFwZSk7IH0KKyAg
ICBXVEY6OlN0cmluZyBwcm9wZXJ0eUhhc2goKTsKKyAgICB2b2lkIG1hcmtBc0ZpbmFsKCk7Cisg
ICAgdm9pZCBhZGRQcm9wZXJ0eShSZWZQdHI8V1RGOjpTdHJpbmdJbXBsPik7CisgICAgc3RhdGlj
IFdURjo6U3RyaW5nIGxlYXN0VXBwZXJCb3VuZChWZWN0b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBl
Pj4qKTsKKyAgICBXVEY6OlN0cmluZyBzdHJpbmdSZXByZXNlbnRhdGlvbigpOworCitwcml2YXRl
OgorICAgIEhhc2hNYXA8UmVmUHRyPFdURjo6U3RyaW5nSW1wbD4sIGJvb2w+IG1fZmllbGRzOyAg
ICAgICAgIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6OlN0cmluZz4gbV9wcm9wZXJ0eUhhc2g7
CisgICAgYm9vbCBtX2ZpbmFsOworfTsKKworY2xhc3MgVHlwZVNldCB7CisKK3B1YmxpYzoKKyAg
ICBUeXBlU2V0KCk7CisgICAgdm9pZCBhZGRUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2LCBQYXNzUmVm
UHRyPFN0cnVjdHVyZVNoYXBlPik7CisgICAgc3RhdGljIFJ1bnRpbWVUeXBlIGdldFJ1bnRpbWVU
eXBlRm9yVmFsdWUoSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV1RGOjpTdHJpbmcg
c2VlblR5cGVzKCk7CisKK3ByaXZhdGU6CisgICAgdWludDMyX3QgbV9zZWVuVHlwZXM7CisgICAg
dm9pZCBkdW1wU2VlblR5cGVzKCk7CisgICAgVmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+
KiBtX3N0cnVjdHVyZUhpc3Rvcnk7CisgICAgYm9vbCBtX21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0
cnVjdHVyZUhpc3Rvcnk7CisgICAgdm9pZCByZW1vdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0
b3J5KCk7CisKK307CisKK30gLy9uYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvL1R5cGVTZXRfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTcwMzMyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0Nyw4IEBACiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVh
cC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgorI2luY2x1ZGUgIkhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oIgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxvZy5oIgogI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCkBAIC04OCw2ICs5MCw3IEBACiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3Rz
LmgiCkBAIC0yMzYsNiArMjM5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkKICAgICAsIG1f
ZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCiAgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX25leHRVbmlxdWVWYXJpYWJs
ZUlEKDEpCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAg
IFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CkBAIC0zMjcsNiAr
MzMxLDEyIEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAv
LyBJbml0aWFsaXplIHRoaXMgbGFzdCwgYXMgYSBmcmVlIHdheSBvZiBhc3NlcnRpbmcgdGhhdCBW
TSBpbml0aWFsaXphdGlvbiBpdHNlbGYKICAgICAvLyB3b24ndCB1c2UgdGhpcy4KICAgICBtX3R5
cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFNpbXBsZVR5cGVkQXJyYXlDb250cm9s
bGVyKCkpOworCisgICAgLy8gRklYTUU6IGNvbmRpdGlvbmFsbHkgYWxsb2NhdGUgdGhpcyBzdHVm
ZiBiYXNlZCBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgaW5zcGVjdG9yIGlzIHJ1bm5pbmcgT1IgdGhp
cyBmbGFnIGlzIGVuYWJsZWQgKG5vdCBqdXN0IGlmIHRoZSBmbGFnIGlzIGVuYWJsZWQpLgorICAg
IGlmIChPcHRpb25zOjpwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAg
bV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlcj4oKTsKKyAgICAgICAgbV9oaWdoRmlkZWxpdHlMb2cgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhpZ2hGaWRlbGl0eUxvZz4oKTsKKyAgICB9CiB9CiAKIFZNOjp+Vk0oKQpAQCAtOTE5
LDYgKzkyOSw0MyBAQCB2b2lkIFZNOjpzZXRFbmFibGVkUHJvZmlsZXIoTGVnYWN5UHJvZmlsCiAg
ICAgfQogfQogCitTdHJpbmcgVk06OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVk
IHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2ln
bmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYg
c291cmNlSURBc1N0cmluZykKK3sKKyAgICBpZiAoIWlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZp
ZGVsaXR5KCkpCisgICAgICAgIHJldHVybiAiKE5vdCBQcm9maWxpbmcpIjsKKworICAgIGJvb2wg
b2theTsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRCA9IHNvdXJjZUlEQXNTdHJpbmcudG9JbnRQdHJT
dHJpY3QoJm9rYXkpOworICAgIGlmICghb2theSkKKyAgICAgICAgQ1JBU0goKTsKKworICAgIHVw
ZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUoKTsKKyAgICByZXR1cm4gbV9oaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXItPmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHN0YXJ0TGluZSwg
c3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7
Cit9CisKK3ZvaWQgVk06OnVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUoKQorewor
ICAgIGlmICghaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaGlnaEZpZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coZmFs
c2UsICJWTSBVcGRhdGUiKTsKK30KKwordm9pZCBWTTo6ZHVtcEhpZ2hGaWRlbGl0eVByb2ZpbGlu
Z1R5cGVzKCkKK3sKKyAgICBpZiAoIWlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3Rh
dGUoKTsKKyAgICBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIqIHByb2ZpbGVyID0gbV9oaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIuZ2V0KCk7CisgICAgZm9yIChCYWc8VHlwZUxvY2F0aW9uPjo6aXRl
cmF0b3IgaXRlciA9IG1fbG9jYXRpb25JbmZvLmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7Cisg
ICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSAqaXRlcjsKKyAgICAgICAgZGF0YUxvZ0Yo
IltMaW5lLCBDb2x1bW5dOjpbJXUsICV1XSBMb2NhbDonJXMnIEdsb2JhbDonJXMnXG4iLCBsb2Nh
dGlvbi0+bV9saW5lLCBsb2NhdGlvbi0+bV9jb2x1bW4sIAorICAgICAgICAgICAgICAgICBwcm9m
aWxlci0+Z2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShsb2NhdGlvbi0+bV9saW5lLCBs
b2NhdGlvbi0+bV9jb2x1bW4sIGxvY2F0aW9uLT5tX2xpbmUsIGxvY2F0aW9uLT5tX2NvbHVtbiwg
IiIsIGxvY2F0aW9uLT5tX3NvdXJjZUlEKS5hc2NpaSgpLmRhdGEoKSwKKyAgICAgICAgICAgICAg
ICAgcHJvZmlsZXItPmdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKGxvY2F0aW9uLT5t
X2xpbmUsIGxvY2F0aW9uLT5tX2NvbHVtbiwgbG9jYXRpb24tPm1fbGluZSwgbG9jYXRpb24tPm1f
Y29sdW1uLCAiIiwgbG9jYXRpb24tPm1fc291cmNlSUQpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICB9
Cit9CisKIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNKiB2bSkKIHsKICAgICBsb2dTYW5pdGl6
ZVN0YWNrKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24g
MTcwMzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBj
b3B5KQpAQCAtNDYsOSArNDYsMTEgQEAKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJU
aHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAjaW5jbHVkZSAi
V2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKKyNpbmNsdWRlIDx3dGYvQmFn
Lmg+CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTc0LDYgKzc2LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CiAgICAgY2xhc3Mg
RXhlY1N0YXRlOwogICAgIGNsYXNzIEhhbmRsZVN0YWNrOworICAgIGNsYXNzIEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlcjsKKyAgICBjbGFzcyBIaWdoRmlkZWxpdHlMb2c7CiAgICAgY2xhc3MgSWRl
bnRpZmllcjsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKQEAgLTg0LDYgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTmF0aXZlRXhl
Y3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFzcyBSZWdFeHBDYWNoZTsK
KyAgICBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwog
ICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGU7CiAgICAgc3RydWN0IFN0YWNrRnJhbWU7CkBA
IC05Niw2ICsxMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBVbmxpbmtlZEV2YWxD
b2RlQmxvY2s7CiAgICAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xh
c3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworICAgIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsK
ICAgICBjbGFzcyBWTUVudHJ5U2NvcGU7CiAgICAgY2xhc3MgV2F0Y2hwb2ludDsKICAgICBjbGFz
cyBXYXRjaHBvaW50U2V0OwpAQCAtNTEwLDYgKzUxNiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgCiAgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkg
eyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAorICAgICAgICBib29sIGlz
UHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkgeyByZXR1cm4gISFtX2hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlcjsgfQorICAgICAgICBTdHJpbmcgZ2V0VHlwZXNGb3JWYXJpYWJsZUluUmFu
Z2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5k
TGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCk7CisgICAgICAgIEhpZ2hGaWRlbGl0eUxvZyogaGlnaEZpZGVs
aXR5TG9nKCkgeyByZXR1cm4gbV9oaWdoRmlkZWxpdHlMb2cuZ2V0KCk7IH0KKyAgICAgICAgSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyKiBoaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKSB7IHJldHVy
biBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5nZXQoKTsgfQorICAgICAgICB2b2lkIHVwZGF0
ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUoKTsKKyAgICAgICAgVHlwZUxvY2F0aW9uKiBu
ZXh0TG9jYXRpb24oKSB7IHJldHVybiBtX2xvY2F0aW9uSW5mby5hZGQoKTsgfSAvL1RPRE86IHBv
c3NpYmxlIG9wdG1pemF0aW9uOiB3aGVuIGNvZGVibG9ja3MgZGllLCByZXBvcnQgd2hpY2ggbG9j
YXRpb25zIGFyZSBubyBsb25nZXIgYmVpbmcgY2hhbmdlZCBzbyB3ZSBkb24ndCB3YWxrIG92ZXIg
dGhlbQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBIaWdoRmlkZWxpdHlQcm9m
aWxpbmdUeXBlcygpOworICAgICAgICBpbnQ2NF90IGdldE5leHRVbmlxdWVWYXJpYWJsZUlEKCkg
eyByZXR1cm4gbV9uZXh0VW5pcXVlVmFyaWFibGVJRCsrOyB9CisKICAgICBwcml2YXRlOgogICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQg
Y2xhc3MgQ2xlYXJFeGNlcHRpb25TY29wZTsKQEAgLTU1OCw2ICs1NzMsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IG1fYnVpbHRpbkV4ZWN1
dGFibGVzOwogICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25T
dGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9p
bXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyPiBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hGaWRlbGl0eUxvZz4gbV9oaWdoRmlkZWxpdHlMb2c7Cisg
ICAgICAgIGludDY0X3QgbV9uZXh0VW5pcXVlVmFyaWFibGVJRDsKKyAgICAgICAgQmFnPFR5cGVM
b2NhdGlvbj4gbV9sb2NhdGlvbkluZm87CiAgICAgfTsKIAogI2lmIEVOQUJMRShHQ19WQUxJREFU
SU9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233658</attachid>
            <date>2014-06-23 17:15:08 -0700</date>
            <delta_ts>2014-06-24 14:49:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>89396</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwMzM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBA
QAorMjAxNC0wNi0yMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbmNyZWFzZSB0aGUgYW1vdW50IG9mIHR5cGUgaW5mb3JtYXRpb24gdGhlIFZNIGdhdGhlcnMg
d2hlbiBkaXJlY3RlZAorICAgICAgICB0byBkbyBzby4gVGhpcyBpbml0aWFsIGNvbW1pdCBpcyB3
b3JraW5nIHRvd2FyZHMgdGhlIGdvYWwgb2YKKyAgICAgICAgY2FwdHVyaW5nLCBhbmQgdGhlbiBz
aG93aW5nICh2aWEgdGhlIFdlYiBJbnNwZWN0b3IpIHR5cGUgaW5mb3JtYXRpb24gZm9yIGFsbAor
ICAgICAgICBhc3NpZ25tZW50IGFuZCBsb2FkIG9wZXJhdGlvbnMuIFRoaXMgcGF0Y2ggZG9lc24n
dCBoYXZlIHRoZSBmZWF0dXJlIGZ1bGx5IAorICAgICAgICBpbXBsZW1lbnRlZCwgYnV0IGl0IGVu
c3VyZXMgdGhlIFZNIGhhcyBubyBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucworICAgICAgICB1bmxl
c3MgdGhlIGZlYXR1cmUgaXMgc3BlY2lmaWNhbGx5IHR1cm5lZCBvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzM5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgICogYnl0ZWNvZGUvVHlwZUxvY2F0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpUeXBlTG9jYXRpb246OlR5cGVMb2NhdGlvbik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRCeVZhbCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc1Byb2ZpbGluZ1R5
cGVzV2l0aEhpZ2hGaWRlbGl0eSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZSk6CisgICAgICAg
IChKU0M6OlByZWZpeE5vZGU6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlm
eVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNvbHZl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29uc3REZWNsTm9kZTo6ZW1pdENv
ZGVTaW5nbGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFy
aWFibGVJblRleHRSYW5nZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29u
OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzKToKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElO
VF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1l
L0hpZ2hGaWRlbGl0eUxvZy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlM
b2c6OmluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxp
dHlMb2c6On5IaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6
OnJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGlnaEZp
ZGVsaXR5TG9nOjpwcm9jZXNzSGlnaEZpZGVsaXR5TG9nKToKKyAgICAgICAgKEpTQzo6SGlnaEZp
ZGVsaXR5TG9nOjphY3R1YWxseVByb2Nlc3NMb2dUaHJlYWRGdW5jdGlvbik6CisgICAgICAgICog
cnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkhpZ2hGaWRl
bGl0eUxvZzo6SGlnaEZpZGVsaXR5TG9nKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXI6OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAgICAgICAgKEpTQzo6SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSk6
CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYWxUeXBlc0Zv
clZhcmlhYmxlSW5SYW5nZSk6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
cjo6aW5zZXJ0TmV3TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXI6OmdldExvY2F0aW9uQmFzZWRIYXNoKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6dG9TdHJ1Y3R1cmVTaGFwZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGU6OlN5bWJvbFRhYmxlKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lQ2FwdHVy
ZWROYW1lcyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjp1bmlxdWVJREZvclZhcmlhYmxl
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnVuaXF1ZUlERm9yUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Z2xvYmFsVHlwZVNldEZvclJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6Omdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZSk6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6YWRk
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnNldCk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlR5cGVTZXQ6OlR5cGVTZXQpOgorICAg
ICAgICAoSlNDOjpUeXBlU2V0OjpnZXRSdW50aW1lVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpT
Qzo6VHlwZVNldDo6YWRkVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6cmVt
b3ZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeSk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6
OnNlZW5UeXBlcyk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OmR1bXBTZWVuVHlwZXMpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6U3RydWN0dXJlU2hhcGUpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTaGFwZTo6bWFya0FzRmluYWwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
aGFwZTo6YWRkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6cHJvcGVy
dHlIYXNoKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OmxlYXN0VXBwZXJCb3VuZCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9UeXBlU2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTaGFwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdl
KToKKyAgICAgICAgKEpTQzo6Vk06OnVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUp
OgorICAgICAgICAoSlNDOjpWTTo6ZHVtcEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjppc1Byb2ZpbGluZ1R5cGVz
V2l0aEhpZ2hGaWRlbGl0eSk6CisgICAgICAgIChKU0M6OlZNOjpoaWdoRmlkZWxpdHlMb2cpOgor
ICAgICAgICAoSlNDOjpWTTo6aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpT
Qzo6Vk06Om5leHRMb2NhdGlvbik6CisgICAgICAgIChKU0M6OlZNOjpnZXROZXh0VW5pcXVlVmFy
aWFibGVJRCk6CisKIDIwMTQtMDYtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBbZnRsb3B0XSBGb2xkIEdldEJ5SWQvUHV0QnlJZCB0byBNdWx0aUdldEJ5T2Zm
c2V0L0dldEJ5T2Zmc2V0IG9yIE11bHRpUHV0QnlPZmZzZXQvUHV0QnlPZmZzZXQsIHdoaWNoIGlt
cGxpZXMgaGFuZGxpbmcgbm9uLXNpbmdsZXRvbiBzZXRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAkocmV2aXNpb24gMTcwMzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkJ1dHRlcmZseUlubGlu
ZXMuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC0zNDcsNiArMzQ4LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25VbmRlZmluZWQoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVmZmVjdGZ1bDQyKEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWtl
TWFzcXVlcmFkZXIoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyAoRXhlY1N0YXRlKik7CiAKICNp
ZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblNldFNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKik7CkBAIC00OTMsNiArNDk1
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlSW1wdXJl
R2V0dGVyIiwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIsIDEpOwogICAgICAgICBhZGRGdW5j
dGlvbih2bSwgInNldEltcHVyZUdldHRlckRlbGVnYXRlIiwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0
ZXJEZWxlZ2F0ZSwgMik7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZHVtcFR5cGVzRm9yQWxs
VmFyaWFibGVzIiwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMgLCA0KTsKICAgICAg
ICAgCiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxF
eGVjKCksIDApOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXpl
KCk7ICsraSkKQEAgLTkyNyw2ICs5MzAsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbk1hawogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoTWFzcXVlcmFkZXI6OmNy
ZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKIH0KIAorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxl
cyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgZXhlYy0+dm0oKS5kdW1wSGlnaEZpZGVsaXR5UHJv
ZmlsaW5nVHlwZXMoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworfQorCiAvLyBVc2UgU0VIIGZvciBSZWxlYXNlIGJ1aWxkcyBvbmx5IHRvIGdldCByaWQgb2Yg
dGhlIGNyYXNoIHJlcG9ydCBkaWFsb2cKIC8vIChsdWNraWx5IHRoZSBzYW1lIHRlc3RzIGZhaWwg
aW4gUmVsZWFzZSBhbmQgRGVidWcgYnVpbGRzIHNvIGZhcikuIE5lZWQgdG8KIC8vIGJlIGluIGEg
c2VwYXJhdGUgbWFpbiBmdW5jdGlvbiBiZWNhdXNlIHRoZSBqc2NtYWluIGZ1bmN0aW9uIHJlcXVp
cmVzIG9iamVjdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3
MDMzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04MzUsNiArODM1LDEzIEBACiAJCTQx
MzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2
IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CiAJCTQ0NDNBRTMzMTZFMTg4RDkwMDc2RjExMCAv
KiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZy
YW1ld29yayAqLzsgfTsKIAkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTUzOUI4MTJEQzk5
NDUwMEVGN0FDNCAvKiBZYXJyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTJGQjcxMzcxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxv
Zy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZC
NzEzMzE5NTM3NEI3MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCAqLzsgfTsKKwkJNTJG
QjcxMzgxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGQjcxMzQxOTUzNzRCNzAwQkI2MTJF
IC8qIEhpZ2hGaWRlbGl0eUxvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTUyRkI3MTM5MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTJGQjcxMzUxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
ci5jcHAgKi87IH07CisJCTUyRkI3MTNBMTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUyRkI3MTM2MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MkZC
NzIxMTE5NTM3NUM2MDBCQjYxMkUgLyogVHlwZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzIxMDE5NTM3NUM2MDBCQjYxMkUgLyog
VHlwZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNTJGQjcyMTQxOTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGQjcyMTIxOTUzNzYwQzAw
QkI2MTJFIC8qIFR5cGVTZXQuY3BwICovOyB9OworCQk1MkZCNzIxNTE5NTM3NjBDMDBCQjYxMkUg
LyogVHlwZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTJGQjcyMTMxOTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTEwNTAyNjE4RUI4Mjc1MDAwMDFG
M0UgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDQwRjg4RjBBNTA4QjEwMDAwNUYwNjEgLyogSlNDYWxsYmFja0Z1
bmN0aW9uLmggKi87IH07CiAJCTU1MkVBNzBDMTkwODcwNDgwMEE2NkYyRiAvKiBKU0RhdGFWaWV3
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMkI2NkJGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCAq
LzsgfTsKIAkJNTU0MDc1NzIxOERBNThBRDAwRUZGN0YyIC8qIEFyZ0xpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjYwNTEyMEUyMDNFRjgwMEI5
QTY0RCAvKiBBcmdMaXN0LmggKi87IH07CkBAIC0yOTcwLDYgKzI5NzcsMTQgQEAKIAkJNDVFMTJE
ODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBqc2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDQ7IH07CiAJCTUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3Vu
ZGF0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7
IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJNTFGMEVDMDcwNUM4NkM5QTAwRTZERjFC
IC8qIGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7
IHBhdGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4i
OyB9OworCQk1MjJBQkFGOTE5NEE4MDQzMDA4QjFDODUgLyogVHlwZUxvY2F0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MkZCNzEzMzE5NTM3NEI3MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5
TG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpZ2hGaWRlbGl0
eUxvZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRkI3MTM0MTk1Mzc0Qjcw
MEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSGlnaEZpZGVsaXR5TG9nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUy
RkI3MTM1MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGQjcxMzYxOTUzNzRCODAw
QkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTJGQjcyMTAxOTUzNzVDNjAwQkI2MTJFIC8qIFR5cGVMb2NhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUeXBlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTJGQjcyMTIxOTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUyRkI3MjEzMTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTU0MDc1ODQxOEY0QTM3NTAwNjAyQTVEIC8qIENvbXBpbGVSdW50aW1lVG9M
TFZNSVIueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29tcGlsZVJ1
bnRpbWVUb0xMVk1JUi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU0
MDdBQzgxOERBNThBRDAwRUZGN0YyIC8qIGxpYkNvbXBpbGVSdW50aW1lVG9MTFZNSVIuYSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsg
aW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliQ29tcGlsZVJ1bnRpbWVUb0xMVk1JUi5hOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDUzNzI2RDBFMUM1NDZCMDAy
MUU1NDkgLyogVHJhY2luZy5kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRyYWNpbmcuZDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NDMsNiArNDY1OCwxMCBAQAogCQkJCTBGMkI2
NkIzMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggKi8s
CiAJCQkJQkMwMkU5QjgwRTE4NDU0NTAwMEY5Mjk3IC8qIEdldHRlclNldHRlci5jcHAgKi8sCiAJ
CQkJQkMzMzdCREUwRTFBRjBCODAwNzY5MThBIC8qIEdldHRlclNldHRlci5oICovLAorCQkJCTUy
RkI3MTMzMTk1Mzc0QjcwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwICovLAorCQkJCTUy
RkI3MTM0MTk1Mzc0QjcwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuaCAqLywKKwkJCQk1MkZC
NzEzNTE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCAqLywK
KwkJCQk1MkZCNzEzNjE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LmggKi8sCiAJCQkJOTMzQTM0OUQwMzhBRTgwRjAwODYzNUNFIC8qIElkZW50aWZpZXIuY3BwICov
LAogCQkJCTkzM0EzNDlBMDM4QUU3QzYwMDg2MzVDRSAvKiBJZGVudGlmaWVyLmggKi8sCiAJCQkJ
ODYwNkRERTkxOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggKi8sCkBAIC00
OTE0LDYgKzQ5MzMsOCBAQAogCQkJCTBGMkI2NkRCMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFy
cmF5cy5oICovLAogCQkJCTBGMkI2NkRDMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlw
ZS5jcHAgKi8sCiAJCQkJMEYyQjY2REQxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBl
LmggKi8sCisJCQkJNTJGQjcyMTIxOTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuY3BwICovLAor
CQkJCTUyRkI3MjEzMTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmggKi8sCiAJCQkJQTdBOEFG
MzIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggKi8sCiAJCQkJODY2NzM5RDExM0JG
REU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovLAogCQkJCUE3QThBRjMzMTdB
REI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJheS5oICovLApAQCAtNTM4NSw2ICs1NDA2LDcgQEAK
IAkJCQkwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUu
Y3BwICovLAogCQkJCTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5oICovLAogCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxM
aW5rSW5mby5oICovLAorCQkJCTUyMkFCQUY5MTk0QTgwNDMwMDhCMUM4NSAvKiBUeXBlTG9jYXRp
b24uaCAqLywKIAkJCQkwRkI1NDY3QzE0RjVDRkQzMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5jcHAgKi8sCiAJCQkJMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCAqLywKIAkJCQkxNENBOTU4QzE2QUI1MEZBMDA5
MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCAqLywKQEAgLTU0MjAsNiArNTQ0Miw3
IEBACiAJCQkJMEY3NjZEMzcxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmlu
Z1dhdGNocG9pbnQuaCAqLywKIAkJCQlCQ0NGMEQwQjBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0
dXJlU3R1YkluZm8uY3BwICovLAogCQkJCUJDQ0YwRDA3MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1
Y3R1cmVTdHViSW5mby5oICovLAorCQkJCTUyRkI3MjEwMTk1Mzc1QzYwMEJCNjEyRSAvKiBUeXBl
TG9jYXRpb24uaCAqLywKIAkJCQlBNzlFNzgxRTE1RUVDQkE4MDA0N0M4NTUgLyogVW5saW5rZWRD
b2RlQmxvY2suY3BwICovLAogCQkJCUE3OUU3ODFGMTVFRUNCQTgwMDQ3Qzg1NSAvKiBVbmxpbmtl
ZENvZGVCbG9jay5oICovLAogCQkJCUI1OUY4OTM4MTg5MUFEQjUwMEQ1Q0NEQyAvKiBVbmxpbmtl
ZEluc3RydWN0aW9uU3RyZWFtLmNwcCAqLywKQEAgLTU4ODksNiArNTkxMiwxMCBAQAogCQkJCTBG
NkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MkZCNzIxNTE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTJGQjcyMTExOTUzNzVDNjAwQkI2MTJFIC8qIFR5cGVMb2Nh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJGQjcxM0ExOTUzNzRCODAwQkI2MTJFIC8qIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJGQjcxMzgxOTUz
NzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4
NDAzMjAxOEJGRkJFMTAwNUEwODExIC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTUyNDhGOTE5MTQ0MkQ5MDBCN0ZERTQgLyogVmFyaWFibGVXYXRjaHBvaW50U2V0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NjAzLDYgKzc2MzAsNyBAQAogCQkJCTBGNDg1
MzIxMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0aE1vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY2Mzk0ODQxNUU0ODExODAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBN0Q5QTI5NDE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJhY3RT
dGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MkZCNzEzOTE5NTM3NEI4MDBCQjYxMkUgLyog
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjY2RUM2
MTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY3MTRDQTQxNkVBOTJGMDAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERG
R0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NjM4LDYgKzc2NjYsNyBAQAogCQkJ
CUE3OEE5Nzc0MTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWlsZWRGaW5hbGl6ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTc4QTk3NzYxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZpbmFsaXplci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREMxNTE1MUM1RDREMDBDRDg5MTAgLyogREZHRml4
dXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MkZCNzIxNDE5NTM3NjBDMDBCQjYxMkUg
LyogVHlwZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5NjE3RkZDNEU2MDA3M0My
QkMgLyogREZHRmx1c2hlZEF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0Y3MTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVD
OURDNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03
NzIwLDYgKzc3NDksNyBAQAogCQkJCUE3QjQ4RjQ5MEVFODkzNkYwMERDQkRCNiAvKiBFeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2REI2NDY0MEY5NUM2RkMwMEQ3
RDkyMSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY1NkExRDUxNTAwMUNGNDAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTJGQjcxMzcxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0
eUxvZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjAzMzJDMDE4QURGQUUxMDA1Rjk3OUEgLyog
RXhpdGluZ0pJVFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMTA1ODUxNjc1NDgwRjAw
RjhBQjZFIC8qIEV4aXRLaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTFDMTcwOEIw
MDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCShy
ZXZpc2lvbiAxNzAzMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcmVzb2x2ZV9zY29wZSIsICJsZW5ndGgiIDogNiB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2Zyb21fc2NvcGUiLCAibGVuZ3RoIiA6IDggfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF90b19zY29wZSIsICJsZW5ndGgiIDogNyB9LAor
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSIsICJs
ZW5ndGgiIDogOCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHVzaF93aXRoX3Njb3Bl
IiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wb3Bfc2NvcGUi
LCAibGVuZ3RoIiA6IDEgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1c2hfbmFtZV9z
Y29wZSIsICJsZW5ndGgiIDogNCB9LApAQCAtMTIyLDcgKzEyMyw4IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfcHJvZmlsZV93aWxsX2NhbGwiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX3Byb2ZpbGVfZGlkX2NhbGwiLCAibGVuZ3RoIiA6IDIgfSwKLSAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2VuZCIsICJsZW5ndGgiIDogMiB9CisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9lbmQiLCAibGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5IiwgImxlbmd0aCIgOiA0IH0K
ICAgICAgICAgXQogICAgIH0sCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw2ICs2NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAg
ICBjYXNlIG9wX3RlYXJfb2ZmX2FjdGl2YXRpb246CiAgICAgY2FzZSBvcF9wcm9maWxlX3dpbGxf
Y2FsbDoKICAgICBjYXNlIG9wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgY2FzZSBvcF9wcm9maWxl
X3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKICAgICBjYXNlIG9wX3Rocm93OgogICAgIGNhc2Ug
b3BfcHVzaF93aXRoX3Njb3BlOgogICAgIGNhc2Ugb3BfZW5kOgpAQCAtMTA1LDYgKzEwNiw3IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZToKICAgICBjYXNlIG9wX3B1dF9ieV9pZF9v
dXRfb2ZfbGluZToKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF90b19z
Y29wZV93aXRoX3Byb2ZpbGU6CiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKICAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKQEAgLTI0OSw2ICsyNTEsNyBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsCiAgICAgY2FzZSBvcF9wdXNoX25h
bWVfc2NvcGU6CiAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6CiAgICAgY2FzZSBvcF9wdXRf
dG9fc2NvcGU6CisgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgIGNh
c2Ugb3BfcG9wX3Njb3BlOgogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfcHJvZmlsZV93
aWxsX2NhbGw6CkBAIC0yODcsNiArMjkwLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbAogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBv
cF9wdXRfYnlfaW5kZXg6CiAgICAgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6CisgICAgY2Fz
ZSBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKICAgICBjYXNlIG9wX3RvdWNo
X2VudHJ5OgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhvcGNvZGUsIGxlbmd0aCkgY2Fz
ZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9FWFRFTlNJT04oTExJTlRf
SEVMUEVSX09QQ09ERVMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5j
bHVkZSAiRGVidWdnZXIuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCkBAIC00Nyw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCisjaW5j
bHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY0dldEJ5SWRMaXN0
LmgiCkBAIC04NDIsNiArODQ0LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAg
ICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eTogeworICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICArK2l0OworICAgICAgICAg
ICAgKytpdDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgIm9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5Iik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfbm90OiB7CiAgICAgICAgICAg
ICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJub3QiKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTQ2OCw2ICsxNDc4LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZSgKICAgICAgICAgICAgICAgICBvcGVyYW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKICAgICAg
ICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAt
MTQ3Niw2ICsxNDg3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAg
ICAgICsraXQ7IC8vIFN0cnVjdHVyZQogICAgICAgICAgICAgaW50IG9wZXJhbmQgPSAoKytpdCkt
PnUub3BlcmFuZDsgLy8gT3BlcmFuZAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X3RvX3Njb3BlIik7CisgICAgICAgICAgICBpZiAo
b3Bjb2RlID09IG9wX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGUpCisgICAgICAgICAgICAgICAg
KytpdDsKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICV1PCVzfCVzPiwgPHN0
cnVjdHVyZT4sICVkIiwKICAgICAgICAgICAgICAgICByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwg
aWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0
YSgpLAogICAgICAgICAgICAgICAgIG1vZGVBbmRUeXBlLm9wZXJhbmQoKSwgcmVzb2x2ZU1vZGVO
YW1lKG1vZGVBbmRUeXBlLm1vZGUoKSksIHJlc29sdmVUeXBlTmFtZShtb2RlQW5kVHlwZS50eXBl
KCkpLApAQCAtMTg3OSw2ICsxODkyLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhl
Y3V0YWJsZSogbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNl
IG9wX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Nj
b3BlOiB7CiAgICAgICAgICAgICAvLyBwdXRfdG9fc2NvcGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVz
b2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQKICAgICAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwpAQCAtMTg5NCw5
ICsxOTA4LDY4IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAg
ICAgICAgICAgIH0gZWxzZSBpZiAob3Auc3RydWN0dXJlKQogICAgICAgICAgICAgICAgIGluc3Ry
dWN0aW9uc1tpICsgNV0udS5zdHJ1Y3R1cmUuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9w
LnN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUucG9pbnRlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wLm9wZXJhbmQpOworCisgICAgICAgICAgICBpZiAo
cGNbMF0udS5vcGNvZGUgPT0gb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSkgeworICAgICAg
ICAgICAgICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhpcyBpbnN0cnVjdGlvbiBpczogcHV0X3RvX3Nj
b3BlX3dpdGhfcHJvZmlsZSBzY29wZSwgaWQsIHZhbHVlLCBSZXNvbHZlTW9kZUFuZFR5cGUsIFN0
cnVjdHVyZSwgT3BlcmFuZCwgVHlwZUxvY2F0aW9uKgorICAgICAgICAgICAgICAgIFR5cGVMb2Nh
dGlvbiogbG9jYXRpb24gPSB2bSgpLT5uZXh0TG9jYXRpb24oKTsKKyAgICAgICAgICAgICAgICBz
aXplX3QgaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpICsgb3BMZW5ndGggLSAxOworICAgICAgICAgICAg
ICAgIGludCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsgCisgICAgICAgICAgICAgICAg
dW5zaWduZWQgbGluZSA9IDAsIGNvbHVtbiA9IDA7CisgICAgICAgICAgICAgICAgZXhwcmVzc2lv
blJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90LCBzdGFydE9m
ZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOworCisgICAgICAgICAgICAgICAgbG9jYXRp
b24tPm1fbGluZSA9IGxpbmU7CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fY29sdW1uID0g
Y29sdW1uOworICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX3NvdXJjZUlEID0gbV9vd25lckV4
ZWN1dGFibGUtPnNvdXJjZUlEKCk7CisKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogaGFuZGxl
IG90aGVyIHZhbHVlcyBmb3Igb3AudHlwZSBoZXJlLCBhbmQgYWxzbyBjb25zaWRlciB3aGF0IHRv
IGRvIHdoZW4gd2UgY2FuJ3Qgc3RhdGljYWxseSBkZXRlcm1pbmUgdGhlIGdsb2JhbElECisgICAg
ICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gMDsKKyAgICAgICAgICAgICAg
ICBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyKSAKKyAgICAgICAgICAgICAgICAgICAgc3ltYm9s
VGFibGUgPSBvcC5hY3RpdmF0aW9uLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyKQorICAgICAgICAgICAgICAgICAgICBzeW1ib2xU
YWJsZSA9IG1fZ2xvYmFsT2JqZWN0LmdldCgpLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGlmIChzeW1ib2xUYWJsZSkgeworICAgICAgICAgICAgICAg
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRh
YmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQucmVzZXQoc3ltYm9s
VGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGlkZW50LmltcGwoKSwgKnZt
KCkpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHM7CisK
KyAgICAgICAgICAgICAgICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+aW5zZXJ0
TmV3TG9jYXRpb24obG9jYXRpb24pOworICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsg
N10udS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdo
X2ZpZGVsaXR5OiB7CisKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIocGNbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSA9IG1fc3ltYm9sVGFibGUuZ2V0KCk7CisgICAgICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0
aW9uID0gdm0oKS0+bmV4dExvY2F0aW9uKCk7CisgICAgICAgICAgICBzaXplX3QgaW5zdHJ1Y3Rp
b25PZmZzZXQgPSBpICsgb3BMZW5ndGggLSAxOworICAgICAgICAgICAgaW50IGRpdm90LCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0OyAKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwLCBjb2x1
bW4gPSAwOworICAgICAgICAgICAgZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQoaW5z
dHJ1Y3Rpb25PZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1
bW4pOworCisgICAgICAgICAgICBpbnQgaGFzR2xvYmFsSURGbGFnID0gcGNbM10udS5vcGVyYW5k
OworICAgICAgICAgICAgaWYgKGhhc0dsb2JhbElERmxhZykgeworICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAg
ICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVl
SURGb3JSZWdpc3Rlcihsb2NrZXIsIHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKSwgKnZtKCkpOwor
ICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQucmVzZXQoc3ltYm9sVGFi
bGUtPmdsb2JhbFR5cGVTZXRGb3JSZWdpc3Rlcihsb2NrZXIsIHZpcnR1YWxSZWdpc3Rlci5vZmZz
ZXQoKSwgKnZtKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGxvY2F0
aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxpdHlOb0dsb2JhbElERXhpc3RzOwog
ICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGxvY2F0aW9uLT5tX2xpbmUgPSBsaW5lOworICAg
ICAgICAgICAgbG9jYXRpb24tPm1fY29sdW1uID0gY29sdW1uOworICAgICAgICAgICAgbG9jYXRp
b24tPm1fc291cmNlSUQgPSBtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKTsKKworICAgICAg
ICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKCktPmluc2VydE5ld0xvY2F0aW9u
KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgMl0udS5sb2NhdGlvbiA9
IGxvY2F0aW9uOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCiAgICAgICAgIGNh
c2Ugb3BfY2FwdHVyZWRfbW92OgogICAgICAgICBjYXNlIG9wX25ld19jYXB0dXJlZF9mdW5jOiB7
CiAgICAgICAgICAgICBpZiAocGNbM10udS5pbmRleCA9PSBVSU5UX01BWCkgewpAQCAtMjM0MCw2
ICsyNDEzLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBvcF9n
ZXRfZnJvbV9zY29wZToKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJv
ZmlsZToKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAgICAgICAgICAgICAg
ICAgUmVzb2x2ZU1vZGVBbmRUeXBlIG1vZGVBbmRUeXBlID0KICAgICAgICAgICAgICAgICAgICAg
UmVzb2x2ZU1vZGVBbmRUeXBlKGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNzAz
MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk0Myw2ICs5NDMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzS25vd25U
b0JlTGl2ZUR1cmluZ0dDKCk7IC8vIFdpbGwgb25seSByZXR1cm4gdmFsaWQgcmVzdWx0cyB3aGVu
IGNhbGxlZCBkdXJpbmcgR0MuIEFzc3VtZXMgdGhhdCB5b3UndmUgYWxyZWFkeSBlc3RhYmxpc2hl
ZCB0aGF0IHRoZSBvd25lciBleGVjdXRhYmxlIGlzIGxpdmUuCiAKKwogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2
aXNpb24gMTcwMzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiVHlwZUxvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKQEAgLTExOCw2ICsxMTksNyBAQCBzdHJ1Y3QgSW5z
dHJ1Y3Rpb24gewogICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQWN0aXZhdGlvbj4gYWN0aXZh
dGlvbjsKICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgYm9vbCogcHJlZGljYXRlUG9p
bnRlcjsKKyAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbjsKICAgICB9IHU7CiAgICAgICAg
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UeXBlTG9j
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlw
ZUxvY2F0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVHlwZUxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVHlwZUxvY2F0
aW9uX2gKKyNkZWZpbmUgVHlwZUxvY2F0aW9uX2gKKworI2luY2x1ZGUgIlR5cGVTZXQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2VudW0gSGlnaEZpZGVsaXR5R2xvYmFsSURGbGFncyB7CisgICAg
SGlnaEZpZGVsaXR5TmVlZHNVbmlxdWVJREdlbmVyYXRpb24gPSAtMSwKKyAgICBIaWdoRmlkZWxp
dHlOb0dsb2JhbElERXhpc3RzID0gLTIKK307CisKK2NsYXNzIFR5cGVMb2NhdGlvbiB7CisgICAg
ICAgICAgICAgICAgICAgICAgIAorcHVibGljOgorICAgIFR5cGVMb2NhdGlvbigpIAorICAgICAg
ICA6IG1faW5zdHJ1Y3Rpb25UeXBlU2V0KHN0ZDo6bWFrZV91bmlxdWU8VHlwZVNldD4oKSkKKyAg
ICAgICAgLCBtX2dsb2JhbFR5cGVTZXQobnVsbHB0cikKKyAgICB7CisgICAgfQorCisgICAgaW50
NjRfdCBtX2dsb2JhbFZhcmlhYmxlSUQ7CisgICAgaW50cHRyX3QgbV9zb3VyY2VJRDsKKyAgICB1
bnNpZ25lZCBtX2xpbmU7CisgICAgdW5zaWduZWQgbV9jb2x1bW47CisgICAgc3RkOjp1bmlxdWVf
cHRyPFR5cGVTZXQ+IG1faW5zdHJ1Y3Rpb25UeXBlU2V0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxU
eXBlU2V0PiBtX2dsb2JhbFR5cGVTZXQ7Cit9OworCit9IC8vbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy9UeXBlTG9jYXRpb25faApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE3MDMz
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsMTAgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChz
cmMtPmluZGV4KCkpOwogICAgIGlmIChjYXB0dXJlTW9kZSA9PSBJc0NhcHR1cmVkKQogICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQod2F0Y2hhYmxlVmFyaWFibGUoZHN0LT5pbmRleCgpKSk7
CisKKyAgICBpZiAoIWRzdC0+aXNUZW1wb3JhcnkoKSAmJiBpc1Byb2ZpbGluZ1R5cGVzV2l0aEhp
Z2hGaWRlbGl0eSgpKQorICAgICAgICBlbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShk
c3QsIHRydWUpOworCiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMTExMSw2ICsxMTE1LDE4IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWwKICAgICByZXR1cm4gZHN0
OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hG
aWRlbGl0eShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJvZmlsZSwgYm9vbCBoYXNHbG9iYWxJRCkK
K3sKKyAgICBlbWl0T3Bjb2RlKG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVnaXN0ZXJUb1Byb2ZpbGUtPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsgLy8gcGxhY2Vob2xkZXIgZm9yIFR5cGVMb2Nh
dGlvbgorICAgIC8vIFRoaXMgaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB3ZSBzaG91bGQg
dHJhY2sgdGhpcyB2YWx1ZSB0byBpdHMgZ2xvYmFsSUQgb3Igbm90LgorICAgIGlmIChoYXNHbG9i
YWxJRCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDEpOworICAgIGVsc2UKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29sIGIpCiB7CiAgICAgcmV0dXJu
IGVtaXRMb2FkKGRzdCwganNCb29sZWFuKGIpKTsKQEAgLTEyNTUsMTMgKzEyNzEsMTggQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUbwogICAgIG1fY29kZUJsb2NrLT5h
ZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKICAg
ICAvLyBwdXRfdG9fc2NvcGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVzb2x2ZU1vZGVBbmRUeXBlLCBT
dHJ1Y3R1cmUsIE9wZXJhbmQKLSAgICBlbWl0T3Bjb2RlKG9wX3B1dF90b19zY29wZSk7CisgICAg
aWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgIGVtaXRPcGNv
ZGUob3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSk7CisgICAgZWxzZQorICAgICAgICBlbWl0
T3Bjb2RlKG9wX3B1dF90b19zY29wZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3Bl
LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQoaWRlbnRp
ZmllcikpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFJlc29sdmVNb2RlQW5kVHlwZShyZXNvbHZlTW9kZSwgcmVz
b2x2ZVR5cGUoKSkub3BlcmFuZCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGlmIChpc1Byb2ZpbGluZ1R5cGVzV2l0
aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCkBAIC0xMzI4LDYgKzEzNDksMTAgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOworCisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAg
ICAgIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZhbHVlLCBmYWxzZSk7CisKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTE0MjQsNiArMTQ0OSwxMCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHBy
b3BlcnR5LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVByb2ZpbGUpOworCisgICAgaWYg
KGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgIGVtaXRQcm9maWxl
VHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZhbHVlLCBmYWxzZSk7CisKICAgICByZXR1cm4gdmFsdWU7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMyLDYgKzMzMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IGVtaXROb2RlKG4pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBlbWl0UHJvZmlsZVR5cGVz
V2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiBkc3QsIGJvb2wpOworCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJik7CkBAIC02Nzcs
NiArNjc5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVk0qIG1fdm07CiAKKyAgICAg
ICAgYm9vbCBpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpIHsgcmV0dXJuIHZtKCkt
PmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCk7IH0KKwogICAgICAgICBPcGNvZGVJ
RCBtX2xhc3RPcGNvZGVJRDsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIHNpemVfdCBtX2xhc3RP
cGNvZGVQb3NpdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzQwLDEzICs3NDAsMTUgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRSZXNv
bHZlKEJ5dAogICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGxv
Y2FsUmVnID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgbG9jYWxSZWcpOwotICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkgewor
ICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOwogICAgICAg
ICAgICAgQVNTRVJUKGRzdCAhPSBsb2NhbFJlZyk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGVtcERzdFNyYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0VG9OdW1iZXIodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcpOwogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBEc3RTcmMuZ2V0KCksIGxvY2FsUmVnKTsKICAg
ICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHRlbXBEc3RTcmMuZ2V0KCksIG1fb3Bl
cmF0b3IpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhp
Z2hGaWRlbGl0eSgpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TW92ZShsb2NhbFJlZywgdGVtcERzdFNyYy5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdGVtcERzdC5nZXQoKTsKICAgICAgICAgfQpAQCAtOTE1LDEwICs5MTcsMTIgQEAgUmVn
aXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZQogICAgICAgICBpZiAobG9jYWwu
aXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0
aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGxvY2FsUmVnID0gZ2VuZXJhdG9yLmVtaXRNb3Zl
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9jYWxSZWcpOwotICAgICAgICB9IGVs
c2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlz
Q2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHko
KSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUodGVt
cERzdC5nZXQoKSwgbG9jYWxSZWcpOwogICAgICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRv
ciwgdGVtcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9y
LmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsUmVnLCB0ZW1wRHN0Lmdl
dCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5l
ZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CkBAIC0xNDA3LDYgKzE0MTEsNyBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0UmVhCiAKIFJlZ2lzdGVySUQq
IFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBKU1RleHRQb3NpdGlvbiBuZXdEaXZv
dCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7CiAgICAgaWYgKExvY2FsIGxvY2Fs
ID0gZ2VuZXJhdG9yLmxvY2FsKG1faWRlbnQpKSB7CiAgICAgICAgIGlmIChsb2NhbC5pc1JlYWRP
bmx5KCkpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5l
ZWRlZCgpOwpAQCAtMTQxNCwxMCArMTQxOSwxMyBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVz
b2x2ZU5vZGU6OmVtaXRCCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChsb2NhbC5p
c0NhcHR1cmVkKCkKKyAgICAgICAgICAgIHx8IGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0
aEhpZ2hGaWRlbGl0eSgpCiAgICAgICAgICAgICB8fCBnZW5lcmF0b3IubGVmdEhhbmRTaWRlTmVl
ZHNDb3B5KG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikp
KSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHJlc3VsdC5nZXQo
KSwgbG9jYWwuZ2V0KCkpOwogICAgICAgICAgICAgZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdl
bmVyYXRvciwgcmVzdWx0LmdldCgpLCByZXN1bHQuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3Is
IE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHRE
ZXNjcmlwdG9yKCkpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5nZXQoKSwgcmVzdWx0LmdldCgpKTsKICAgICAgICAg
ICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHJlc3Vs
dC5nZXQoKSk7CiAgICAgICAgIH0KQEAgLTE0MjYsNyArMTQzNCw2IEBAIFJlZ2lzdGVySUQqIFJl
YWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEIKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3Zl
VG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBKU1RleHRQ
b3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RTdGFydCgpLCBuZXdE
aXZvdCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lkZW50KTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBUaHJvd0lmTm90Rm91bmQpOwpA
QCAtMTQ0Myw5ICsxNDUwLDExIEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0
Qnl0ZWMKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRl
ZCgpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fcmlnaHQp
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkpIHsKKyAgICAgICAg
aWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhI
aWdoRmlkZWxpdHkoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3Qg
PSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUodGVtcERzdC5nZXQoKSwgbV9yaWdodCk7CisgICAgICAgICAgICBpZiAoZ2VuZXJh
dG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsLmdldCgpLCB0ZW1w
RHN0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRp
b25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CkBAIC0xNTQ4LDcgKzE1
NTcsOCBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Q29kZVNpbmdsCiAgICAgICAg
IGlmICghbV9pbml0KQogICAgICAgICAgICAgcmV0dXJuIGxvY2FsLmdldCgpOwogCi0gICAgICAg
IGlmIChsb2NhbC5pc0NhcHR1cmVkKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IE1heWJlIGNhbGwg
ZW1pdEV4cHJlc3Npb25JbmZvIGhlcmUuCisgICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkg
fHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHRlbXBEc3QuZ2V0KCksIG1faW5p
dCk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2FsLmdldCgpLCB0
ZW1wRHN0LmdldCgpKTsKQEAgLTE4NzEsNyArMTg4MSw4IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQgPSBzaW1w
bGVCaW5kaW5nLT5ib3VuZFByb3BlcnR5KCk7CiAgICAgICAgICAgICBMb2NhbCBsb2NhbCA9IGdl
bmVyYXRvci5sb2NhbChpZGVudCk7CiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSBsb2NhbC5n
ZXQoKTsKLSAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lIHx8IGxvY2FsLmlzQ2FwdHVyZWQo
KSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgSSBlbWl0IGV4cHJlc3Npb24gaW5mbyBo
ZXJlPworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwgbG9jYWwuaXNDYXB0dXJlZCgp
IHx8IGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQogICAgICAg
ICAgICAgICAgIGdvdG8gZ2VuZXJpY0JpbmRpbmc7CiAgICAgICAgICAgICBleHBlY3RlZFN1YnNj
cmlwdCA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IucHVzaE9wdGltaXNlZEZvckluKGV4cGVj
dGVkU3Vic2NyaXB0LmdldCgpLCBpdGVyLmdldCgpLCBpLmdldCgpLCBwcm9wZXJ0eU5hbWUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE3MDMzMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAi
SGVhcFJvb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKKyNpbmNsdWRl
ICJIaWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC05
NjksNiArOTcwLDggQEAgdm9pZCBIZWFwOjpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdAog
I2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0YUxvZ0YoIkpTQyBHQyBzdGFy
dGluZyBjb2xsZWN0aW9uLlxuIik7CiAjZW5kaWYKKyAgICBpZiAodm0oKS0+aXNQcm9maWxpbmdU
eXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5TG9nKCkt
PnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coZmFsc2UsICJHQyIpOwogICAgIAogICAgIGRvdWJsZSBi
ZWZvcmUgPSAwOwogICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5MSw2ICsxOTEsMTMgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OnJ1bihFcnJvclN0cgogewogfQogCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVu
dGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5faWQsIGludCBpbl9zdGFydExpbmUs
IGludCBpbl9zdGFydENvbHVtbiwgaW50IGluX2VuZExpbmUsIGludCBpbl9lbmRDb2x1bW4sIFN0
cmluZyogb3V0X3R5cGVzKSAKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxWTSgpOworICAgIFN0cmlu
ZyB0eXBlcyh2bS5nZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShpbl9zdGFydExpbmUsIGluX3N0
YXJ0Q29sdW1uLCBpbl9lbmRMaW5lLCBpbl9lbmRDb2x1bW4sIGluX3ZhcmlhYmxlTmFtZSwgaW5f
aWQpKTsKKyAgICAqb3V0X3R5cGVzID0gdHlwZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oCShyZXZpc2lvbiAxNzAzMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFByb3BlcnRpZXMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBvd25Qcm9w
ZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykg
b3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5faWQsIGludCBpbl9z
dGFydExpbmUsIGludCBpbl9zdGFydENvbHVtbiwgaW50IGluX2VuZExpbmUsIGludCBpbl9lbmRD
b2x1bW4sIFN0cmluZyogb3V0X3R5cGVzKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0U2NyaXB0
RGVidWdTZXJ2ZXIoU2NyaXB0RGVidWdTZXJ2ZXIqIHNjcmlwdERlYnVnU2VydmVyKSB7IG1fc2Ny
aXB0RGVidWdTZXJ2ZXIgPSBzY3JpcHREZWJ1Z1NlcnZlcjsgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgko
cmV2aXNpb24gMTcwMzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9SdW50aW1lLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsMjEgQEAKICAg
ICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCiAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRGlzYWJsZXMgcmVwb3J0aW5nIG9mIGV4ZWN1dGlvbiBjb250ZXh0cyBjcmVh
dGlvbi4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImdldFJ1
bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZSIsCisgICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhcmlhYmxlTmFtZSIsICJ0eXBlIjog
InN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJWYXJpYWJsZSB3ZSB3YW50IHR5cGUgaW5mcm9tYXRp
b24gZm9yLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlEIiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogInNvdXJjZUlEIHVuaXF1ZWx5IGlkZW50aWZ5aW5n
IGEgc2NyaXB0IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhcnRMaW5lIiwgInR5
cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJzdGFydCBsaW5lIGZvciB2YXJpYWJsZSBu
YW1lIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhcnRDb2x1bW4iLCAidHlwZSI6
ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogInN0YXJ0IGNvbHVtbiBmb3IgdmFyaWFibGUgbmFt
ZSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuZExpbmUiLCAidHlwZSI6ICJpbnRl
Z2VyIiwgImRlc2NyaXB0aW9uIjogImVuZCBsaW5lIGZvciB2YXJpYWJsZSBuYW1lIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5kQ29sdW1uIiwgInR5cGUiOiAiaW50ZWdlciIsICJk
ZXNjcmlwdGlvbiI6ICJlbmQgY29sdW1uIGZvciB2YXJpYWJsZSBuYW1lIiB9CisgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ0eXBlcyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJUeXBlcyBmb3IgcmVx
dWVzdGVkIHZhcmlhYmxlLiIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJSZXR1cm5zIGRldGFpbGVkIGluZm9ybXRhdGlvbiBvbiBnaXZlbiBmdW5jdGlvbi4i
CiAgICAgICAgIH0KICAgICBdLAogICAgICJldmVudHMiOiBbCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE3MDMzMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZh
bHVlLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCkBAIC0x
NjcsNyArMTY4LDMwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAgICAg
ICBFeGVjU3RhdGUqIF9fcmNmX2V4ZWMgPSAoZXhlY0NhbGxlZSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBfX3JjZl9leGVjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQotICAgIAor
CisjZGVmaW5lIExMSU5UX1BVVF9UT19TQ09QRV9DT01NT04oKSBcCisgICAgTExJTlRfQkVHSU4o
KTsgXAorICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7IFwKKyAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpOyBcCisgICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJ
TlRfT1AoMSkuanNWYWx1ZSgpKTsgXAorICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKTsgXAorICAgIFJlc29sdmVNb2RlQW5kVHlwZSBtb2RlQW5kVHlwZSA9IFJlc29s
dmVNb2RlQW5kVHlwZShwY1s0XS51Lm9wZXJhbmQpOyBcCisgXAorICAgIGlmIChtb2RlQW5kVHlw
ZS5tb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFzY29wZS0+aGFzUHJvcGVydHkoZXhlYywg
aWRlbnQpKSBcCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJy
b3IoZXhlYywgaWRlbnQpKTsgXAorIFwKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwg
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7IFwKKyAgICBzY29wZS0+bWV0aG9kVGFibGUoKS0+
cHV0KHNjb3BlLCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOyBcCisgXAorICAgIC8qIENvdmVy
cyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmly
c3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0
aW1lLiovICBcCisgICAgaWYgKG1vZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eSB8
fCBtb2RlQW5kVHlwZS50eXBlKCkgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzKSB7IFwKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVQdXQoKSAmJiBzbG90LmJhc2Uo
KSA9PSBzY29wZSAmJiBzY29wZS0+c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNo
ZWFibGUoKSkgeyBcCisgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjb2Rl
QmxvY2stPm1fbG9jayk7IFwKKyAgICAgICAgICAgIHBjWzVdLnUuc3RydWN0dXJlLnNldChleGVj
LT52bSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzY29wZS0+c3RydWN0dXJlKCkp
OyBcCisgICAgICAgICAgICBwY1s2XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOyBc
CisgICAgICAgIH0gXAorICAgIH0gXAorCiAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
IGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGlu
dCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQogewpAQCAtNTMzLDYgKzU1NywxNSBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X3JlZ2V4CiAgICAgTExJTlRfUkVUVVJOKFJlZ0V4
cE9iamVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0
cnVjdHVyZSgpLCByZWdFeHApKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHBjWzJdLnUubG9jYXRpb247CisgICAgSlNW
YWx1ZSB2ID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgdm0uaGlnaEZpZGVsaXR5TG9n
KCktPnJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9uKHYsIGxvY2F0aW9uKTsKKyAgICBM
TElOVF9FTkRfSU1QTCgpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hl
Y2tfaGFzX2luc3RhbmNlKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xNDI2LDMwICsxNDU5
LDIwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV8KICAgICBMTElO
VF9SRVRVUk4oc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCkpOwogfQogCisKIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCiB7Ci0gICAgTExJTlRfQkVHSU4oKTsK
LSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIGNvbnN0
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCk7Ci0gICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJTlRfT1AoMSku
anNWYWx1ZSgpKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7
Ci0gICAgUmVzb2x2ZU1vZGVBbmRUeXBlIG1vZGVBbmRUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBl
KHBjWzRdLnUub3BlcmFuZCk7Ci0KLSAgICBpZiAobW9kZUFuZFR5cGUubW9kZSgpID09IFRocm93
SWZOb3RGb3VuZCAmJiAhc2NvcGUtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkKLSAgICAgICAg
TExJTlRfVEhST1coY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwot
Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpOwotICAgIHNjb3BlLT5tZXRob2RUYWJsZSgpLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2
YWx1ZSwgc2xvdCk7Ci0KLSAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2luY2UgdGhl
eSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhv
dyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KLSAgICBpZiAobW9kZUFuZFR5cGUudHlw
ZSgpID09IEdsb2JhbFByb3BlcnR5IHx8IG1vZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKLSAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFi
bGVQdXQoKSAmJiBzbG90LmJhc2UoKSA9PSBzY29wZSAmJiBzY29wZS0+c3RydWN0dXJlKCktPnBy
b3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgewotICAgICAgICAgICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgcGNbNV0udS5z
dHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHNj
b3BlLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICBwY1s2XS51Lm9wZXJhbmQgPSBzbG90LmNh
Y2hlZE9mZnNldCgpOwotICAgICAgICB9Ci0gICAgfQorICAgIExMSU5UX1BVVF9UT19TQ09QRV9D
T01NT04oKTsKKyAgICBMTElOVF9FTkQoKTsKK30KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGUpCit7CisgICAgLy8gVGhlIGZvcm1hdCBv
ZiB0aGlzIGluc3RydWN0aW9uIGlzIHRoZSBzYW1lIGFzIHB1dF90b19zY29wZSB3aXRoIGEgVHlw
ZUxvY2F0aW9uIGFwcGVuZGVkOiBwdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlIHNjb3BlLCBpZCwg
dmFsdWUsIFJlc29sdmVNb2RlQW5kVHlwZSwgU3RydWN0dXJlLCBPcGVyYW5kLCBUeXBlTG9jYXRp
b24qCisgICAgTExJTlRfUFVUX1RPX1NDT1BFX0NPTU1PTigpOworICAgIFR5cGVMb2NhdGlvbiog
bG9jYXRpb24gPSBwY1s3XS51LmxvY2F0aW9uOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpOworICAgIHZtLmhpZ2hGaWRlbGl0eUxvZygpLT5yZWNvcmRUeXBlSW5mb3Jt
YXRpb25Gb3JMb2NhdGlvbih2LCBsb2NhdGlvbik7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZp
c2lvbiAxNzAzMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw4IEBAIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfaGEKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9mcm9tX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHV0X3RvX3Njb3BlKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KTsKIGV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwg
UHJvdG9DYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
IGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2Vu
dHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAx
NzAzMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEyMzIsMyArMTIzMiwxMSBAQCBlbmQKIF9sbGludF9v
cF9pbml0X2dsb2JhbF9jb25zdF9ub3A6CiAgICAgZGlzcGF0Y2goNSkKIAorX2xsaW50X29wX3By
b2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KQorICAgIGRpc3BhdGNo
KDQpCisKK19sbGludF9vcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfdG9fc2NvcGVf
d2l0aF9wcm9maWxlKQorICAgIGRpc3BhdGNoKDgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxp
dHlMb2cuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiVHlw
ZUxvY2F0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKKworbmFtZXNwYWNl
IEpTQyB7CisKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKwordm9pZCBIaWdo
RmlkZWxpdHlMb2c6OmluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKQoreworICAgIEFTU0VSVCgh
bV9sb2dTdGFydFB0cik7CisgICAgbV9oaWdoRmlkZWxpdHlMb2dTaXplID0gNTAwMDA7CisgICAg
bV9sb2dTdGFydFB0ciA9IChMb2czVHVwbGUqKikgbWFsbG9jKHNpemVvZihMb2czVHVwbGUqKSAq
IG1faGlnaEZpZGVsaXR5TG9nU2l6ZSk7CisgICAgbV9uZXh0QnVmZmVyID0gKExvZzNUdXBsZSoq
KSBtYWxsb2Moc2l6ZW9mKExvZzNUdXBsZSopICogbV9oaWdoRmlkZWxpdHlMb2dTaXplKTsKKyAg
ICBMb2czVHVwbGUqKiBwMSA9IG1fbG9nU3RhcnRQdHI7CisgICAgTG9nM1R1cGxlKiogcDIgPSBt
X25leHRCdWZmZXI7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faGlnaEZpZGVsaXR5
TG9nU2l6ZTsgaSsrKSB7CisgICAgICAgICpwMSA9IG5ldyBMb2czVHVwbGU7IAorICAgICAgICAq
cDIgPSBuZXcgTG9nM1R1cGxlOyAKKyAgICAgICAgcDErKzsKKyAgICAgICAgcDIrKzsKKyAgICB9
CisKKyAgICBtX2N1cnJlbnRPZmZzZXQgPSAwOworfQorCitIaWdoRmlkZWxpdHlMb2c6On5IaWdo
RmlkZWxpdHlMb2coKQoreworICAgIExvZzNUdXBsZSoqIHAxID0gbV9sb2dTdGFydFB0cjsKKyAg
ICBMb2czVHVwbGUqKiBwMiA9IG1fbmV4dEJ1ZmZlcjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsgaSsrKSB7CisgICAgICAgIGRlbGV0ZSAqcDE7Cisg
ICAgICAgIGRlbGV0ZSAqcDI7CisgICAgICAgIHAxKys7CisgICAgICAgIHAyKys7CisgICAgfQor
CisgICAgZnJlZShtX2xvZ1N0YXJ0UHRyKTsKKyAgICBmcmVlKG1fbmV4dEJ1ZmZlcik7Cit9CisK
K3ZvaWQgSGlnaEZpZGVsaXR5TG9nOjpyZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbihK
U1ZhbHVlIHYsIFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgQVNTRVJUKG1fbG9nU3Rh
cnRQdHIpOworICAgIEFTU0VSVChtX2N1cnJlbnRPZmZzZXQgPCBtX2hpZ2hGaWRlbGl0eUxvZ1Np
emUpOworCisgICAgTG9nM1R1cGxlKiB0dXBsZSA9ICoobV9sb2dTdGFydFB0ciArIG1fY3VycmVu
dE9mZnNldCk7CisKKyAgICB0dXBsZS0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICB0dXBsZS0+
dmFsdWUgPSB2OworICAgIHR1cGxlLT5zdHJ1Y3R1cmUgPSAodi5pc0NlbGwoKSA/IHYuYXNDZWxs
KCktPnN0cnVjdHVyZSgpIDogbnVsbHB0cik7CisKKyAgICBtX2N1cnJlbnRPZmZzZXQgKz0gMTsK
KyAgICBpZiAobV9jdXJyZW50T2Zmc2V0ID09IG1faGlnaEZpZGVsaXR5TG9nU2l6ZSkKKyAgICAg
ICAgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyh0cnVlLCAiTG9nIEZ1bGwiKTsKK30KKwordm9pZCBI
aWdoRmlkZWxpdHlMb2c6OnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coYm9vbCBhc3luY2hyb25vdXNs
eSwgU3RyaW5nIHJlYXNvbikKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBm
cm9tIHRoZSBtYWluIGV4ZWN1dGlvbiB0aHJlYWQuCisgICAgaWYgKCFtX2N1cnJlbnRPZmZzZXQp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJQ
cm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCInIik7CisKKyAgICBCeXRlU3BpbkxvY2tlciogbG9j
a2VyID0gbmV3IEJ5dGVTcGluTG9ja2VyKG1fbG9jayk7CisgICAgVGhyZWFkRGF0YSogZGF0YSA9
IG5ldyBUaHJlYWREYXRhOworICAgIGRhdGEtPm1fcHJvY2Nlc3NMb2dUb09mZnNldCA9IG1fY3Vy
cmVudE9mZnNldDsKKyAgICBkYXRhLT5tX3Byb2Nlc3NMb2dQdHIgPSBtX2xvZ1N0YXJ0UHRyOwor
ICAgIGRhdGEtPm1fbG9ja2VyID0gbG9ja2VyOworCisgICAgbV9jdXJyZW50T2Zmc2V0ID0gMDsK
KyAgICBMb2czVHVwbGUqKiB0ZW1wID0gbV9sb2dTdGFydFB0cjsKKyAgICBtX2xvZ1N0YXJ0UHRy
ID0gbV9uZXh0QnVmZmVyOworICAgIG1fbmV4dEJ1ZmZlciA9IHRlbXA7CisgICAgCisgICAgaWYg
KGFzeW5jaHJvbm91c2x5KQorICAgICAgICBjcmVhdGVUaHJlYWQoYWN0dWFsbHlQcm9jZXNzTG9n
VGhyZWFkRnVuY3Rpb24sIGRhdGEsICJQcm9jZXNzSGlnaEZpZGVsaXR5TG9nIik7CisgICAgZWxz
ZSAKKyAgICAgICAgYWN0dWFsbHlQcm9jZXNzTG9nVGhyZWFkRnVuY3Rpb24oZGF0YSk7Cit9CisK
K3ZvaWQgSGlnaEZpZGVsaXR5TG9nOjphY3R1YWxseVByb2Nlc3NMb2dUaHJlYWRGdW5jdGlvbih2
b2lkKiBhcmcpCit7CisgICAgZG91YmxlIGJlZm9yZSAgPSBjdXJyZW50VGltZU1TKCk7CisgICAg
VGhyZWFkRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFRocmVhZERhdGEqPihhcmcpOworICAgIExv
ZzNUdXBsZSoqIHB0ciA9IGRhdGEtPm1fcHJvY2Vzc0xvZ1B0cjs7CisgICAgc2l6ZV90IHByb2Nl
c3NMb2dUb09mZnNldCA9IGRhdGEtPm1fcHJvY2Nlc3NMb2dUb09mZnNldDsgCisgICAgc2l6ZV90
IGkgPSAwOworICAgIHdoaWxlIChpIDwgcHJvY2Vzc0xvZ1RvT2Zmc2V0KSB7CisgICAgICAgIExv
ZzNUdXBsZSogdHVwbGUgPSAqcHRyOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHR1
cGxlLT5zdHJ1Y3R1cmUgPyB0dXBsZS0+c3RydWN0dXJlIDogbnVsbHB0cjsKKyAgICAgICAgUmVm
UHRyPFN0cnVjdHVyZVNoYXBlPiBzaGFwZTsgCisgICAgICAgIGlmIChzdHJ1Y3R1cmUpCisgICAg
ICAgICAgICBzaGFwZSA9IHN0cnVjdHVyZS0+dG9TdHJ1Y3R1cmVTaGFwZSgpOworICAgICAgICBp
ZiAodHVwbGUtPmxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQpCisgICAgICAgICAgICB0dXBsZS0+
bG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldC0+YWRkVHlwZUZvclZhbHVlKHR1cGxlLT52YWx1ZSwg
c2hhcGUpOworICAgICAgICB0dXBsZS0+bG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5h
ZGRUeXBlRm9yVmFsdWUodHVwbGUtPnZhbHVlLCBzaGFwZSk7CisgICAgICAgIHB0cisrOworICAg
ICAgICBpKys7CisgICAgfQorCisgICAgZGVsZXRlIGRhdGEtPm1fbG9ja2VyOworICAgIGRlbGV0
ZSBkYXRhOworICAgIGRvdWJsZSBhZnRlciA9IGN1cnJlbnRUaW1lTVMoKTsKKyAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgZGF0YUxvZ0YoIlByb2Nlc3MgbG9nICclZicgbXNcbiIsIGFmdGVyIC0g
YmVmb3JlKTsKK30KKworCit9IC8vbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSGlnaEZpZGVsaXR5TG9nX2gKKyNkZWZpbmUgSGlnaEZpZGVs
aXR5TG9nX2gKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlIDx3dGYv
Qnl0ZVNwaW5Mb2NrLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisgICAgY2xhc3MgVHlwZUxvY2F0
aW9uOworCitjbGFzcyBIaWdoRmlkZWxpdHlMb2cgeworCitwdWJsaWM6CisgICAgc3RydWN0IExv
ZzNUdXBsZSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKKyAgICAg
ICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbjsgCisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
OworICAgIH07CisKKyAgICBIaWdoRmlkZWxpdHlMb2coKQorICAgICAgICA6IG1fbG9nU3RhcnRQ
dHIoMCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKKyAgICB9
CisKKyAgICB+SGlnaEZpZGVsaXR5TG9nKCk7CisKKyAgICB2b2lkIHJlY29yZFR5cGVJbmZvcm1h
dGlvbkZvckxvY2F0aW9uKEpTVmFsdWUgdiwgVHlwZUxvY2F0aW9uKik7CisgICAgdm9pZCBwcm9j
ZXNzSGlnaEZpZGVsaXR5TG9nKGJvb2wgYXN5bmNocm9ub3VzbHkgPSBmYWxzZSwgU3RyaW5nID0g
IiIpOworCitwcml2YXRlOgorICAgIHZvaWQgaW5pdGlhbGl6ZUhpZ2hGaWRlbGl0eUxvZygpOwor
ICAgIHN0YXRpYyB2b2lkIGFjdHVhbGx5UHJvY2Vzc0xvZ1RocmVhZEZ1bmN0aW9uKHZvaWQqKTsK
KworICAgIHVuc2lnbmVkIG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsKKyAgICBzaXplX3QgbV9jdXJy
ZW50T2Zmc2V0OworICAgIExvZzNUdXBsZSoqIG1fbG9nU3RhcnRQdHI7CisgICAgTG9nM1R1cGxl
KiogbV9uZXh0QnVmZmVyOworCisgICAgQnl0ZVNwaW5Mb2NrIG1fbG9jazsKKworICAgIHN0cnVj
dCBUaHJlYWREYXRhIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICBMb2czVHVwbGUqKiBtX3By
b2Nlc3NMb2dQdHI7CisgICAgICAgIHNpemVfdCBtX3Byb2NjZXNzTG9nVG9PZmZzZXQ7CisgICAg
ICAgIEJ5dGVTcGluTG9ja2VyKiBtX2xvY2tlcjsKKyAgICB9OworfTsKKworfSAvL25hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vSGlnaEZpZGVsaXR5TG9nX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKKworI2luY2x1
ZGUgIlR5cGVMb2NhdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworCitTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpn
ZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lICwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBT
dHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpCit7CisgICAgU3RyaW5nIGds
b2JhbCA9IGdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHN0YXJ0TGluZSwgc3RhcnRD
b2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7CisgICAg
aWYgKCFnbG9iYWwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZ2xvYmFsOworICAgIAorICAg
IHJldHVybiBnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHN0YXJ0TGluZSwgc3RhcnRD
b2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7Cit9CisK
K1dURjo6U3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0R2xvYmFsVHlwZXNGb3JW
YXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVu
c2lnbmVkLCBjb25zdCBXVEY6OlN0cmluZyYsIGludHB0cl90IHNvdXJjZUlEKQoreworICAgIGF1
dG8gaXRlciA9IG1fZ2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwLmZpbmQoZ2V0TG9jYXRpb25C
YXNlZEhhc2goc291cmNlSUQsIHN0YXJ0TGluZSkpOworICAgIGF1dG8gZW5kID0gbV9nbG9iYWxM
b2NhdGlvblRvR2xvYmFsSURNYXAuZW5kKCk7CisgICAgaWYgKGl0ZXIgPT0gZW5kKQorICAgICAg
ICByZXR1cm4gIiI7CisKKyAgICBhdXRvIGl0ZXIyID0gbV9nbG9iYWxJRE1hcC5maW5kKGl0ZXIt
PnZhbHVlKTsKKyAgICBhdXRvIGVuZDIgPSBtX2dsb2JhbElETWFwLmVuZCgpOworICAgIGlmIChp
dGVyMiA9PSBlbmQyKQorICAgICAgICByZXR1cm4gIiI7CisKKyAgICByZXR1cm4gaXRlcjItPnZh
bHVlLT5zZWVuVHlwZXMoKTsKK30KKworV1RGOjpTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyOjpnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwg
dW5zaWduZWQgLCB1bnNpZ25lZCAsIHVuc2lnbmVkICwgY29uc3QgV1RGOjpTdHJpbmcmICwgaW50
cHRyX3Qgc291cmNlSUQpCit7CisgICAgYXV0byBpdGVyID0gbV9nbG9iYWxMb2NhdGlvbk1hcC5m
aW5kKGdldExvY2F0aW9uQmFzZWRIYXNoKHNvdXJjZUlELCBzdGFydExpbmUpKTsKKyAgICBhdXRv
IGVuZCA9IG1fZ2xvYmFsTG9jYXRpb25NYXAuZW5kKCk7CisgICAgaWYgKGl0ZXIgPT0gZW5kKQor
ICAgICAgICByZXR1cm4gICIiOworCisgICAgcmV0dXJuIGl0ZXItPnZhbHVlLT5zZWVuVHlwZXMo
KTsKK30KKwordm9pZCBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xvY2F0aW9u
KFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRh
dGFMb2dGKCJSZWdpc3RlcmluZyBsb2NhdGlvbjo6IGxpbmU6JXUsIGNvbHVtbjoldVxuIiwgbG9j
YXRpb24tPm1fbGluZSwgbG9jYXRpb24tPm1fY29sdW1uKTsKKworICAgIFN0cmluZyBoYXNoU3Ry
aW5nKGdldExvY2F0aW9uQmFzZWRIYXNoKGxvY2F0aW9uLT5tX3NvdXJjZUlELCBsb2NhdGlvbi0+
bV9saW5lKSk7CisKKyAgICBpZiAobG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCAhPSBIaWdo
RmlkZWxpdHlOb0dsb2JhbElERXhpc3RzKSB7IAorICAgICAgICBBU1NFUlQobV9nbG9iYWxJRE1h
cC5pc1ZhbGlkS2V5KGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQpKTsKKyAgICAgICAgLy8g
QnVpbGQgdGhlIG1hcHBpbmcgcmVsYXRpb25zaGlwcyBNYXAxOmhhc2hTdHJpbmc9Pmdsb2JhbElk
LCBNYXAyOmdsb2JhbElEPT5UeXBlU2V0IAorICAgICAgICBtX2dsb2JhbExvY2F0aW9uVG9HbG9i
YWxJRE1hcC5zZXQoaGFzaFN0cmluZywgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCk7Cisg
ICAgICAgIG1fZ2xvYmFsSURNYXAuc2V0KGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQsIGxv
Y2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQuZ2V0KCkpOworICAgIH0KKworICAgIEFTU0VSVChtX2ds
b2JhbExvY2F0aW9uTWFwLmlzVmFsaWRLZXkoaGFzaFN0cmluZykpOworICAgIG1fZ2xvYmFsTG9j
YXRpb25NYXAuc2V0KGhhc2hTdHJpbmcsIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldC5n
ZXQoKSk7Cit9CisKK1dURjo6U3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9j
YXRpb25CYXNlZEhhc2goaW50cHRyX3QgaWQsIHVuc2lnbmVkIGxpbmUpCit7CisgICAgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKGlkKSArIFN0cmluZygiOiIpICsgU3RyaW5nOjpudW1iZXIobGluZSk7
Cit9CisKK30gLy9uYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlcl9oCisjZGVmaW5lIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCisKKyNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVHlwZUxvY2F0aW9uOwor
CitjbGFzcyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIgeworCitwdWJsaWM6CisgICAgV1RGOjpT
dHJpbmcgZ2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNp
Z25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBj
b25zdCBXVEY6OlN0cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7CisgICAg
V1RGOjpTdHJpbmcgZ2V0R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3Rh
cnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQg
ZW5kQ29sdW1uLCBjb25zdCBXVEY6OlN0cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3Vy
Y2VJRCk7CisgICAgV1RGOjpTdHJpbmcgZ2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1
bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5l
LCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFdURjo6U3RyaW5nJiB2YXJpYWJsZU5hbWUsIGlu
dHB0cl90IHNvdXJjZUlEKTsKKyAgICB2b2lkIGluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlv
biopOworICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZ2V0TG9jYXRpb25C
YXNlZEhhc2goaW50cHRyX3QsIHVuc2lnbmVkKTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxXVEY6
OlN0cmluZywgVHlwZVNldCo+IEdsb2JhbExvY2F0aW9uTWFwOyAvLyAoZm9yIG5vdywgaGFjayBp
dCBhbmQgc2F5IE1hcDoiSUQ6TGluZSIgPT4gVHlwZVNldC4gT2J2aW91c2x5LCB0aGlzIGFzc3Vt
ZXMgYWxsIGFzc2lnbm1lbnRzIGFyZSBvbiBkaXNjcmV0ZSBsaW5lcykuCisgICAgdHlwZWRlZiBI
YXNoTWFwPGludDY0X3QsIFR5cGVTZXQqPiBHbG9iYWxJRE1hcDsgCisgICAgdHlwZWRlZiBIYXNo
TWFwPFdURjo6U3RyaW5nLCBpbnQ2NF90PiBHbG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXA7CisK
KyAgICBHbG9iYWxJRE1hcCBtX2dsb2JhbElETWFwOworICAgIEdsb2JhbExvY2F0aW9uTWFwIG1f
Z2xvYmFsTG9jYXRpb25NYXA7CisgICAgR2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwIG1fZ2xv
YmFsTG9jYXRpb25Ub0dsb2JhbElETWFwOworfTsKKworCit9IC8vbmFtZXNwYWNlIEpTQworCisK
KyNlbmRpZiAvL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcg
KzI3MSw5IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYoYm9vbCwg
ZGlzYWJsZUdDLCBmYWxzZSkgXAogICAgIHYodW5zaWduZWQsIGdjTWF4SGVhcFNpemUsIDApIFwK
ICAgICB2KGJvb2wsIHJlY29yZEdDUGF1c2VUaW1lcywgZmFsc2UpIFwKLSAgICB2KGJvb2wsIGxv
Z0hlYXBTdGF0aXN0aWNzQXRFeGl0LCBmYWxzZSkKKyAgICB2KGJvb2wsIGxvZ0hlYXBTdGF0aXN0
aWNzQXRFeGl0LCBmYWxzZSkgXAorICAgIHYoYm9vbCwgcHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRl
bGl0eSwgZmFsc2UpCisgICAgCiAKIGNsYXNzIE9wdGlvbnMgewogcHVibGljOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxNzAz
MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDUyLDYgKzEwNTIsNDAgQEAgYm9vbCBTdHJ1Y3R1cmU6OnByb3RvdHlw
ZUNoYWluTWF5SW50ZXJjZQogICAgIH0KIH0KIAorCitQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBl
PiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoKQoreworICAgIFZlY3RvcjxTdHJ1Y3R1cmUq
LCA4PiBzdHJ1Y3R1cmVzOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgIFByb3BlcnR5
VGFibGUqIHRhYmxlOworICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gc2hhcGUgPSBTdHJ1Y3R1
cmVTaGFwZTo6Y3JlYXRlKCk7CisKKyAgICBmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFs
aXphdGlvbihzdHJ1Y3R1cmVzLCBzdHJ1Y3R1cmUsIHRhYmxlKTsKKyAgICAKKyAgICBpZiAodGFi
bGUpIHsKKyAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLT5iZWdp
bigpOworICAgICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS0+ZW5kKCk7
CisKKyAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIHNo
YXBlLT5hZGRQcm9wZXJ0eShpdGVyLT5rZXkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBzdHJ1Y3R1cmUtPm1fbG9jay51bmxvY2soKTsKKyAgICB9CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gc3RydWN0dXJlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOworICAgICAgICBpZiAoIXN0cnVjdHVyZS0+bV9uYW1l
SW5QcmV2aW91cykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNoYXBlLT5hZGRQ
cm9wZXJ0eShzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMuZ2V0KCkpOworICAgIH0KKworICAg
IHNoYXBlLT5tYXJrQXNGaW5hbCgpOworCisgICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKK30K
Kwogdm9pZCBTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBv
dXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwg
IiwgeyIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJ
KHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTAsNiArMzkwLDggQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQ7CiAgICAgfQorCisgICAg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gdG9TdHJ1Y3R1cmVTaGFwZSgpOwogICAgIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQ
cmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAxNzAzMzIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMyw2ICsxMDMsMTEgQEAgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlKFZNJiB2bSkK
ICAgICAsIG1fY2FwdHVyZUVuZCgwKQogICAgICwgbV9mdW5jdGlvbkVudGVyZWRPbmNlKENsZWFy
V2F0Y2hwb2ludCkKIHsKKyAgICBpZiAodm0uaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxp
dHkoKSkgeworICAgICAgICBtX3VuaXF1ZUlETWFwID0gc3RkOjptYWtlX3VuaXF1ZTxVbmlxdWVJ
RE1hcD4oKTsKKyAgICAgICAgbV9yZWdpc3RlclRvVmFyaWFibGVNYXAgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlZ2lzdGVyVG9WYXJpYWJsZU1hcD4oKTsKKyAgICAgICAgbV91bmlxdWVUeXBlU2V0TWFw
ID0gc3RkOjptYWtlX3VuaXF1ZTxVbmlxdWVUeXBlU2V0TWFwPigpOworICAgIH0KIH0KIAogU3lt
Ym9sVGFibGU6On5TeW1ib2xUYWJsZSgpIHsgfQpAQCAtMTU3LDkgKzE2Miw3MiBAQCBTeW1ib2xU
YWJsZSogU3ltYm9sVGFibGU6OmNsb25lQ2FwdHVyZWROCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IHBhcmFtZXRlckNvdW50KCk7IGktLTspCiAgICAgICAgICAgICByZXN1bHQtPm1fc2xvd0Fy
Z3VtZW50c1tpXSA9IG1fc2xvd0FyZ3VtZW50c1tpXTsKICAgICB9CisKKyAgICBpZiAobV91bmlx
dWVJRE1hcCAmJiByZXN1bHQtPm1fdW5pcXVlSURNYXApIHsKKworICAgICAgICB7CisgICAgICAg
ICAgICBhdXRvIGl0ZXIgPSBtX3VuaXF1ZUlETWFwLT5iZWdpbigpOworICAgICAgICAgICAgYXV0
byBlbmQgPSBtX3VuaXF1ZUlETWFwLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9
IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIHJlc3VsdC0+bV91bmlxdWVJRE1hcC0+c2V0
KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAg
ICAgICAgYXV0byBpdGVyID0gbV9yZWdpc3RlclRvVmFyaWFibGVNYXAtPmJlZ2luKCk7CisgICAg
ICAgICAgICBhdXRvIGVuZCA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5lbmQoKTsKKyAgICAg
ICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIHJlc3Vs
dC0+bV9yZWdpc3RlclRvVmFyaWFibGVNYXAtPnNldChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsK
KyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fdW5pcXVl
VHlwZVNldE1hcC0+YmVnaW4oKTsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gbV91bmlxdWVUeXBl
U2V0TWFwLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC0+bV91bmlxdWVUeXBlU2V0TWFwLT5zZXQoaXRlci0+a2V5
LCBpdGVyLT52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCitpbnQ2NF90IFN5bWJvbFRhYmxlOjp1bmlxdWVJREZvclZhcmlhYmxlKGNvbnN0
IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXksIFZNJiB2bSkKK3sKKyAgICBh
dXRvIGl0ZXIgPSBtX3VuaXF1ZUlETWFwLT5maW5kKGtleSk7CisgICAgYXV0byBlbmQgPSBtX3Vu
aXF1ZUlETWFwLT5lbmQoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGVuZCwgaXRlciAhPSBlbmQpOwor
CisgICAgaW50NjRfdCYgaWQgPSBpdGVyLT52YWx1ZTsKKyAgICBpZiAoaWQgPT0gSGlnaEZpZGVs
aXR5TmVlZHNVbmlxdWVJREdlbmVyYXRpb24pIHsKKyAgICAgICAgaWQgPSB2bS5nZXROZXh0VW5p
cXVlVmFyaWFibGVJRCgpOworICAgICAgICBtX3VuaXF1ZVR5cGVTZXRNYXAtPnNldChrZXksIG5l
dyBUeXBlU2V0KTsgLy9tYWtlIGEgbmV3IGdsb2JhbCB0eXBlc2V0IGZvciB0aGUgSUQKKyAgICB9
CisgICAgICAgICAKKyAgICByZXR1cm4gaWQ7Cit9CisKK2ludDY0X3QgU3ltYm9sVGFibGU6OnVu
aXF1ZUlERm9yUmVnaXN0ZXIoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBpbnQg
cmVnaXN0ZXJJbmRleCwgVk0mIHZtKQoreworICAgIGF1dG8gaXRlciA9IG1fcmVnaXN0ZXJUb1Zh
cmlhYmxlTWFwLT5maW5kKHJlZ2lzdGVySW5kZXgpOworICAgIGF1dG8gZW5kID0gbV9yZWdpc3Rl
clRvVmFyaWFibGVNYXAtPmVuZCgpOworICAgIEFTU0VSVF9VTlVTRUQoZW5kLCBpdGVyICE9IGVu
ZCk7CisgICAgcmV0dXJuIHVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpdGVyLT52YWx1ZS5n
ZXQoKSwgdm0pOworfQorCitUeXBlU2V0KiBTeW1ib2xUYWJsZTo6Z2xvYmFsVHlwZVNldEZvclJl
Z2lzdGVyKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgaW50IHJlZ2lzdGVySW5k
ZXgsIFZNJiB2bSkKK3sKKyAgICB1bmlxdWVJREZvclJlZ2lzdGVyKGxvY2tlciwgcmVnaXN0ZXJJ
bmRleCwgdm0pOyAvL2Vuc3VyZSBpdCdzIGNyZWF0ZWQKKyAgICBhdXRvIGl0ZXIgPSBtX3JlZ2lz
dGVyVG9WYXJpYWJsZU1hcC0+ZmluZChyZWdpc3RlckluZGV4KTsKKyAgICBhdXRvIGVuZCA9IG1f
cmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5lbmQoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGVuZCwgaXRl
ciAhPSBlbmQpOworICAgIHJldHVybiBnbG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUobG9ja2VyLCBp
dGVyLT52YWx1ZS5nZXQoKSwgdm0pOworfQorCitUeXBlU2V0KiBTeW1ib2xUYWJsZTo6Z2xvYmFs
VHlwZVNldEZvclZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgU3Ry
aW5nSW1wbCoga2V5LCBWTSYgdm0pCit7CisgICAgdW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIs
IGtleSwgdm0pOworICAgIHJldHVybiBtX3VuaXF1ZVR5cGVTZXRNYXAtPmZpbmQoa2V5KS0+dmFs
dWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE3MDMzMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKyNpbmNsdWRlICJUeXBlU2V0LmgiCiAjaW5jbHVkZSAiVmFyaWFibGVXYXRj
aHBvaW50U2V0LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRz
Lmg+CkBAIC0zMzYsNiArMzM3LDkgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7
CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBTeW1ib2xUYWJsZUVu
dHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8U3RyaW5nSW1wbD4+LCBT
eW1ib2xUYWJsZUluZGV4SGFzaFRyYWl0cz4gTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8U3RyaW5nSW1wbD4sIGludDY0X3Q+IFVuaXF1ZUlETWFwOworICAgIHR5cGVkZWYgSGFzaE1h
cDxSZWZQdHI8U3RyaW5nSW1wbD4sIFR5cGVTZXQqPiBVbmlxdWVUeXBlU2V0TWFwOworICAgIHR5
cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxTdHJpbmdJbXBsPiwgV1RGOjpJbnRIYXNoPGludD4s
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50Pj4gUmVnaXN0ZXJUb1Zhcmlh
YmxlTWFwOwogCiAgICAgc3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZtKQogICAgIHsK
QEAgLTQxMyw2ICs0MTcsMTIgQEAgcHVibGljOgogICAgIAogICAgIE1hcDo6QWRkUmVzdWx0IGFk
ZChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5LCBjb25zdCBTeW1i
b2xUYWJsZUVudHJ5JiBlbnRyeSkKICAgICB7CisgICAgICAgIGlmIChtX3VuaXF1ZUlETWFwKSB7
CisgICAgICAgICAgICAvLyBVc2UgYSBmbGFnIHRvIGluZGljYXRlIHRoYXQgd2UgbmVlZCB0byBw
cm9kdWNlIGEgdW5pcXVlIElELiBCZWNhdXNlIFZNIGlzIGluIGNoYXJnZSBvZiBjcmVhdGluZyB1
bmlxdWVJRHMsIAorICAgICAgICAgICAgLy8gd2hlbiB1bmlxdWVJRCgpIGlzIGNhbGxlZCwgd2Ug
Y2hlY2sgdGhpcyBmbGFnIHRvIHNlZSBpZiB1bmlxdWVJRCBjcmVhdGlvbiBpcyBuZWNlc3Nhcnku
CisgICAgICAgICAgICBtX3VuaXF1ZUlETWFwLT5zZXQoa2V5LCBIaWdoRmlkZWxpdHlOZWVkc1Vu
aXF1ZUlER2VuZXJhdGlvbik7IAorICAgICAgICAgICAgbV9yZWdpc3RlclRvVmFyaWFibGVNYXAt
PnNldChlbnRyeS5nZXRJbmRleCgpLCBrZXkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBt
X21hcC5hZGQoa2V5LCBlbnRyeSk7CiAgICAgfQogICAgIApAQCAtNDI0LDYgKzQzNCwxMCBAQCBw
dWJsaWM6CiAgICAgCiAgICAgTWFwOjpBZGRSZXN1bHQgc2V0KGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImLCBTdHJpbmdJbXBsKiBrZXksIGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5KQog
ICAgIHsKKyAgICAgICAgaWYgKG1fdW5pcXVlSURNYXApIHsKKyAgICAgICAgICAgIG1fdW5pcXVl
SURNYXAtPnNldChrZXksIEhpZ2hGaWRlbGl0eU5lZWRzVW5pcXVlSURHZW5lcmF0aW9uKTsgCisg
ICAgICAgICAgICBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcC0+c2V0KGVudHJ5LmdldEluZGV4KCks
IGtleSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fbWFwLnNldChrZXksIGVudHJ5KTsK
ICAgICB9CiAgICAgCkBAIC00NDQsNiArNDU4LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGNvbnRhaW5zKGxvY2tlciwga2V5KTsKICAgICB9CiAgICAgCisgICAgaW50NjRfdCB1bmlxdWVJ
REZvclZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXks
IFZNJiB2bSk7CisgICAgaW50NjRfdCB1bmlxdWVJREZvclJlZ2lzdGVyKGNvbnN0IENvbmN1cnJl
bnRKSVRMb2NrZXImIGxvY2tlciwgaW50IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSk7CisgICAgVHlw
ZVNldCogZ2xvYmFsVHlwZVNldEZvclJlZ2lzdGVyKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXIm
IGxvY2tlciwgaW50IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSk7CisgICAgVHlwZVNldCogZ2xvYmFs
VHlwZVNldEZvclZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgU3Ry
aW5nSW1wbCoga2V5LCBWTSYgdm0pOworCiAgICAgYm9vbCB1c2VzTm9uU3RyaWN0RXZhbCgpIHsg
cmV0dXJuIG1fdXNlc05vblN0cmljdEV2YWw7IH0KICAgICB2b2lkIHNldFVzZXNOb25TdHJpY3RF
dmFsKGJvb2wgdXNlc05vblN0cmljdEV2YWwpIHsgbV91c2VzTm9uU3RyaWN0RXZhbCA9IHVzZXNO
b25TdHJpY3RFdmFsOyB9CiAKQEAgLTQ5NCw3ICs1MTMsMTAgQEAgcHJpdmF0ZToKICAgICB+U3lt
Ym9sVGFibGUoKTsKIAogICAgIE1hcCBtX21hcDsKLSAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VW5pcXVlSURNYXA+IG1fdW5pcXVlSURNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVy
VG9WYXJpYWJsZU1hcD4gbV9yZWdpc3RlclRvVmFyaWFibGVNYXA7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFVuaXF1ZVR5cGVTZXRNYXA+IG1fdW5pcXVlVHlwZVNldE1hcDsKKwogICAgIGludCBtX3Bh
cmFtZXRlckNvdW50SW5jbHVkaW5nVGhpczsKICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWw7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VHlwZVNldC5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK1R5cGVTZXQ6OlR5cGVTZXQoKQorICAgIDogbV9zZWVuVHlwZXMoVHlwZU5vdGhp
bmcpCisgICAgLCBtX3N0cnVjdHVyZUhpc3RvcnkobmV3IFZlY3RvcjxSZWZQdHI8U3RydWN0dXJl
U2hhcGU+PikKKyAgICAsIG1fbWlnaHRIYXZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeShm
YWxzZSkKK3sKK30KKworUnVudGltZVR5cGUgVHlwZVNldDo6Z2V0UnVudGltZVR5cGVGb3JWYWx1
ZShKU1ZhbHVlIHYpCit7CisgICAgUnVudGltZVR5cGUgcmV0OworICAgIGlmICh2LmlzRnVuY3Rp
b24oKSkKKyAgICAgICAgcmV0ID0gVHlwZUZ1bmN0aW9uOworICAgIGVsc2UgaWYgKHYuaXNVbmRl
ZmluZWQoKSkKKyAgICAgICAgcmV0ID0gVHlwZVVuZGVmaW5lZDsKKyAgICBlbHNlIGlmICh2Lmlz
TnVsbCgpKQorICAgICAgICByZXQgPSBUeXBlTnVsbDsKKyAgICBlbHNlIGlmICh2LmlzQm9vbGVh
bigpKQorICAgICAgICByZXQgPSBUeXBlQm9vbGVhbjsKKyAgICBlbHNlIGlmICh2LmlzTWFjaGlu
ZUludCgpKQorICAgICAgICByZXQgPSBUeXBlTWFjaGluZUludDsKKyAgICBlbHNlIGlmICh2Lmlz
TnVtYmVyKCkpCisgICAgICAgIHJldCA9IFR5cGVOdW1iZXI7CisgICAgZWxzZSBpZiAodi5pc1N0
cmluZygpKQorICAgICAgICByZXQgPSBUeXBlU3RyaW5nOworICAgIGVsc2UgaWYgKHYuaXNQcmlt
aXRpdmUoKSkKKyAgICAgICAgcmV0ID0gVHlwZVByaW1pdGl2ZTsKKyAgICBlbHNlIGlmICh2Lmlz
T2JqZWN0KCkpCisgICAgICAgIHJldCA9IFR5cGVPYmplY3Q7CisgICAgZWxzZQorICAgICAgICBD
UkFTSCgpOworCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCBUeXBlU2V0OjphZGRUeXBlRm9y
VmFsdWUoSlNWYWx1ZSB2LCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBzaGFwZSkgCit7Cisg
ICAgUnVudGltZVR5cGUgdCA9IGdldFJ1bnRpbWVUeXBlRm9yVmFsdWUodik7CisgICAgbV9zZWVu
VHlwZXMgPSBtX3NlZW5UeXBlcyB8IHQ7CisKKyAgICBpZiAoc2hhcGUpIHsKKyAgICAgICAgbV9z
dHJ1Y3R1cmVIaXN0b3J5LT5hcHBlbmQoc2hhcGUpOworICAgICAgICBtX21pZ2h0SGF2ZUR1cGxp
Y2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBUeXBlU2V0
OjpyZW1vdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KCkgCit7CisgICAgVmVjdG9yPFJl
ZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+KiBuZXdIaXN0b3J5ID0gbmV3IFZlY3RvcjxSZWZQdHI8U3Ry
dWN0dXJlU2hhcGU+PjsKKyAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gY29udGFpbmVyOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LT5zaXplKCk7IGkrKykg
eworICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGEgPSBtX3N0cnVjdHVyZUhpc3Rvcnkt
PmF0KGkpOworICAgICAgICBTdHJpbmcgaGFzaCA9IGEtPnByb3BlcnR5SGFzaCgpOworICAgICAg
ICBhdXRvIGl0ZXIgPSBjb250YWluZXIuZmluZChoYXNoKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0g
Y29udGFpbmVyLmVuZCgpKSB7CisgICAgICAgICAgICBjb250YWluZXIuYWRkKGhhc2gsIHRydWUp
OworICAgICAgICAgICAgbmV3SGlzdG9yeS0+YXBwZW5kKGEpOworICAgICAgICB9CisgICAgfQor
CisgICAgZGVsZXRlIG1fc3RydWN0dXJlSGlzdG9yeTsKKyAgICBtX3N0cnVjdHVyZUhpc3Rvcnkg
PSBuZXdIaXN0b3J5OworICAgIG1fbWlnaHRIYXZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9y
eSA9IGZhbHNlOworfQorCitXVEY6OlN0cmluZyBUeXBlU2V0OjpzZWVuVHlwZXMoKSAKK3sKKyAg
ICBpZiAobV9zZWVuVHlwZXMgPT0gVHlwZU5vdGhpbmcpCisgICAgICAgIHJldHVybiAiKFVucmVh
Y2hlZCBTdGF0ZW1lbnQpIjsKKworICAgIGlmIChtX21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVj
dHVyZUhpc3RvcnkpCisgICAgICAgIHJlbW92ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3Rvcnko
KTsKKworICAgIFdURjo6U3RyaW5nIHNlZW4oIiIpOworCisgICAgaWYgKG1fc2VlblR5cGVzICYg
VHlwZUZ1bmN0aW9uKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIkZ1bmN0aW9uICIpOworICAgIGlm
IChtX3NlZW5UeXBlcyAmIFR5cGVVbmRlZmluZWQpCisgICAgICAgICBzZWVuLmFwcGVuZCgiVW5k
ZWZpbmVkICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdWxsKQorICAgICAgICAgc2Vl
bi5hcHBlbmQoIk51bGwgIik7CisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZUJvb2xlYW4pCisg
ICAgICAgICBzZWVuLmFwcGVuZCgiQm9vbGVhbiAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBU
eXBlTWFjaGluZUludCkKKyAgICAgICAgIHNlZW4uYXBwZW5kKCJNYWNoaW5lSW50ICIpOworICAg
IGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdW1iZXIpCisgICAgICAgICBzZWVuLmFwcGVuZCgiTnVt
YmVyICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVTdHJpbmcpCisgICAgICAgICBzZWVu
LmFwcGVuZCgiU3RyaW5nICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVQcmltaXRpdmUp
CisgICAgICAgICBzZWVuLmFwcGVuZCgiUHJpbWl0aXZlICIpOworCisgICAgc2Vlbi5hcHBlbmQo
IlN0cnVjdHVyZXM6WyAiKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJl
SGlzdG9yeS0+c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgc2Vlbi5hcHBlbmQobV9zdHJ1Y3R1cmVI
aXN0b3J5LT5hdChpKS0+c3RyaW5nUmVwcmVzZW50YXRpb24oKSk7CisgICAgICAgIHNlZW4uYXBw
ZW5kKCIgIik7CisgICAgfQorICAgIHNlZW4uYXBwZW5kKCJdIik7CisKKyAgICBpZiAobV9zdHJ1
Y3R1cmVIaXN0b3J5LT5zaXplKCkpIHsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIiAgIik7CisgICAg
ICAgIHNlZW4uYXBwZW5kKCJMVUI6ICIpOworICAgICAgICBzZWVuLmFwcGVuZChTdHJ1Y3R1cmVT
aGFwZTo6bGVhc3RVcHBlckJvdW5kKG1fc3RydWN0dXJlSGlzdG9yeSkpOworICAgIH0KKworICAg
IHJldHVybiBzZWVuOworfQorCit2b2lkIFR5cGVTZXQ6OmR1bXBTZWVuVHlwZXMoKQoreworICAg
IGRhdGFMb2coc2VlblR5cGVzKCksICJcbiIpOworfQorCitTdHJ1Y3R1cmVTaGFwZTo6U3RydWN0
dXJlU2hhcGUoKQorICAgIDogbV9wcm9wZXJ0eUhhc2gobnVsbHB0cikKKyAgICAsIG1fZmluYWwo
ZmFsc2UpCit7Cit9CisKK3ZvaWQgU3RydWN0dXJlU2hhcGU6Om1hcmtBc0ZpbmFsKCkKK3sKKyAg
ICBBU1NFUlQoIW1fZmluYWwpOworICAgIG1fZmluYWwgPSB0cnVlOworfQorCit2b2lkIFN0cnVj
dHVyZVNoYXBlOjphZGRQcm9wZXJ0eShSZWZQdHI8V1RGOjpTdHJpbmdJbXBsPiBpbXBsKQorewor
ICAgIEFTU0VSVCghbV9maW5hbCk7CisgICAgbV9maWVsZHMuc2V0KGltcGwsIHRydWUpOworfQor
CitTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCgpIAoreworICAgIEFTU0VSVCht
X2ZpbmFsKTsKKyAgICBpZiAobV9wcm9wZXJ0eUhhc2gpCisgICAgICAgIHJldHVybiAqbV9wcm9w
ZXJ0eUhhc2g7CisKKyAgICBtX3Byb3BlcnR5SGFzaCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RyaW5n
PigpOworICAgIG1fcHJvcGVydHlIYXNoLT5hcHBlbmQoIjoiKTsKKyAgICBmb3IgKGF1dG8gaXRl
ciA9IG1fZmllbGRzLmJlZ2luKCksIGVuZCA9IG1fZmllbGRzLmVuZCgpOyBpdGVyICE9IGVuZDsg
KytpdGVyKSB7CisgICAgICAgIFN0cmluZyBwcm9wZXJ0eSA9IFN0cmluZyhpdGVyLT5rZXkpOwor
ICAgICAgICBwcm9wZXJ0eS5yZXBsYWNlKCI6IiwgIlxcOiIpOyAvLyBFbnN1cmUgdGhhdCBoYXNo
KHsiZm9vOiIsICJiYXIifSkgIT0gaGFzaCh7ImZvbyIsICI6YmFyIn0pIGJlY2F1c2Ugd2UncmUg
dXNpbmcgY29sb25zIGFzIGEgc2VwYXJhdG9yIGFuZCBjb2xvbnMgYXJlIGxlZ2FsIGNoYXJhY3Rl
cnMgaW4gZmllbGQgbmFtZXMgaW4gSlMuCisgICAgICAgIG1fcHJvcGVydHlIYXNoLT5hcHBlbmQo
cHJvcGVydHkpOworICAgIH0KKworICAgIHJldHVybiAqbV9wcm9wZXJ0eUhhc2g7Cit9CisKK1dU
Rjo6U3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpsZWFzdFVwcGVyQm91bmQoVmVjdG9yPFJlZlB0cjxT
dHJ1Y3R1cmVTaGFwZT4+KiBzaGFwZXMpCit7CisgICAgU3RyaW5nIGx1YigiIik7CisKKyAgICBp
ZiAoIXNoYXBlcy0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gbHViOworICAgICAKKyAgICBSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+IG9yaWdpbiA9IHNoYXBlcy0+YXQoMCk7CisgICAgbHViLmFwcGVu
ZCgieyIpOworICAgIGZvciAoYXV0byBpdGVyID0gb3JpZ2luLT5tX2ZpZWxkcy5iZWdpbigpLCBl
bmQgPSBvcmlnaW4tPm1fZmllbGRzLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAg
ICAgIGJvb2wgc2hvdWxkQWRkID0gdHJ1ZTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDEsIHNp
emUgPSBzaGFwZXMtPnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgLy8gSWYg
YWxsIG90aGVyIFNoYXBlcyBoYXZlIHRoZSBzYW1lIGZpZWxkIGFzIG9yaWdpbiwgYWRkIGl0IHRv
IHRoZSBsZWFzdCB1cHBlciBib3VuZC4KKyAgICAgICAgICAgIGlmICghc2hhcGVzLT5hdChpKS0+
bV9maWVsZHMuY29udGFpbnMoaXRlci0+a2V5KSkgeworICAgICAgICAgICAgICAgIHNob3VsZEFk
ZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGlmIChzaG91bGRBZGQpCisgICAgICAgICAgICBsdWIuYXBwZW5kKFN0cmlu
ZyhpdGVyLT5rZXkuZ2V0KCkpICsgU3RyaW5nKCIsICIpKTsKKyAgICB9CisKKyAgICBpZiAobHVi
Lmxlbmd0aCgpID49IDMpCisgICAgICAgIGx1YiA9IGx1Yi5sZWZ0KGx1Yi5sZW5ndGgoKSAtIDIp
OyAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nICcsICcKKworICAgIGx1Yi5hcHBlbmQoIn0iKTsKKyAg
ICAKKyAgICByZXR1cm4gbHViOworfQorCitTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnN0cmluZ1Jl
cHJlc2VudGF0aW9uKCkKK3sKKyAgICBTdHJpbmcgcmVwcmVzZW50YXRpb24oInsiKTsKKyAgICBm
b3IgKGF1dG8gaXRlciA9IG1fZmllbGRzLmJlZ2luKCksIGVuZCA9IG1fZmllbGRzLmVuZCgpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgIFN0cmluZyBwcm9wKGl0ZXItPmtleS5nZXQo
KSk7CisgICAgICAgIHJlcHJlc2VudGF0aW9uLmFwcGVuZChwcm9wKTsKKyAgICAgICAgcmVwcmVz
ZW50YXRpb24uYXBwZW5kKCIsICIpOworICAgIH0KKworICAgIGlmIChyZXByZXNlbnRhdGlvbi5s
ZW5ndGgoKSA+PSAzKQorICAgICAgICByZXByZXNlbnRhdGlvbiA9IHJlcHJlc2VudGF0aW9uLmxl
ZnQocmVwcmVzZW50YXRpb24ubGVuZ3RoKCkgLSAyKTsKKworICAgIHJlcHJlc2VudGF0aW9uLmFw
cGVuZCgifSIpOworCisgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uOworfQorCit9IC8vbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUeXBlU2V0X2gKKyNkZWZpbmUgVHlwZVNl
dF9oCisKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1ZhbHVlOworCitlbnVtIFJ1bnRp
bWVUeXBlIHsKKyAgICBUeXBlTm90aGluZyAgICAgICAgICAgID0gMHgwLAorICAgIFR5cGVGdW5j
dGlvbiAgICAgICAgICAgPSAweDEsCisgICAgVHlwZVVuZGVmaW5lZCAgICAgICAgICA9IDB4MiwK
KyAgICBUeXBlTnVsbCAgICAgICAgICAgICAgID0gMHg0LAorICAgIFR5cGVCb29sZWFuICAgICAg
ICAgICAgPSAweDgsCisgICAgVHlwZU1hY2hpbmVJbnQgICAgICAgICA9IDB4MTAsCisgICAgVHlw
ZU51bWJlciAgICAgICAgICAgICA9IDB4MjAsCisgICAgVHlwZVN0cmluZyAgICAgICAgICAgICA9
IDB4NDAsCisgICAgVHlwZVByaW1pdGl2ZSAgICAgICAgICA9IDB4ODAsCisgICAgVHlwZU9iamVj
dCAgICAgICAgICAgICA9IDB4MTAwCit9OworCitjbGFzcyBTdHJ1Y3R1cmVTaGFwZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0cnVjdHVyZVNoYXBlPiB7CisgICAgZnJpZW5kIGNsYXNzIFR5cGVTZXQ7
CisKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmVTaGFwZSgpOworCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJ1Y3R1
cmVTaGFwZSk7IH0KKyAgICBXVEY6OlN0cmluZyBwcm9wZXJ0eUhhc2goKTsKKyAgICB2b2lkIG1h
cmtBc0ZpbmFsKCk7CisgICAgdm9pZCBhZGRQcm9wZXJ0eShSZWZQdHI8V1RGOjpTdHJpbmdJbXBs
Pik7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGxlYXN0VXBwZXJCb3VuZChWZWN0b3I8UmVmUHRy
PFN0cnVjdHVyZVNoYXBlPj4qKTsKKyAgICBXVEY6OlN0cmluZyBzdHJpbmdSZXByZXNlbnRhdGlv
bigpOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8UmVmUHRyPFdURjo6U3RyaW5nSW1wbD4sIGJv
b2w+IG1fZmllbGRzOyAgICAgICAgIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6OlN0cmluZz4g
bV9wcm9wZXJ0eUhhc2g7CisgICAgYm9vbCBtX2ZpbmFsOworfTsKKworY2xhc3MgVHlwZVNldCB7
CisKK3B1YmxpYzoKKyAgICBUeXBlU2V0KCk7CisgICAgdm9pZCBhZGRUeXBlRm9yVmFsdWUoSlNW
YWx1ZSB2LCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPik7CisgICAgc3RhdGljIFJ1bnRpbWVU
eXBlIGdldFJ1bnRpbWVUeXBlRm9yVmFsdWUoSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgV1RGOjpTdHJpbmcgc2VlblR5cGVzKCk7CisKK3ByaXZhdGU6CisgICAgdWludDMyX3QgbV9z
ZWVuVHlwZXM7CisgICAgdm9pZCBkdW1wU2VlblR5cGVzKCk7CisgICAgVmVjdG9yPFJlZlB0cjxT
dHJ1Y3R1cmVTaGFwZT4+KiBtX3N0cnVjdHVyZUhpc3Rvcnk7CisgICAgYm9vbCBtX21pZ2h0SGF2
ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3Rvcnk7CisgICAgdm9pZCByZW1vdmVEdXBsaWNhdGVz
SW5TdHJ1Y3R1cmVIaXN0b3J5KCk7CisKK307CisKK30gLy9uYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvL1R5cGVTZXRfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2
aXNpb24gMTcwMzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw4IEBACiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgi
CiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgorI2lu
Y2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0
eUxvZy5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCkBAIC04OCw2ICs5MCw3
IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWRE
YXRhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQogI2luY2x1ZGUgIkNv
bnNlcnZhdGl2ZVJvb3RzLmgiCkBAIC0yMzYsNiArMjM5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVh
dGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCiAgICAgLCBtX2J1aWx0aW5F
eGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX25l
eHRVbmlxdWVWYXJpYWJsZUlEKDEpCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0
ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNr
KCk7CkBAIC0zMjcsNiArMzMxLDEyIEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICAvLyBJbml0aWFsaXplIHRoaXMgbGFzdCwgYXMgYSBmcmVlIHdheSBvZiBh
c3NlcnRpbmcgdGhhdCBWTSBpbml0aWFsaXphdGlvbiBpdHNlbGYKICAgICAvLyB3b24ndCB1c2Ug
dGhpcy4KICAgICBtX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFNpbXBsZVR5
cGVkQXJyYXlDb250cm9sbGVyKCkpOworCisgICAgLy8gRklYTUU6IGNvbmRpdGlvbmFsbHkgYWxs
b2NhdGUgdGhpcyBzdHVmZiBiYXNlZCBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgaW5zcGVjdG9yIGlz
IHJ1bm5pbmcgT1IgdGhpcyBmbGFnIGlzIGVuYWJsZWQgKG5vdCBqdXN0IGlmIHRoZSBmbGFnIGlz
IGVuYWJsZWQpLgorICAgIGlmIChPcHRpb25zOjpwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5
KCkpIHsKKyAgICAgICAgbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcj4oKTsKKyAgICAgICAgbV9oaWdoRmlkZWxpdHlM
b2cgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hGaWRlbGl0eUxvZz4oKTsKKyAgICB9CiB9CiAKIFZN
Ojp+Vk0oKQpAQCAtOTE5LDYgKzkyOSw0MyBAQCB2b2lkIFZNOjpzZXRFbmFibGVkUHJvZmlsZXIo
TGVnYWN5UHJvZmlsCiAgICAgfQogfQogCitTdHJpbmcgVk06OmdldFR5cGVzRm9yVmFyaWFibGVJ
blJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVk
IGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUs
IGNvbnN0IFN0cmluZyYgc291cmNlSURBc1N0cmluZykKK3sKKyAgICBpZiAoIWlzUHJvZmlsaW5n
VHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgIHJldHVybiAiKE5vdCBQcm9maWxpbmcp
IjsKKworICAgIGJvb2wgb2theTsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRCA9IHNvdXJjZUlEQXNT
dHJpbmcudG9JbnRQdHJTdHJpY3QoJm9rYXkpOworICAgIGlmICghb2theSkKKyAgICAgICAgQ1JB
U0goKTsKKworICAgIHVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUoKTsKKyAgICBy
ZXR1cm4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXItPmdldFR5cGVzRm9yVmFyaWFibGVJblJh
bmdlKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdmFyaWFibGVO
YW1lLCBzb3VyY2VJRCk7Cit9CisKK3ZvaWQgVk06OnVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlU3RhdGUoKQoreworICAgIGlmICghaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaGlnaEZpZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdo
RmlkZWxpdHlMb2coZmFsc2UsICJWTSBVcGRhdGUiKTsKK30KKwordm9pZCBWTTo6ZHVtcEhpZ2hG
aWRlbGl0eVByb2ZpbGluZ1R5cGVzKCkKK3sKKyAgICBpZiAoIWlzUHJvZmlsaW5nVHlwZXNXaXRo
SGlnaEZpZGVsaXR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZUhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlU3RhdGUoKTsKKyAgICBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIqIHByb2Zp
bGVyID0gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuZ2V0KCk7CisgICAgZm9yIChCYWc8VHlw
ZUxvY2F0aW9uPjo6aXRlcmF0b3IgaXRlciA9IG1fbG9jYXRpb25JbmZvLmJlZ2luKCk7ICEhaXRl
cjsgKytpdGVyKSB7CisgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSAqaXRlcjsKKyAg
ICAgICAgZGF0YUxvZ0YoIltMaW5lLCBDb2x1bW5dOjpbJXUsICV1XSBMb2NhbDonJXMnIEdsb2Jh
bDonJXMnXG4iLCBsb2NhdGlvbi0+bV9saW5lLCBsb2NhdGlvbi0+bV9jb2x1bW4sIAorICAgICAg
ICAgICAgICAgICBwcm9maWxlci0+Z2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShsb2Nh
dGlvbi0+bV9saW5lLCBsb2NhdGlvbi0+bV9jb2x1bW4sIGxvY2F0aW9uLT5tX2xpbmUsIGxvY2F0
aW9uLT5tX2NvbHVtbiwgIiIsIGxvY2F0aW9uLT5tX3NvdXJjZUlEKS5hc2NpaSgpLmRhdGEoKSwK
KyAgICAgICAgICAgICAgICAgcHJvZmlsZXItPmdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJh
bmdlKGxvY2F0aW9uLT5tX2xpbmUsIGxvY2F0aW9uLT5tX2NvbHVtbiwgbG9jYXRpb24tPm1fbGlu
ZSwgbG9jYXRpb24tPm1fY29sdW1uLCAiIiwgbG9jYXRpb24tPm1fc291cmNlSUQpLmFzY2lpKCku
ZGF0YSgpKTsKKyAgICB9Cit9CisKIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNKiB2bSkKIHsK
ICAgICBsb2dTYW5pdGl6ZVN0YWNrKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkocmV2aXNpb24gMTcwMzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsMTEgQEAKICNpbmNsdWRlICJTdHJvbmcu
aCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIldhdGNoZG9n
LmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKKyNp
bmNsdWRlIDx3dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAg
LTc0LDYgKzc2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmll
cnM7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEhhbmRsZVN0YWNrOworICAgIGNs
YXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjsKKyAgICBjbGFzcyBIaWdoRmlkZWxpdHlMb2c7
CiAgICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKQEAgLTg0LDYgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFz
cyBSZWdFeHBDYWNoZTsKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNv
dXJjZVByb3ZpZGVyOwogICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGU7CiAgICAgc3RydWN0
IFN0YWNrRnJhbWU7CkBAIC05Niw2ICsxMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU7CiAgICAgY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworICAgIGNsYXNzIFZp
cnR1YWxSZWdpc3RlcjsKICAgICBjbGFzcyBWTUVudHJ5U2NvcGU7CiAgICAgY2xhc3MgV2F0Y2hw
b2ludDsKICAgICBjbGFzcyBXYXRjaHBvaW50U2V0OwpAQCAtNTEwLDYgKzUxNiwxNSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRp
bkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAor
ICAgICAgICBib29sIGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkgeyByZXR1cm4g
ISFtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjsgfQorICAgICAgICBTdHJpbmcgZ2V0VHlwZXNG
b3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZh
cmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CisgICAgICAgIEhpZ2hGaWRlbGl0
eUxvZyogaGlnaEZpZGVsaXR5TG9nKCkgeyByZXR1cm4gbV9oaWdoRmlkZWxpdHlMb2cuZ2V0KCk7
IH0KKyAgICAgICAgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKiBoaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIoKSB7IHJldHVybiBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5nZXQoKTsgfQorICAg
ICAgICB2b2lkIHVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUoKTsKKyAgICAgICAg
VHlwZUxvY2F0aW9uKiBuZXh0TG9jYXRpb24oKSB7IHJldHVybiBtX2xvY2F0aW9uSW5mby5hZGQo
KTsgfSAvL1RPRE86IHBvc3NpYmxlIG9wdG1pemF0aW9uOiB3aGVuIGNvZGVibG9ja3MgZGllLCBy
ZXBvcnQgd2hpY2ggbG9jYXRpb25zIGFyZSBubyBsb25nZXIgYmVpbmcgY2hhbmdlZCBzbyB3ZSBk
b24ndCB3YWxrIG92ZXIgdGhlbQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBI
aWdoRmlkZWxpdHlQcm9maWxpbmdUeXBlcygpOworICAgICAgICBpbnQ2NF90IGdldE5leHRVbmlx
dWVWYXJpYWJsZUlEKCkgeyByZXR1cm4gbV9uZXh0VW5pcXVlVmFyaWFibGVJRCsrOyB9CisKICAg
ICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgICAgICBmcmllbmQgY2xhc3MgQ2xlYXJFeGNlcHRpb25TY29wZTsKQEAgLTU1OCw2ICs1NzMs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+
IG1fYnVpbHRpbkV4ZWN1dGFibGVzOwogICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFt
ZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXYXRj
aHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyPiBtX2hpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlcjsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hGaWRlbGl0eUxvZz4gbV9oaWdo
RmlkZWxpdHlMb2c7CisgICAgICAgIGludDY0X3QgbV9uZXh0VW5pcXVlVmFyaWFibGVJRDsKKyAg
ICAgICAgQmFnPFR5cGVMb2NhdGlvbj4gbV9sb2NhdGlvbkluZm87CiAgICAgfTsKIAogI2lmIEVO
QUJMRShHQ19WQUxJREFUSU9OKQo=
</data>
<flag name="review"
          id="258151"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="258152"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233743</attachid>
            <date>2014-06-24 14:49:02 -0700</date>
            <delta_ts>2014-06-24 16:25:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>87831</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwMzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNiBA
QAorMjAxNC0wNi0yNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBkZWJ1Z2dlciBzaG91bGQgYmUgYWJsZSB0byBzaG93IHZhcmlhYmxl
IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzMzOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bmNyZWFzZSB0aGUgYW1vdW50IG9mIHR5cGUgaW5mb3JtYXRpb24gdGhlIFZNIGdhdGhlcnMgd2hl
biBkaXJlY3RlZAorICAgICAgICB0byBkbyBzby4gVGhpcyBpbml0aWFsIGNvbW1pdCBpcyB3b3Jr
aW5nIHRvd2FyZHMgdGhlIGdvYWwgb2YKKyAgICAgICAgY2FwdHVyaW5nLCBhbmQgdGhlbiBzaG93
aW5nICh2aWEgdGhlIFdlYiBJbnNwZWN0b3IpIHR5cGUgaW5mb3JtYXRpb24gZm9yIGFsbAorICAg
ICAgICBhc3NpZ25tZW50IGFuZCBsb2FkIG9wZXJhdGlvbnMuIFRoaXMgcGF0Y2ggZG9lc24ndCBo
YXZlIHRoZSBmZWF0dXJlIGZ1bGx5IAorICAgICAgICBpbXBsZW1lbnRlZCwgYnV0IGl0IGVuc3Vy
ZXMgdGhlIFZNIGhhcyBubyBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucworICAgICAgICB1bmxlc3Mg
dGhlIGZlYXR1cmUgaXMgc3BlY2lmaWNhbGx5IHR1cm5lZCBvbi4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoK
KyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAqIGJ5dGVj
b2RlL1R5cGVMb2NhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VHlwZUxvY2F0aW9uOjpU
eXBlTG9jYXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0
eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29wZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJl
c29sdmUpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZSk6CisgICAgICAg
IChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0
RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6
OmNvbGxlY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRS
dW50aW1lVHlwZUZvclZhcmlhYmxlSW5UZXh0UmFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3Byb3Rv
Y29sL1J1bnRpbWUuanNvbjoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZh
cmlhYmxlcyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHV0VG9TY29wZUNvbW1vbik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1l
L0hpZ2hGaWRlbGl0eUxvZy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlM
b2c6OmluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxp
dHlMb2c6On5IaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6
OnJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGlnaEZp
ZGVsaXR5TG9nOjpwcm9jZXNzSGlnaEZpZGVsaXR5TG9nKToKKyAgICAgICAgKEpTQzo6SGlnaEZp
ZGVsaXR5TG9nOjphY3R1YWxseVByb2Nlc3NMb2dUaHJlYWRGdW5jdGlvbik6CisgICAgICAgICog
cnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkhpZ2hGaWRl
bGl0eUxvZzo6SGlnaEZpZGVsaXR5TG9nKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXI6OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAgICAgICAgKEpTQzo6SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSk6
CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYWxUeXBlc0Zv
clZhcmlhYmxlSW5SYW5nZSk6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
cjo6aW5zZXJ0TmV3TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXI6OmdldExvY2F0aW9uQmFzZWRIYXNoKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6dG9TdHJ1Y3R1cmVTaGFwZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGU6OlN5bWJvbFRhYmxlKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lQ2FwdHVy
ZWROYW1lcyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjp1bmlxdWVJREZvclZhcmlhYmxl
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnVuaXF1ZUlERm9yUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Z2xvYmFsVHlwZVNldEZvclJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6Omdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZSk6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6YWRk
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnNldCk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlR5cGVTZXQ6OlR5cGVTZXQpOgorICAg
ICAgICAoSlNDOjpUeXBlU2V0OjpnZXRSdW50aW1lVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpT
Qzo6VHlwZVNldDo6YWRkVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6cmVt
b3ZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeSk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6
OnNlZW5UeXBlcyk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OmR1bXBTZWVuVHlwZXMpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6U3RydWN0dXJlU2hhcGUpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTaGFwZTo6bWFya0FzRmluYWwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
aGFwZTo6YWRkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6cHJvcGVy
dHlIYXNoKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OmxlYXN0VXBwZXJCb3VuZCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9UeXBlU2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTaGFwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpT
Qzo6Vk06OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAgICAgICAgKEpTQzo6Vk06OnVw
ZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUpOgorICAgICAgICAoSlNDOjpWTTo6ZHVt
cEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgIChKU0M6OlZNOjppc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSk6CisgICAg
ICAgIChKU0M6OlZNOjpoaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpWTTo6aGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06Om5leHRMb2NhdGlvbik6Cisg
ICAgICAgIChKU0M6OlZNOjpnZXROZXh0VW5pcXVlVmFyaWFibGVJRCk6CisKIDIwMTQtMDYtMjQg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBbZnRsb3B0XSBQdXRC
eUlkRmx1c2ggY2FuIGFsc28gYmUgY29udmVydGVkIHRvIGEgUHV0QnlPZmZzZXQgc28gZG9uJ3Qg
YXNzZXJ0IG90aGVyd2lzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE3MDM4
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJCdXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJD
b21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgpAQCAtMzQ3LDYgKzM0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uVW5kZWZpbmVkKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZmZlY3RmdWw0MihFeGVjU3RhdGUqKTsKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1w
VHlwZXNGb3JBbGxWYXJpYWJsZXMgKEV4ZWNTdGF0ZSopOwogCiAjaWYgRU5BQkxFKFNBTVBMSU5H
X0ZMQUdTKQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRT
YW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOwpAQCAtNDkzLDYgKzQ5NSw3IEBAIHByb3RlY3RlZDoK
IAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUltcHVyZUdldHRlciIsIGZ1bmN0aW9u
Q3JlYXRlSW1wdXJlR2V0dGVyLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRJbXB1
cmVHZXR0ZXJEZWxlZ2F0ZSIsIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUsIDIpOwor
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyIsIGZ1bmN0
aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzICwgNCk7CiAgICAgICAgIAogICAgICAgICBKU0Fy
cmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsRXhlYygpLCAwKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCkBAIC05Mjcs
NiArOTMwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hc3F1ZXJhZGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIGV4ZWMtPnZtKCkuZHVtcEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKCk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogLy8gVXNlIFNF
SCBmb3IgUmVsZWFzZSBidWlsZHMgb25seSB0byBnZXQgcmlkIG9mIHRoZSBjcmFzaCByZXBvcnQg
ZGlhbG9nCiAvLyAobHVja2lseSB0aGUgc2FtZSB0ZXN0cyBmYWlsIGluIFJlbGVhc2UgYW5kIERl
YnVnIGJ1aWxkcyBzbyBmYXIpLiBOZWVkIHRvCiAvLyBiZSBpbiBhIHNlcGFyYXRlIG1haW4gZnVu
Y3Rpb24gYmVjYXVzZSB0aGUganNjbWFpbiBmdW5jdGlvbiByZXF1aXJlcyBvYmplY3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtODM3LDYgKzgzNywxMyBAQAogCQk0MTM1OUNGMzBGREQ4OUFEMDAy
MDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEQyMTIwMjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lv
bi5oICovOyB9OwogCQk0NDQzQUUzMzE2RTE4OEQ5MDA3NkYxMTAgLyogRm91bmRhdGlvbi5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJ
CTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFy
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUy
REFEMzhGMTk1QTE2NEUwMEYzMDQ2NCAvKiBUeXBlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyREFEMzhFMTk1QTE2NEUwMEYzMDQ2NCAv
KiBUeXBlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1MkZCNzEzNzE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MTMz
MTk1Mzc0QjcwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwICovOyB9OworCQk1MkZCNzEz
ODE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzEzNDE5NTM3NEI3MDBCQjYxMkUgLyog
SGlnaEZpZGVsaXR5TG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNTJGQjcxMzkxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MkZCNzEzNTE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNw
cCAqLzsgfTsKKwkJNTJGQjcxM0ExOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTJGQjcxMzYxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUyRkI3MjE0
MTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MjEyMTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0
LmNwcCAqLzsgfTsKKwkJNTJGQjcyMTUxOTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MjEzMTk1Mzc2
MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTUxMDUwMjYxOEVCODI3NTAwMDAxRjNFIC8qIEpTQ2FsbGJhY2tG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQ0MEY4OEYwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9Owog
CQk1NTJFQTcwQzE5MDg3MDQ4MDBBNjZGMkYgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCRjE3QjZC
NUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgKi87IH07CiAJCTU1NDA3NTcy
MThEQTU4QUQwMEVGRjdGMiAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5o
ICovOyB9OwpAQCAtMjk3NCw2ICsyOTgxLDE0IEBACiAJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4
NCAvKiBqc2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0ganNjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0
OyB9OwogCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07CiAJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGli
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIv
bGlib2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJNTIyQUJBRjkx
OTRBODA0MzAwOEIxQzg1IC8qIFR5cGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUeXBlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTJEQUQzOEUxOTVBMTY0RTAwRjMwNDY0IC8qIFR5cGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUeXBlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGQjcxMzMx
OTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIaWdoRmlkZWxpdHlMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MkZCNzEzNDE5NTM3NEI3MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZ2hGaWRlbGl0eUxvZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZCNzEzNTE5NTM3NEI4MDBCQjYxMkUgLyog
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUyRkI3MTM2MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRkI3MjEyMTk1
Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFR5cGVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZC
NzIxMzE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUeXBlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NDA3
NTg0MThGNEEzNzUwMDYwMkE1RCAvKiBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENvbXBpbGVSdW50aW1lVG9MTFZNSVIueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NDA3QUM4MThEQTU4QUQwMEVG
RjdGMiAvKiBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IGxpYkNvbXBpbGVSdW50aW1lVG9MTFZNSVIuYTsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQ1MzcyNkQwRTFDNTQ2QjAwMjFFNTQ5IC8qIFRyYWNpbmcu
ZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUcmFjaW5nLmQ7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00NjQ3LDYgKzQ2NjIsMTAgQEAKIAkJCQkwRjJCNjZCMzE3QjZCNUFCMDBBN0FF
M0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oICovLAogCQkJCUJDMDJFOUI4MEUx
ODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUJDMzM3QkRFMEUxQUYw
QjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLywKKwkJCQk1MkZCNzEzMzE5NTM3NEI3MDBC
QjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCAqLywKKwkJCQk1MkZCNzEzNDE5NTM3NEI3MDBC
QjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggKi8sCisJCQkJNTJGQjcxMzUxOTUzNzRCODAwQkI2
MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgKi8sCisJCQkJNTJGQjcxMzYxOTUz
NzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovLAogCQkJCTkzM0Ez
NDlEMDM4QUU4MEYwMDg2MzVDRSAvKiBJZGVudGlmaWVyLmNwcCAqLywKIAkJCQk5MzNBMzQ5QTAz
OEFFN0M2MDA4NjM1Q0UgLyogSWRlbnRpZmllci5oICovLAogCQkJCTg2MDZEREU5MThEQTQ0QUIw
MEEzODNEMCAvKiBJZGVudGlmaWVySW5saW5lcy5oICovLApAQCAtNDkxOCw2ICs0OTM3LDggQEAK
IAkJCQkwRjJCNjZEQjE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheXMuaCAqLywKIAkJCQkw
RjJCNjZEQzE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuY3BwICovLAogCQkJCTBG
MkI2NkREMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5oICovLAorCQkJCTUyRkI3
MjEyMTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCAqLywKKwkJCQk1MkZCNzIxMzE5NTM3
NjBDMDBCQjYxMkUgLyogVHlwZVNldC5oICovLAogCQkJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3
NCAvKiBVaW50MTZBcnJheS5oICovLAogCQkJCTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBV
aW50MTZXaXRoRnJhY3Rpb24uaCAqLywKIAkJCQlBN0E4QUYzMzE3QURCNUYzMDA1QUIxNzQgLyog
VWludDMyQXJyYXkuaCAqLywKQEAgLTUzODksNiArNTQxMCw3IEBACiAJCQkJMEZCNTQ2NzgxNEY1
QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkwRkI1
NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLywKIAkJ
CQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKKwkJ
CQk1MjJBQkFGOTE5NEE4MDQzMDA4QjFDODUgLyogVHlwZUxvY2F0aW9uLmggKi8sCiAJCQkJMEZC
NTQ2N0MxNEY1Q0ZEMzAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3Bw
ICovLAogCQkJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmggKi8sCiAJCQkJMTRDQTk1OEMxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmggKi8sCkBAIC01NDI2LDYgKzU0NDgsNyBAQAogCQkJCUJDQ0YwRDA3
MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5oICovLAogCQkJCTBGN0FCODJD
MTk1OERBMUMwMEM2ODgxRiAvKiBUb1RoaXNTdGF0dXMuY3BwICovLAogCQkJCTBGN0FCODJEMTk1
OERBMUMwMEM2ODgxRiAvKiBUb1RoaXNTdGF0dXMuaCAqLywKKwkJCQk1MkRBRDM4RTE5NUExNjRF
MDBGMzA0NjQgLyogVHlwZUxvY2F0aW9uLmggKi8sCiAJCQkJQTc5RTc4MUUxNUVFQ0JBODAwNDdD
ODU1IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCAqLywKIAkJCQlBNzlFNzgxRjE1RUVDQkE4MDA0
N0M4NTUgLyogVW5saW5rZWRDb2RlQmxvY2suaCAqLywKIAkJCQlCNTlGODkzODE4OTFBREI1MDBE
NUNDREMgLyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCkBAIC01ODk1LDYgKzU5
MTgsMTAgQEAKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8q
IEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJEQUQzOEYxOTVBMTY0RTAwRjMw
NDY0IC8qIFR5cGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJGQjcyMTUxOTUzNzYw
QzAwQkI2MTJFIC8qIFR5cGVTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyRkI3MTNBMTk1Mzc0
QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUyRkI3MTM4MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1ODQwMzIwMThCRkZCRTEwMDVBMDgxMSAvKiBJbnNwZWN0b3JBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2lu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1MjQ4RjkxOTE0NDJEOTAwQjdGREU0IC8qIFZhcmlh
YmxlV2F0Y2hwb2ludFNldElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzYxMCw2ICs3NjM3
LDcgQEAKIAkJCQkwRjQ4NTMyMTE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNjM5NDg0MTVFNDgxMTgwMDZBNTk3QyAvKiBERkdBcnJheU1v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEOUEyOTQxN0EwQkM3NDAwRUUyNjE4IC8qIERG
R0F0VGFpbEFic3RyYWN0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTJGQjcxMzkxOTUz
NzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjY2NkVDNjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNzE0Q0E0MTZFQTkyRjAwMEYzRUJFQiAvKiBERkdCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YyMTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY0NSw2
ICs3NjczLDcgQEAKIAkJCQlBNzhBOTc3NDE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmlu
YWxpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OEE5Nzc2MTc5NzM4QjgwMDlERjc0NCAv
KiBERkdGaW5hbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDMTUxNTFDNUQ0RDAw
Q0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTJGQjcyMTQx
OTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMz
OTYxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZFQzlEQzcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtNzcyNyw2ICs3NzU2LDcgQEAKIAkJCQlBN0I0OEY0OTBFRTg5MzZGMDBE
Q0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkRC
NjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRp
b25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyRkI3MTM3MTk1Mzc0QjgwMEJCNjEy
RSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwMzMyQzAxOEFE
RkFFMTAwNUY5NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QjEwNTg1MTY3NTQ4MEYwMEY4QUI2RSAvKiBFeGl0S2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkVBMEExQzE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgkocmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEz
LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc29sdmVfc2NvcGUiLCAibGVuZ3Ro
IiA6IDYgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9mcm9tX3Njb3BlIiwgImxl
bmd0aCIgOiA4IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fc2NvcGUiLCAi
bGVuZ3RoIiA6IDcgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF90b19zY29wZV93
aXRoX3Byb2ZpbGUiLCAibGVuZ3RoIiA6IDggfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3B1c2hfd2l0aF9zY29wZSIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcG9wX3Njb3BlIiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9wdXNoX25hbWVfc2NvcGUiLCAibGVuZ3RoIiA6IDQgfSwKQEAgLTEyMiw3ICsxMjMsOCBA
QAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVidWciLCAibGVuZ3RoIiA6IDMgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Byb2ZpbGVfd2lsbF9jYWxsIiwgImxlbmd0aCIgOiAy
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX2RpZF9jYWxsIiwgImxlbmd0
aCIgOiAyIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9lbmQiLCAibGVuZ3RoIiA6IDIg
fQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0aCIgOiAyIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSIs
ICJsZW5ndGgiIDogNCB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCShyZXZpc2lvbiAx
NzAzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOgogICAgIGNhc2Ug
b3BfcHJvZmlsZV93aWxsX2NhbGw6CiAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOgorICAg
IGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CiAgICAgY2FzZSBvcF90
aHJvdzoKICAgICBjYXNlIG9wX3B1c2hfd2l0aF9zY29wZToKICAgICBjYXNlIG9wX2VuZDoKQEAg
LTEwNSw2ICsxMDYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAg
Y2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgIGNhc2Ugb3BfcHV0X3RvX3Nj
b3BlOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CkBAIC0yNDks
NiArMjUxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbAogICAg
IGNhc2Ugb3BfcHVzaF9uYW1lX3Njb3BlOgogICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgog
ICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgorICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhf
cHJvZmlsZToKICAgICBjYXNlIG9wX3BvcF9zY29wZToKICAgICBjYXNlIG9wX2VuZDoKICAgICBj
YXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgpAQCAtMjg3LDYgKzI5MCw3IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmwKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGly
ZWN0OgogICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OgogICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJn
dW1lbnRzOgorICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CiAg
ICAgY2FzZSBvcF90b3VjaF9lbnRyeToKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bj
b2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVf
RVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdX
b3JrbGlzdC5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQu
aCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgpAQCAtNDcsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50
cnlwb2ludC5oIgorI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9seW1v
cnBoaWNHZXRCeUlkTGlzdC5oIgpAQCAtODQzLDYgKzg0NSwxNCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6
IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
KytpdDsKKyAgICAgICAgICAgICsraXQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRl
bGl0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25v
dDogewogICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
bm90Iik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NjksNiArMTQ3OSw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICAgICAgb3BlcmFuZCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZV93aXRo
X3Byb2ZpbGU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCkt
PnUub3BlcmFuZDsKQEAgLTE0NzcsNiArMTQ4OCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUoCiAgICAgICAgICAgICArK2l0OyAvLyBTdHJ1Y3R1cmUKICAgICAgICAgICAgIGludCBv
cGVyYW5kID0gKCsraXQpLT51Lm9wZXJhbmQ7IC8vIE9wZXJhbmQKICAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF90b19zY29wZSIpOwor
ICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlKQor
ICAgICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
LCAldTwlc3wlcz4sIDxzdHJ1Y3R1cmU+LCAlZCIsCiAgICAgICAgICAgICAgICAgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCByZWdp
c3Rlck5hbWUocjEpLmRhdGEoKSwKICAgICAgICAgICAgICAgICBtb2RlQW5kVHlwZS5vcGVyYW5k
KCksIHJlc29sdmVNb2RlTmFtZShtb2RlQW5kVHlwZS5tb2RlKCkpLCByZXNvbHZlVHlwZU5hbWUo
bW9kZUFuZFR5cGUudHlwZSgpKSwKQEAgLTE4ODAsNiArMTg5Myw3IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgICAgICBj
YXNlIG9wX3B1dF90b19zY29wZTogewogICAgICAgICAgICAgLy8gcHV0X3RvX3Njb3BlIHNjb3Bl
LCBpZCwgdmFsdWUsIFJlc29sdmVNb2RlQW5kVHlwZSwgU3RydWN0dXJlLCBPcGVyYW5kCiAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKTsKQEAgLTE4OTUsOSArMTkwOSw2OCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRF
eGVjdXRhYmxlKiBvCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkKICAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUuc3RydWN0dXJlLnNldCgqdm0oKSwgb3du
ZXJFeGVjdXRhYmxlLCBvcC5zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA2XS51LnBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihvcC5vcGVyYW5kKTsKKwor
ICAgICAgICAgICAgaWYgKHBjWzBdLnUub3Bjb2RlID09IG9wX3B1dF90b19zY29wZV93aXRoX3By
b2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZm9ybWF0IG9mIHRoaXMgaW5zdHJ1Y3Rp
b24gaXM6IHB1dF90b19zY29wZV93aXRoX3Byb2ZpbGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVzb2x2
ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQsIFR5cGVMb2NhdGlvbioKKyAgICAgICAg
ICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gdm0oKS0+bmV4dExvY2F0aW9uKCk7Cisg
ICAgICAgICAgICAgICAgc2l6ZV90IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9wTGVuZ3RoIC0g
MTsKKyAgICAgICAgICAgICAgICBpbnQgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7IAor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwLCBjb2x1bW4gPSAwOworICAgICAgICAg
ICAgICAgIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0
LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKKworICAgICAg
ICAgICAgICAgIGxvY2F0aW9uLT5tX2xpbmUgPSBsaW5lOworICAgICAgICAgICAgICAgIGxvY2F0
aW9uLT5tX2NvbHVtbiA9IGNvbHVtbjsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9zb3Vy
Y2VJRCA9IG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpOworCisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IGhhbmRsZSBvdGhlciB2YWx1ZXMgZm9yIG9wLnR5cGUgaGVyZSwgYW5kIGFsc28g
Y29uc2lkZXIgd2hhdCB0byBkbyB3aGVuIHdlIGNhbid0IHN0YXRpY2FsbHkgZGV0ZXJtaW5lIHRo
ZSBnbG9iYWxJRAorICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IDA7
CisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhcikgCisgICAgICAgICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlID0gb3AuYWN0aXZhdGlvbi0+c3ltYm9sVGFibGUoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2JhbFZhcikKKyAgICAgICAgICAg
ICAgICAgICAgc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5nZXQoKS0+c3ltYm9sVGFibGUo
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoc3ltYm9sVGFibGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFi
bGUtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlh
YmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGlkZW50Lmlt
cGwoKSwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBl
U2V0ID1zeW1ib2xUYWJsZS0+Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQu
aW1wbCgpLCAqdm0oKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxpdHlOb0dsb2JhbElE
RXhpc3RzOworCisgICAgICAgICAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
KCktPmluc2VydE5ld0xvY2F0aW9uKGxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVj
dGlvbnNbaSArIDddLnUubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9wcm9maWxlX3R5cGVz
X3dpdGhfaGlnaF9maWRlbGl0eTogeworCisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUgPSBtX3N5bWJvbFRhYmxlLmdldCgpOworICAgICAgICAgICAgVHlwZUxvY2F0
aW9uKiBsb2NhdGlvbiA9IHZtKCktPm5leHRMb2NhdGlvbigpOworICAgICAgICAgICAgc2l6ZV90
IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9wTGVuZ3RoIC0gMTsKKyAgICAgICAgICAgIGludCBk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsgCisgICAgICAgICAgICB1bnNpZ25lZCBsaW5l
ID0gMCwgY29sdW1uID0gMDsKKyAgICAgICAgICAgIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2Rl
T2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwg
bGluZSwgY29sdW1uKTsKKworICAgICAgICAgICAgaW50IGhhc0dsb2JhbElERmxhZyA9IHBjWzNd
LnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlmIChoYXNHbG9iYWxJREZsYWcpIHsKKyAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsK
KyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFi
bGUtPnVuaXF1ZUlERm9yUmVnaXN0ZXIobG9ja2VyLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCks
ICp2bSgpKTsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ID0gc3lt
Ym9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JSZWdpc3Rlcihsb2NrZXIsIHZpcnR1YWxSZWdpc3Rl
ci5vZmZzZXQoKSwgKnZtKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
bG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlz
dHM7CiAgICAgICAgICAgICAKKworICAgICAgICAgICAgbG9jYXRpb24tPm1fbGluZSA9IGxpbmU7
CisgICAgICAgICAgICBsb2NhdGlvbi0+bV9jb2x1bW4gPSBjb2x1bW47CisgICAgICAgICAgICBs
b2NhdGlvbi0+bV9zb3VyY2VJRCA9IG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpOworCisg
ICAgICAgICAgICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+aW5zZXJ0TmV3TG9j
YXRpb24obG9jYXRpb24pOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyAyXS51LmxvY2F0
aW9uID0gbG9jYXRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKICAgICAg
ICAgY2FzZSBvcF9jYXB0dXJlZF9tb3Y6CiAgICAgICAgIGNhc2Ugb3BfbmV3X2NhcHR1cmVkX2Z1
bmM6IHsKICAgICAgICAgICAgIGlmIChwY1szXS51LmluZGV4ID09IFVJTlRfTUFYKSB7CkBAIC0y
MzQzLDYgKzI0MTYsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNl
IG9wX2dldF9mcm9tX3Njb3BlOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0
aF9wcm9maWxlOgogICAgICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKICAgICAgICAg
ICAgICAgICBSZXNvbHZlTW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUgPQogICAgICAgICAgICAgICAg
ICAgICBSZXNvbHZlTW9kZUFuZFR5cGUoY3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtOTQzLDYgKzk0Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNL
bm93blRvQmVMaXZlRHVyaW5nR0MoKTsgLy8gV2lsbCBvbmx5IHJldHVybiB2YWxpZCByZXN1bHRz
IHdoZW4gY2FsbGVkIGR1cmluZyBHQy4gQXNzdW1lcyB0aGF0IHlvdSd2ZSBhbHJlYWR5IGVzdGFi
bGlzaGVkIHRoYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUgaXMgbGl2ZS4KIAorCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKSBvdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5o
CShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJUeXBlTG9j
YXRpb24uaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJTcGVjaWFsUG9p
bnRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgpAQCAtMTIwLDYgKzEyMSw3IEBAIHN0cnVj
dCBJbnN0cnVjdGlvbiB7CiAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIGJvb2wqIHBy
ZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAgIFRvVGhpc1N0YXR1cyB0b1RoaXNTdGF0dXM7CisgICAg
ICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb247CiAgICAgfSB1OwogICAgICAgICAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlvbi5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2Nh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFR5cGVMb2NhdGlvbl9oCisjZGVm
aW5lIFR5cGVMb2NhdGlvbl9oCisKKyNpbmNsdWRlICJUeXBlU2V0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitlbnVtIEhpZ2hGaWRlbGl0eUdsb2JhbElERmxhZ3MgeworICAgIEhpZ2hGaWRlbGl0
eU5lZWRzVW5pcXVlSURHZW5lcmF0aW9uID0gLTEsCisgICAgSGlnaEZpZGVsaXR5Tm9HbG9iYWxJ
REV4aXN0cyA9IC0yCit9OworCitjbGFzcyBUeXBlTG9jYXRpb24geworICAgICAgICAgICAgICAg
ICAgICAgICAKK3B1YmxpYzoKKyAgICBUeXBlTG9jYXRpb24oKSAKKyAgICAgICAgOiBtX2luc3Ry
dWN0aW9uVHlwZVNldChUeXBlU2V0OjpjcmVhdGUoKSkKKyAgICAgICAgLCBtX2dsb2JhbFR5cGVT
ZXQobnVsbHB0cikKKyAgICB7CisgICAgfQorCisgICAgaW50NjRfdCBtX2dsb2JhbFZhcmlhYmxl
SUQ7CisgICAgaW50cHRyX3QgbV9zb3VyY2VJRDsKKyAgICB1bnNpZ25lZCBtX2xpbmU7CisgICAg
dW5zaWduZWQgbV9jb2x1bW47CisgICAgUmVmUHRyPFR5cGVTZXQ+IG1faW5zdHJ1Y3Rpb25UeXBl
U2V0OworICAgIFJlZlB0cjxUeXBlU2V0PiBtX2dsb2JhbFR5cGVTZXQ7Cit9OworCit9IC8vbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy9UeXBlTG9jYXRpb25faApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHJldmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAzLDYgKzEwMDMs
MTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKAogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChzcmMtPmluZGV4KCkpOwogICAgIGlmIChjYXB0dXJlTW9kZSA9PSBJ
c0NhcHR1cmVkKQogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQod2F0Y2hhYmxlVmFyaWFi
bGUoZHN0LT5pbmRleCgpKSk7CisKKyAgICBpZiAoIWRzdC0+aXNUZW1wb3JhcnkoKSAmJiBpc1By
b2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICBlbWl0UHJvZmlsZVR5cGVz
V2l0aEhpZ2hGaWRlbGl0eShkc3QsIHRydWUpOworCiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAt
MTExMiw2ICsxMTE2LDE4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1
YWwKICAgICByZXR1cm4gZHN0OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJv
ZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJvZmlsZSwg
Ym9vbCBoYXNHbG9iYWxJRCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX3Byb2ZpbGVfdHlwZXNfd2l0
aF9oaWdoX2ZpZGVsaXR5KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVnaXN0ZXJUb1By
b2ZpbGUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsgLy8gcGxhY2Vo
b2xkZXIgZm9yIFR5cGVMb2NhdGlvbgorICAgIC8vIFRoaXMgaXMgYSBmbGFnIGluZGljYXRpbmcg
d2hldGhlciB3ZSBzaG91bGQgdHJhY2sgdGhpcyB2YWx1ZSB0byBpdHMgZ2xvYmFsSUQgb3Igbm90
LgorICAgIGlmIChoYXNHbG9iYWxJRCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDEp
OworICAgIGVsc2UKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworfQorCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29s
IGIpCiB7CiAgICAgcmV0dXJuIGVtaXRMb2FkKGRzdCwganNCb29sZWFuKGIpKTsKQEAgLTEyNTYs
MTMgKzEyNzIsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUbwog
ICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAKICAgICAvLyBwdXRfdG9fc2NvcGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVz
b2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQKLSAgICBlbWl0T3Bjb2RlKG9wX3B1
dF90b19zY29wZSk7CisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
CisgICAgICAgIGVtaXRPcGNvZGUob3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSk7CisgICAg
ZWxzZQorICAgICAgICBlbWl0T3Bjb2RlKG9wX3B1dF90b19zY29wZSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHNjb3BlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
YWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1
ZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFJlc29sdmVNb2RlQW5kVHlw
ZShyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUoKSkub3BlcmFuZCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGlmIChp
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0xMzI5LDYgKzEzNTAsMTAg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworCisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KCkpCisgICAgICAgIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZh
bHVlLCBmYWxzZSk7CisKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTE0MjUsNiArMTQ1MCwx
MCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQodmFsdWUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVBy
b2ZpbGUpOworCisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisg
ICAgICAgIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZhbHVlLCBmYWxzZSk7CisK
ICAgICByZXR1cm4gdmFsdWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE3MDM4
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIGVtaXROb2RlKG4pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9p
ZCBlbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiBkc3QsIGJvb2wp
OworCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVu
dGlmaWVyJik7CkBAIC02NzcsNiArNjc5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
Vk0qIG1fdm07CiAKKyAgICAgICAgYm9vbCBpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0
eSgpIHsgcmV0dXJuIHZtKCktPmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCk7IH0K
KwogICAgICAgICBPcGNvZGVJRCBtX2xhc3RPcGNvZGVJRDsKICNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIHNpemVfdCBtX2xhc3RPcGNvZGVQb3NpdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE3
MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQwLDEzICs3NDAsMTUgQEAgUmVnaXN0ZXJJRCogUG9z
dGZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dAogICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgp
KSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQo
KTsKICAgICAgICAgICAgIGxvY2FsUmVnID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9jYWxSZWcpOwotICAgICAgICB9IGVsc2UgaWYgKGxvY2Fs
LmlzQ2FwdHVyZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8
fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpOwogICAgICAgICAgICAgQVNTRVJUKGRzdCAhPSBsb2NhbFJlZyk7CiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdFNyYyA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VG9OdW1iZXIodGVtcERzdC5nZXQoKSwg
bG9jYWxSZWcpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBEc3RTcmMuZ2V0
KCksIGxvY2FsUmVnKTsKICAgICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHRlbXBE
c3RTcmMuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1By
b2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbFJlZywgdGVtcERzdFNyYy5nZXQo
KSk7CiAgICAgICAgICAgICByZXR1cm4gdGVtcERzdC5nZXQoKTsKICAgICAgICAgfQpAQCAtOTE1
LDEwICs5MTcsMTIgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZQog
ICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGxvY2FsUmVnID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9jYWxS
ZWcpOwotICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkgeworICAgICAgICB9
IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRl
bXBEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdE1vdmUodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcpOwogICAgICAgICAgICAgZW1p
dEluY09yRGVjKGdlbmVyYXRvciwgdGVtcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAg
ICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxv
Y2FsUmVnLCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92
ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CkBA
IC0xNDA3LDYgKzE0MTEsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0
UmVhCiAKIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBKU1Rl
eHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7CiAg
ICAgaWYgKExvY2FsIGxvY2FsID0gZ2VuZXJhdG9yLmxvY2FsKG1faWRlbnQpKSB7CiAgICAgICAg
IGlmIChsb2NhbC5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVh
ZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpOwpAQCAtMTQxNCwxMCArMTQxOSwxMyBAQCBSZWdpc3Rl
cklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkKKyAgICAgICAgICAgIHx8IGdlbmVyYXRvci5p
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpCiAgICAgICAgICAgICB8fCBnZW5lcmF0
b3IubGVmdEhhbmRTaWRlTmVlZHNDb3B5KG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+
aXNQdXJlKGdlbmVyYXRvcikpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVz
dWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRNb3ZlKHJlc3VsdC5nZXQoKSwgbG9jYWwuZ2V0KCkpOwogICAgICAgICAgICAgZW1pdFJlYWRN
b2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgcmVzdWx0LmdldCgpLCByZXN1bHQuZ2V0KCksIG1f
cmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgp
LCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0
b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rp
dm90KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5nZXQoKSwgcmVzdWx0
LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25J
Zk5lZWRlZChkc3QsIHJlc3VsdC5nZXQoKSk7CiAgICAgICAgIH0KQEAgLTE0MjYsNyArMTQzNCw2
IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEIKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKICAg
ICB9CiAKLSAgICBKU1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRl
bnQubGVuZ3RoKCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwg
ZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lk
ZW50KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZy
b21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBU
aHJvd0lmTm90Rm91bmQpOwpAQCAtMTQ0Myw5ICsxNDUwLDExIEBAIFJlZ2lzdGVySUQqIEFzc2ln
blJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9u
bHlFeGNlcHRpb25JZk5lZWRlZCgpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
Tm9kZShkc3QsIG1fcmlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1
cmVkKCkpIHsKKyAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQ
cm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGVtcERzdC5nZXQoKSwgbV9yaWdodCk7CisgICAg
ICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3Zl
KGxvY2FsLmdldCgpLCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0
b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAg
ICB9CkBAIC0xNTQ4LDcgKzE1NTcsOCBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0
Q29kZVNpbmdsCiAgICAgICAgIGlmICghbV9pbml0KQogICAgICAgICAgICAgcmV0dXJuIGxvY2Fs
LmdldCgpOwogCi0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkpIHsKKyAgICAgICAgLy8g
RklYTUU6IE1heWJlIGNhbGwgZW1pdEV4cHJlc3Npb25JbmZvIGhlcmUuCisgICAgICAgIGlmIChs
b2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZp
ZGVsaXR5KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHRl
bXBEc3QuZ2V0KCksIG1faW5pdCk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRN
b3ZlKGxvY2FsLmdldCgpLCB0ZW1wRHN0LmdldCgpKTsKQEAgLTE4NzEsNyArMTg4MSw4IEBAIHZv
aWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgICAgIElkZW50
aWZpZXIgaWRlbnQgPSBzaW1wbGVCaW5kaW5nLT5ib3VuZFByb3BlcnR5KCk7CiAgICAgICAgICAg
ICBMb2NhbCBsb2NhbCA9IGdlbmVyYXRvci5sb2NhbChpZGVudCk7CiAgICAgICAgICAgICBwcm9w
ZXJ0eU5hbWUgPSBsb2NhbC5nZXQoKTsKLSAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lIHx8
IGxvY2FsLmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgSSBlbWl0
IGV4cHJlc3Npb24gaW5mbyBoZXJlPworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwg
bG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hG
aWRlbGl0eSgpKQogICAgICAgICAgICAgICAgIGdvdG8gZ2VuZXJpY0JpbmRpbmc7CiAgICAgICAg
ICAgICBleHBlY3RlZFN1YnNjcmlwdCA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IucHVzaE9w
dGltaXNlZEZvckluKGV4cGVjdGVkU3Vic2NyaXB0LmdldCgpLCBpdGVyLmdldCgpLCBpLmdldCgp
LCBwcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJl
dmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiSGVhcFN0YXRp
c3RpY3MuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJJbmNyZW1l
bnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCkBAIC05NjksNiArOTcwLDggQEAgdm9pZCBIZWFwOjpjb2xsZWN0KEhlYXBP
cGVyYXRpb24gY29sbGVjdAogI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0
YUxvZ0YoIkpTQyBHQyBzdGFydGluZyBjb2xsZWN0aW9uLlxuIik7CiAjZW5kaWYKKyAgICBpZiAo
dm0oKS0+aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgdm0oKS0+
aGlnaEZpZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coZmFsc2UsICJHQyIpOwog
ICAgIAogICAgIGRvdWJsZSBiZWZvcmUgPSAwOwogICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAJKHJldmlzaW9uIDE3MDM4NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OnJ1bihFcnJvclN0cgogewogfQogCit2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5faWQs
IGludCBpbl9zdGFydExpbmUsIGludCBpbl9zdGFydENvbHVtbiwgaW50IGluX2VuZExpbmUsIGlu
dCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5cGVzKSAKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxWTSgpOworICAgIFN0cmluZyB0eXBlcyh2bS5nZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShp
bl9zdGFydExpbmUsIGluX3N0YXJ0Q29sdW1uLCBpbl9lbmRMaW5lLCBpbl9lbmRDb2x1bW4sIGlu
X3ZhcmlhYmxlTmFtZSwgaW5faWQpKTsKKyAgICAqb3V0X3R5cGVzID0gdHlwZXM7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBj
b25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9y
Pj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGlu
dGVybmFsUHJvcGVydGllcykgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VPYmplY3RHcm91cChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApIG92
ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcqKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgaW5faWQsIGludCBpbl9zdGFydExpbmUsIGludCBpbl9zdGFydENvbHVtbiwgaW50IGluX2Vu
ZExpbmUsIGludCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5cGVzKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2V0U2NyaXB0RGVidWdTZXJ2ZXIoU2NyaXB0RGVidWdTZXJ2ZXIqIHNjcmlwdERl
YnVnU2VydmVyKSB7IG1fc2NyaXB0RGVidWdTZXJ2ZXIgPSBzY3JpcHREZWJ1Z1NlcnZlcjsgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL1J1bnRpbWUuanNvbgkocmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE5
Niw2ICsxOTYsMjEgQEAKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIs
CiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgcmVwb3J0aW5nIG9mIGV4ZWN1
dGlvbiBjb250ZXh0cyBjcmVhdGlvbi4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJuYW1lIjogImdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZSIsCisgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhcmlh
YmxlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJWYXJpYWJsZSB3ZSB3
YW50IHR5cGUgaW5mcm9tYXRpb24gZm9yLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InNvdXJjZUlEIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogInNvdXJjZUlEIHVu
aXF1ZWx5IGlkZW50aWZ5aW5nIGEgc2NyaXB0IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic3RhcnRMaW5lIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJzdGFydCBs
aW5lIGZvciB2YXJpYWJsZSBuYW1lIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3Rh
cnRDb2x1bW4iLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogInN0YXJ0IGNvbHVt
biBmb3IgdmFyaWFibGUgbmFtZSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuZExp
bmUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogImVuZCBsaW5lIGZvciB2YXJp
YWJsZSBuYW1lIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5kQ29sdW1uIiwgInR5
cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJlbmQgY29sdW1uIGZvciB2YXJpYWJsZSBu
YW1lIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ0eXBlcyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlv
biI6ICJUeXBlcyBmb3IgcmVxdWVzdGVkIHZhcmlhYmxlLiIgfQorICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGRldGFpbGVkIGluZm9ybXRhdGlvbiBv
biBnaXZlbiBmdW5jdGlvbi4iCiAgICAgICAgIH0KICAgICBdLAogICAgICJldmVudHMiOiBbCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHJldmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJF
cnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRF
eGNlcHRpb25zLmgiCkBAIC0xNjcsNyArMTY4LDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBMTEludCB7CiAgICAgICAgIEV4ZWNTdGF0ZSogX19yY2ZfZXhlYyA9IChleGVjQ2FsbGVlKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08ocGMs
IF9fcmNmX2V4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGls
ZSAoZmFsc2UpCi0gICAgCiAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Ry
YWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hl
cmUsIGludCBvcGVyYW5kKQogewpAQCAtNTMzLDYgKzUzMywxNSBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbmV3X3JlZ2V4CiAgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6
Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgp
LCByZWdFeHApKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVf
dHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVHlw
ZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHBjWzJdLnUubG9jYXRpb247CisgICAgSlNWYWx1ZSB2YWwg
PSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICB2bS5oaWdoRmlkZWxpdHlMb2coKS0+cmVj
b3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24odmFsLCBsb2NhdGlvbik7CisgICAgTExJTlRf
RU5EX0lNUEwoKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hh
c19pbnN0YW5jZSkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTQyNiw5ICsxNDM1LDggQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tXwogICAgIExMSU5UX1JFVFVS
TihzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCitzdGF0aWMgSlNPYmplY3QqIHB1dFRvU2NvcGVDb21t
b24oRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIFZNJiB2bSkKIHsKLSAgICBMTElO
VF9CRUdJTigpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNb
Ml0udS5vcGVyYW5kKTsKICAgICBKU09iamVjdCogc2NvcGUgPSBqc0Nhc3Q8SlNPYmplY3QqPihM
TElOVF9PUCgxKS5qc1ZhbHVlKCkpOwpAQCAtMTQzNiw3ICsxNDQ0LDcgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogICAgIFJlc29sdmVNb2RlQW5kVHlwZSBtb2Rl
QW5kVHlwZSA9IFJlc29sdmVNb2RlQW5kVHlwZShwY1s0XS51Lm9wZXJhbmQpOwogCiAgICAgaWYg
KG1vZGVBbmRUeXBlLm1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQgJiYgIXNjb3BlLT5oYXNQcm9w
ZXJ0eShleGVjLCBpZGVudCkpCi0gICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVVuZGVmaW5l
ZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
c2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJs
ZSgpLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CkBAIC0xNDUwLDYgKzE0
NTgsMjggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogICAgICAg
ICB9CiAgICAgfQogCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBK
U09iamVjdCogZXJyb3IgPSBwdXRUb1Njb3BlQ29tbW9uKGV4ZWMsIHBjLCB2bSk7CisgICAgaWYg
KGVycm9yKQorICAgICAgICBMTElOVF9USFJPVyhlcnJvcik7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9m
aWxlKQoreworICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhpcyBpbnN0cnVjdGlvbiBpcyB0aGUgc2Ft
ZSBhcyBwdXRfdG9fc2NvcGUgd2l0aCBhIFR5cGVMb2NhdGlvbiBhcHBlbmRlZDogcHV0X3RvX3Nj
b3BlX3dpdGhfcHJvZmlsZSBzY29wZSwgaWQsIHZhbHVlLCBSZXNvbHZlTW9kZUFuZFR5cGUsIFN0
cnVjdHVyZSwgT3BlcmFuZCwgVHlwZUxvY2F0aW9uKgorICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNPYmplY3QqIGVycm9yID0gcHV0VG9TY29wZUNvbW1vbihleGVjLCBwYywgdm0pOworICAgIGlm
IChlcnJvcikKKyAgICAgICAgTExJTlRfVEhST1coZXJyb3IpOworICAgIFR5cGVMb2NhdGlvbiog
bG9jYXRpb24gPSBwY1s3XS51LmxvY2F0aW9uOworICAgIEpTVmFsdWUgdmFsID0gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCk7CisgICAgdm0uaGlnaEZpZGVsaXR5TG9nKCktPnJlY29yZFR5cGVJbmZv
cm1hdGlvbkZvckxvY2F0aW9uKHZhbCwgbG9jYXRpb24pOwogICAgIExMSU5UX0VORCgpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAko
cmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsOCBAQCBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhCiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9nZXRfZnJvbV9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF90b19zY29wZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGUpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSk7CiBleHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihW
TSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShMTElOVF9DX0xP
T1ApCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92
bV9lbnRyeShWTSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNp
b24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMyLDMgKzEyMzIsMTEgQEAgZW5kCiBfbGxp
bnRfb3BfaW5pdF9nbG9iYWxfY29uc3Rfbm9wOgogICAgIGRpc3BhdGNoKDUpCiAKK19sbGludF9v
cF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSkKKyAgICBkaXNw
YXRjaCg0KQorCitfbGxpbnRfb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3RvX3Nj
b3BlX3dpdGhfcHJvZmlsZSkKKyAgICBkaXNwYXRjaCg4KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSGlnaEZp
ZGVsaXR5TG9nLmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUg
IlR5cGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCisKK25hbWVz
cGFjZSBKU0MgeworCitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisKK3ZvaWQg
SGlnaEZpZGVsaXR5TG9nOjppbml0aWFsaXplSGlnaEZpZGVsaXR5TG9nKCkKK3sKKyAgICBBU1NF
UlQoIW1fbG9nU3RhcnRQdHIpOworICAgIG1faGlnaEZpZGVsaXR5TG9nU2l6ZSA9IDUwMDAwOwor
ICAgIG1fbG9nU3RhcnRQdHIgPSBuZXcgTG9nRW50cnlbbV9oaWdoRmlkZWxpdHlMb2dTaXplXTsK
KyAgICBtX25leHRCdWZmZXIgPSBuZXcgTG9nRW50cnlbbV9oaWdoRmlkZWxpdHlMb2dTaXplXTsK
KyAgICBtX2N1cnJlbnRPZmZzZXQgPSAwOworfQorCitIaWdoRmlkZWxpdHlMb2c6On5IaWdoRmlk
ZWxpdHlMb2coKQoreworICAgIGRlbGV0ZVtdIG1fbG9nU3RhcnRQdHI7CisgICAgZGVsZXRlW10g
bV9uZXh0QnVmZmVyOworfQorCit2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6cmVjb3JkVHlwZUluZm9y
bWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2LCBUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQorewor
ICAgIEFTU0VSVChtX2xvZ1N0YXJ0UHRyKTsKKyAgICBBU1NFUlQobV9jdXJyZW50T2Zmc2V0IDwg
bV9oaWdoRmlkZWxpdHlMb2dTaXplKTsKKworICAgIExvZ0VudHJ5KiBlbnRyeSA9IG1fbG9nU3Rh
cnRQdHIgKyBtX2N1cnJlbnRPZmZzZXQ7CisKKyAgICBlbnRyeS0+bG9jYXRpb24gPSBsb2NhdGlv
bjsKKyAgICBlbnRyeS0+dmFsdWUgPSB2OworICAgIGVudHJ5LT5zdHJ1Y3R1cmUgPSAodi5pc0Nl
bGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpIDogbnVsbHB0cik7CisKKyAgICBtX2N1cnJl
bnRPZmZzZXQgKz0gMTsKKyAgICBpZiAobV9jdXJyZW50T2Zmc2V0ID09IG1faGlnaEZpZGVsaXR5
TG9nU2l6ZSkKKyAgICAgICAgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyh0cnVlLCAiTG9nIEZ1bGwi
KTsKK30KKwordm9pZCBIaWdoRmlkZWxpdHlMb2c6OnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coYm9v
bCBhc3luY2hyb25vdXNseSwgU3RyaW5nIHJlYXNvbikKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBv
bmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIGV4ZWN1dGlvbiB0aHJlYWQuCisgICAgaWYgKCFt
X2N1cnJlbnRPZmZzZXQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCInIik7CisKKyAgICBCeXRl
U3BpbkxvY2tlciogbG9ja2VyID0gbmV3IEJ5dGVTcGluTG9ja2VyKG1fbG9jayk7CisgICAgVGhy
ZWFkRGF0YSogZGF0YSA9IG5ldyBUaHJlYWREYXRhOworICAgIGRhdGEtPm1fcHJvY2Nlc3NMb2dU
b09mZnNldCA9IG1fY3VycmVudE9mZnNldDsKKyAgICBkYXRhLT5tX3Byb2Nlc3NMb2dQdHIgPSBt
X2xvZ1N0YXJ0UHRyOworICAgIGRhdGEtPm1fbG9ja2VyID0gbG9ja2VyOworCisgICAgbV9jdXJy
ZW50T2Zmc2V0ID0gMDsKKyAgICBMb2dFbnRyeSogdGVtcCA9IG1fbG9nU3RhcnRQdHI7CisgICAg
bV9sb2dTdGFydFB0ciA9IG1fbmV4dEJ1ZmZlcjsKKyAgICBtX25leHRCdWZmZXIgPSB0ZW1wOwor
ICAgIAorICAgIGlmIChhc3luY2hyb25vdXNseSkKKyAgICAgICAgY3JlYXRlVGhyZWFkKGFjdHVh
bGx5UHJvY2Vzc0xvZ1RocmVhZEZ1bmN0aW9uLCBkYXRhLCAiUHJvY2Vzc0hpZ2hGaWRlbGl0eUxv
ZyIpOworICAgIGVsc2UgCisgICAgICAgIGFjdHVhbGx5UHJvY2Vzc0xvZ1RocmVhZEZ1bmN0aW9u
KGRhdGEpOworfQorCit2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6YWN0dWFsbHlQcm9jZXNzTG9nVGhy
ZWFkRnVuY3Rpb24odm9pZCogYXJnKQoreworICAgIGRvdWJsZSBiZWZvcmUgID0gY3VycmVudFRp
bWVNUygpOworICAgIFRocmVhZERhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxUaHJlYWREYXRhKj4o
YXJnKTsKKyAgICBMb2dFbnRyeSogZW50cnkgPSBkYXRhLT5tX3Byb2Nlc3NMb2dQdHI7OworICAg
IHNpemVfdCBwcm9jZXNzTG9nVG9PZmZzZXQgPSBkYXRhLT5tX3Byb2NjZXNzTG9nVG9PZmZzZXQ7
IAorICAgIHNpemVfdCBpID0gMDsKKyAgICB3aGlsZSAoaSA8IHByb2Nlc3NMb2dUb09mZnNldCkg
eworICAgICAgICAvL0xvZ0VudHJ5KiBlbnRyeSA9ICpwdHI7CisgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gZW50cnktPnN0cnVjdHVyZSA/IGVudHJ5LT5zdHJ1Y3R1cmUgOiBudWxscHRy
OworICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlOyAKKyAgICAgICAgaWYgKHN0
cnVjdHVyZSkKKyAgICAgICAgICAgIHNoYXBlID0gc3RydWN0dXJlLT50b1N0cnVjdHVyZVNoYXBl
KCk7CisgICAgICAgIGlmIChlbnRyeS0+bG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCkKKyAgICAg
ICAgICAgIGVudHJ5LT5sb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5hZGRUeXBlRm9yVmFsdWUo
ZW50cnktPnZhbHVlLCBzaGFwZSk7CisgICAgICAgIGVudHJ5LT5sb2NhdGlvbi0+bV9pbnN0cnVj
dGlvblR5cGVTZXQtPmFkZFR5cGVGb3JWYWx1ZShlbnRyeS0+dmFsdWUsIHNoYXBlKTsKKyAgICAg
ICAgZW50cnkrKzsKKyAgICAgICAgaSsrOworICAgIH0KKworICAgIGRlbGV0ZSBkYXRhLT5tX2xv
Y2tlcjsKKyAgICBkZWxldGUgZGF0YTsKKyAgICBkb3VibGUgYWZ0ZXIgPSBjdXJyZW50VGltZU1T
KCk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2dGKCJQcm9jZXNzIGxvZyAnJWYn
IG1zXG4iLCBhZnRlciAtIGJlZm9yZSk7Cit9CisKK30gLy9uYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxv
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIaWdoRmlkZWxpdHlMb2dfaAorI2Rl
ZmluZSBIaWdoRmlkZWxpdHlMb2dfaAorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgor
I2luY2x1ZGUgPHd0Zi9CeXRlU3BpbkxvY2suaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyAgICBj
bGFzcyBUeXBlTG9jYXRpb247CisKK2NsYXNzIEhpZ2hGaWRlbGl0eUxvZyB7CisKK3B1YmxpYzoK
KyAgICBzdHJ1Y3QgTG9nRW50cnkgeworICAgICAgICBwdWJsaWM6CisgICAgICAgIEpTVmFsdWUg
dmFsdWU7CisgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb247IAorICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZTsKKyAgICB9OworCisgICAgSGlnaEZpZGVsaXR5TG9nKCkKKyAgICAgICAg
OiBtX2xvZ1N0YXJ0UHRyKDApCisgICAgeworICAgICAgICBpbml0aWFsaXplSGlnaEZpZGVsaXR5
TG9nKCk7CisgICAgfQorCisgICAgfkhpZ2hGaWRlbGl0eUxvZygpOworCisgICAgdm9pZCByZWNv
cmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbihKU1ZhbHVlIHYsIFR5cGVMb2NhdGlvbiopOwor
ICAgIHZvaWQgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyhib29sIGFzeW5jaHJvbm91c2x5ID0gZmFs
c2UsIFN0cmluZyA9ICIiKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemVIaWdoRmlk
ZWxpdHlMb2coKTsKKyAgICBzdGF0aWMgdm9pZCBhY3R1YWxseVByb2Nlc3NMb2dUaHJlYWRGdW5j
dGlvbih2b2lkKik7CisKKyAgICB1bnNpZ25lZCBtX2hpZ2hGaWRlbGl0eUxvZ1NpemU7CisgICAg
c2l6ZV90IG1fY3VycmVudE9mZnNldDsKKyAgICBMb2dFbnRyeSogbV9sb2dTdGFydFB0cjsKKyAg
ICBMb2dFbnRyeSogbV9uZXh0QnVmZmVyOworCisgICAgQnl0ZVNwaW5Mb2NrIG1fbG9jazsKKwor
ICAgIHN0cnVjdCBUaHJlYWREYXRhIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICBMb2dFbnRy
eSogbV9wcm9jZXNzTG9nUHRyOworICAgICAgICBzaXplX3QgbV9wcm9jY2Vzc0xvZ1RvT2Zmc2V0
OworICAgICAgICBCeXRlU3BpbkxvY2tlciogbV9sb2NrZXI7CisgICAgfTsKK307CisKK30gLy9u
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvL0hpZ2hGaWRlbGl0eUxvZ19oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCisK
KyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKworU3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlcjo6Z2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNp
Z25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSAsIHVuc2lnbmVkIGVuZENvbHVtbiwg
Y29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGludHB0cl90IHNvdXJjZUlEKQoreworICAgIFN0
cmluZyBnbG9iYWwgPSBnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUs
IHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQp
OworICAgIGlmICghZ2xvYmFsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbDsKKyAg
ICAKKyAgICByZXR1cm4gZ2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUs
IHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQp
OworfQorCitXVEY6OlN0cmluZyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldEdsb2JhbFR5
cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQsIHVuc2ln
bmVkLCB1bnNpZ25lZCwgY29uc3QgV1RGOjpTdHJpbmcmLCBpbnRwdHJfdCBzb3VyY2VJRCkKK3sK
KyAgICBhdXRvIGl0ZXJMb2NhdGlvbk1hcCA9IG1fZ2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFw
LmZpbmQoZ2V0TG9jYXRpb25CYXNlZEhhc2goc291cmNlSUQsIHN0YXJ0TGluZSkpOworICAgIGlm
IChpdGVyTG9jYXRpb25NYXAgPT0gbV9nbG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXAuZW5kKCkp
CisgICAgICAgIHJldHVybiAiIjsKKworICAgIGF1dG8gaXRlcklETWFwID0gbV9nbG9iYWxJRE1h
cC5maW5kKGl0ZXJMb2NhdGlvbk1hcC0+dmFsdWUpOworICAgIGlmIChpdGVySURNYXAgPT0gbV9n
bG9iYWxJRE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuICIiOworCisgICAgcmV0dXJuIGl0ZXJJ
RE1hcC0+dmFsdWUtPnNlZW5UeXBlcygpOworfQorCitXVEY6OlN0cmluZyBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXI6OmdldExvY2FsVHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3Rh
cnRMaW5lLCB1bnNpZ25lZCAsIHVuc2lnbmVkICwgdW5zaWduZWQgLCBjb25zdCBXVEY6OlN0cmlu
ZyYgLCBpbnRwdHJfdCBzb3VyY2VJRCkKK3sKKyAgICBhdXRvIGl0ZXIgPSBtX2dsb2JhbExvY2F0
aW9uTWFwLmZpbmQoZ2V0TG9jYXRpb25CYXNlZEhhc2goc291cmNlSUQsIHN0YXJ0TGluZSkpOwor
ICAgIGF1dG8gZW5kID0gbV9nbG9iYWxMb2NhdGlvbk1hcC5lbmQoKTsKKyAgICBpZiAoaXRlciA9
PSBlbmQpCisgICAgICAgIHJldHVybiAgIiI7CisKKyAgICByZXR1cm4gaXRlci0+dmFsdWUtPnNl
ZW5UeXBlcygpOworfQorCit2b2lkIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3
TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2NhdGlvbikKK3sKKyAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgZGF0YUxvZ0YoIlJlZ2lzdGVyaW5nIGxvY2F0aW9uOjogbGluZToldSwgY29sdW1uOiV1
XG4iLCBsb2NhdGlvbi0+bV9saW5lLCBsb2NhdGlvbi0+bV9jb2x1bW4pOworCisgICAgU3RyaW5n
IGhhc2hTdHJpbmcoZ2V0TG9jYXRpb25CYXNlZEhhc2gobG9jYXRpb24tPm1fc291cmNlSUQsIGxv
Y2F0aW9uLT5tX2xpbmUpKTsKKworICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlE
ICE9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHMpIHsgCisgICAgICAgIEFTU0VSVChtX2ds
b2JhbElETWFwLmlzVmFsaWRLZXkobG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCkpOworICAg
ICAgICAvLyBCdWlsZCB0aGUgbWFwcGluZyByZWxhdGlvbnNoaXBzIE1hcDE6aGFzaFN0cmluZz0+
Z2xvYmFsSWQsIE1hcDI6Z2xvYmFsSUQ9PlR5cGVTZXQgCisgICAgICAgIG1fZ2xvYmFsTG9jYXRp
b25Ub0dsb2JhbElETWFwLnNldChoYXNoU3RyaW5nLCBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJs
ZUlEKTsKKyAgICAgICAgbV9nbG9iYWxJRE1hcC5zZXQobG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFi
bGVJRCwgbG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCk7CisgICAgfQorCisgICAgQVNTRVJUKG1f
Z2xvYmFsTG9jYXRpb25NYXAuaXNWYWxpZEtleShoYXNoU3RyaW5nKSk7CisgICAgbV9nbG9iYWxM
b2NhdGlvbk1hcC5zZXQoaGFzaFN0cmluZywgbG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0
KTsKK30KKworV1RGOjpTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRMb2NhdGlv
bkJhc2VkSGFzaChpbnRwdHJfdCBpZCwgdW5zaWduZWQgbGluZSkKK3sKKyAgICByZXR1cm4gU3Ry
aW5nOjpudW1iZXIoaWQpICsgU3RyaW5nKCI6IikgKyBTdHJpbmc6Om51bWJlcihsaW5lKTsKK30K
KworfSAvL25hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
X2gKKyNkZWZpbmUgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyX2gKKworI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUeXBlTG9jYXRpb247CisKK2Ns
YXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlciB7CisKK3B1YmxpYzoKKyAgICBTdHJpbmcgZ2V0
VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJp
bmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpOworICAgIFN0cmluZyBnZXRHbG9i
YWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0
cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7CisgICAgU3RyaW5nIGdldExv
Y2FsVHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBz
dGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBT
dHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpOworICAgIHZvaWQgaW5zZXJ0
TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKik7CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBT
dHJpbmcgZ2V0TG9jYXRpb25CYXNlZEhhc2goaW50cHRyX3QsIHVuc2lnbmVkKTsKKworICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxUeXBlU2V0Pj4gR2xvYmFsTG9jYXRpb25NYXA7
IC8vIChmb3Igbm93LCBoYWNrIGl0IGFuZCBzYXkgTWFwOiJJRDpMaW5lIiA9PiBUeXBlU2V0LiBP
YnZpb3VzbHksIHRoaXMgYXNzdW1lcyBhbGwgYXNzaWdubWVudHMgYXJlIG9uIGRpc2NyZXRlIGxp
bmVzKS4KKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50NjRfdCwgUmVmUHRyPFR5cGVTZXQ+PiBHbG9i
YWxJRE1hcDsgCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgaW50NjRfdD4gR2xvYmFsTG9j
YXRpb25Ub0dsb2JhbElETWFwOworCisgICAgR2xvYmFsSURNYXAgbV9nbG9iYWxJRE1hcDsKKyAg
ICBHbG9iYWxMb2NhdGlvbk1hcCBtX2dsb2JhbExvY2F0aW9uTWFwOworICAgIEdsb2JhbExvY2F0
aW9uVG9HbG9iYWxJRE1hcCBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcDsKK307CisKK30g
Ly9uYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNzAz
ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3MSw3ICsyNzEsOSBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmlu
ZzsKICAgICB2KGJvb2wsIGRpc2FibGVHQywgZmFsc2UpIFwKICAgICB2KHVuc2lnbmVkLCBnY01h
eEhlYXBTaXplLCAwKSBcCiAgICAgdihib29sLCByZWNvcmRHQ1BhdXNlVGltZXMsIGZhbHNlKSBc
Ci0gICAgdihib29sLCBsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCwgZmFsc2UpCisgICAgdihib29s
LCBsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCwgZmFsc2UpIFwKKyAgICB2KGJvb2wsIHByb2ZpbGVU
eXBlc1dpdGhIaWdoRmlkZWxpdHksIGZhbHNlKQorICAgIAogCiBjbGFzcyBPcHRpb25zIHsKIHB1
YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cAkocmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1Miw2ICsxMDUyLDQwIEBAIGJvb2wgU3Ry
dWN0dXJlOjpwcm90b3R5cGVDaGFpbk1heUludGVyY2UKICAgICB9CiB9CiAKKworUGFzc1JlZlB0
cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKCkKK3sKKyAgICBW
ZWN0b3I8U3RydWN0dXJlKiwgOD4gc3RydWN0dXJlczsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZTsKKyAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZTsKKyAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+
IHNoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOworCisgICAgZmluZFN0cnVjdHVyZXNB
bmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oc3RydWN0dXJlcywgc3RydWN0dXJlLCB0YWJsZSk7Cisg
ICAgCisgICAgaWYgKHRhYmxlKSB7CisgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0
ZXIgPSB0YWJsZS0+YmVnaW4oKTsKKyAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5k
ID0gdGFibGUtPmVuZCgpOworCisgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CisgICAgICAgICAgICBzaGFwZS0+YWRkUHJvcGVydHkoaXRlci0+a2V5KTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgc3RydWN0dXJlLT5tX2xvY2sudW5sb2NrKCk7CisgICAgfQorICAg
IAorICAgIGZvciAodW5zaWduZWQgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpOyBpLS07KSB7CisgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKKyAgICAgICAgaWYgKCFz
dHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBzaGFwZS0+YWRkUHJvcGVydHkoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLmdldCgp
KTsKKyAgICB9CisKKyAgICBzaGFwZS0+bWFya0FzRmluYWwoKTsKKworICAgIHJldHVybiBzaGFw
ZS5yZWxlYXNlKCk7Cit9CisKIHZvaWQgU3RydWN0dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7CiAgICAgb3V0LnByaW50KFJhd1BvaW50ZXIodGhpcyksICI6WyIsIGNsYXNzSW5m
bygpLT5jbGFzc05hbWUsICIsIHsiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzkwLDYgKzM5MCw4IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0
OwogICAgIH0KKworICAgIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHRvU3RydWN0dXJlU2hh
cGUoKTsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lk
IGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2aXNp
b24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDExIEBAIFN5bWJvbFRhYmxlOjpTeW1i
b2xUYWJsZShWTSYgdm0pCiAgICAgLCBtX2NhcHR1cmVFbmQoMCkKICAgICAsIG1fZnVuY3Rpb25F
bnRlcmVkT25jZShDbGVhcldhdGNocG9pbnQpCiB7CisgICAgaWYgKHZtLmlzUHJvZmlsaW5nVHlw
ZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgbV91bmlxdWVJRE1hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VW5pcXVlSURNYXA+KCk7CisgICAgICAgIG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFw
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlclRvVmFyaWFibGVNYXA+KCk7CisgICAgICAgIG1f
dW5pcXVlVHlwZVNldE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8VW5pcXVlVHlwZVNldE1hcD4oKTsK
KyAgICB9CiB9CiAKIFN5bWJvbFRhYmxlOjp+U3ltYm9sVGFibGUoKSB7IH0KQEAgLTE1Nyw5ICsx
NjIsNzIgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZUNhcHR1cmVkTgogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBwYXJhbWV0ZXJDb3VudCgpOyBpLS07KQogICAgICAgICAgICAg
cmVzdWx0LT5tX3Nsb3dBcmd1bWVudHNbaV0gPSBtX3Nsb3dBcmd1bWVudHNbaV07CiAgICAgfQor
CisgICAgaWYgKG1fdW5pcXVlSURNYXAgJiYgcmVzdWx0LT5tX3VuaXF1ZUlETWFwKSB7CisKKyAg
ICAgICAgeworICAgICAgICAgICAgYXV0byBpdGVyID0gbV91bmlxdWVJRE1hcC0+YmVnaW4oKTsK
KyAgICAgICAgICAgIGF1dG8gZW5kID0gbV91bmlxdWVJRE1hcC0+ZW5kKCk7CisgICAgICAgICAg
ICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1f
dW5pcXVlSURNYXAtPnNldChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFw
LT5iZWdpbigpOworICAgICAgICAgICAgYXV0byBlbmQgPSBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1h
cC0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAg
ICAgICAgICAgICByZXN1bHQtPm1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5zZXQoaXRlci0+a2V5
LCBpdGVyLT52YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBhdXRv
IGl0ZXIgPSBtX3VuaXF1ZVR5cGVTZXRNYXAtPmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVu
ZCA9IG1fdW5pcXVlVHlwZVNldE1hcC0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRlciAh
PSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fdW5pcXVlVHlwZVNldE1h
cC0+c2V0KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOworICAgICAgICB9CisgICAgfQorCiAgICAg
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAoraW50NjRfdCBTeW1ib2xUYWJsZTo6dW5pcXVlSURG
b3JWYXJpYWJsZShjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5LCBW
TSYgdm0pCit7CisgICAgYXV0byBpdGVyID0gbV91bmlxdWVJRE1hcC0+ZmluZChrZXkpOworICAg
IGF1dG8gZW5kID0gbV91bmlxdWVJRE1hcC0+ZW5kKCk7CisgICAgQVNTRVJUX1VOVVNFRChlbmQs
IGl0ZXIgIT0gZW5kKTsKKworICAgIGludDY0X3QmIGlkID0gaXRlci0+dmFsdWU7CisgICAgaWYg
KGlkID09IEhpZ2hGaWRlbGl0eU5lZWRzVW5pcXVlSURHZW5lcmF0aW9uKSB7CisgICAgICAgIGlk
ID0gdm0uZ2V0TmV4dFVuaXF1ZVZhcmlhYmxlSUQoKTsKKyAgICAgICAgbV91bmlxdWVUeXBlU2V0
TWFwLT5zZXQoa2V5LCBUeXBlU2V0OjpjcmVhdGUoKSk7IC8vbWFrZSBhIG5ldyBnbG9iYWwgdHlw
ZXNldCBmb3IgdGhlIElECisgICAgfQorICAgICAgICAgCisgICAgcmV0dXJuIGlkOworfQorCitp
bnQ2NF90IFN5bWJvbFRhYmxlOjp1bmlxdWVJREZvclJlZ2lzdGVyKGNvbnN0IENvbmN1cnJlbnRK
SVRMb2NrZXImIGxvY2tlciwgaW50IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSkKK3sKKyAgICBhdXRv
IGl0ZXIgPSBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcC0+ZmluZChyZWdpc3RlckluZGV4KTsKKyAg
ICBhdXRvIGVuZCA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5lbmQoKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGVuZCwgaXRlciAhPSBlbmQpOworICAgIHJldHVybiB1bmlxdWVJREZvclZhcmlhYmxl
KGxvY2tlciwgaXRlci0+dmFsdWUuZ2V0KCksIHZtKTsKK30KKworUmVmUHRyPFR5cGVTZXQ+IFN5
bWJvbFRhYmxlOjpnbG9iYWxUeXBlU2V0Rm9yUmVnaXN0ZXIoY29uc3QgQ29uY3VycmVudEpJVExv
Y2tlciYgbG9ja2VyLCBpbnQgcmVnaXN0ZXJJbmRleCwgVk0mIHZtKQoreworICAgIHVuaXF1ZUlE
Rm9yUmVnaXN0ZXIobG9ja2VyLCByZWdpc3RlckluZGV4LCB2bSk7IC8vZW5zdXJlIGl0J3MgY3Jl
YXRlZAorICAgIGF1dG8gaXRlciA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5maW5kKHJlZ2lz
dGVySW5kZXgpOworICAgIGF1dG8gZW5kID0gbV9yZWdpc3RlclRvVmFyaWFibGVNYXAtPmVuZCgp
OworICAgIEFTU0VSVF9VTlVTRUQoZW5kLCBpdGVyICE9IGVuZCk7CisgICAgcmV0dXJuIGdsb2Jh
bFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGl0ZXItPnZhbHVlLmdldCgpLCB2bSk7Cit9CisK
K1JlZlB0cjxUeXBlU2V0PiBTeW1ib2xUYWJsZTo6Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGNv
bnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgU3RyaW5nSW1wbCoga2V5LCBWTSYgdm0p
Cit7CisgICAgdW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGtleSwgdm0pOworICAgIHJldHVy
biBtX3VuaXF1ZVR5cGVTZXRNYXAtPmZpbmQoa2V5KS0+dmFsdWU7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmgJKHJldmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1
ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
ICJUeXBlU2V0LmgiCiAjaW5jbHVkZSAiVmFyaWFibGVXYXRjaHBvaW50U2V0LmgiCiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CkBAIC0zMzYsNiArMzM3LDkg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKICAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBTeW1ib2xUYWJsZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFz
aCwgSGFzaFRyYWl0czxSZWZQdHI8U3RyaW5nSW1wbD4+LCBTeW1ib2xUYWJsZUluZGV4SGFzaFRy
YWl0cz4gTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludDY0
X3Q+IFVuaXF1ZUlETWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4s
IFJlZlB0cjxUeXBlU2V0Pj4gVW5pcXVlVHlwZVNldE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8
aW50LCBSZWZQdHI8U3RyaW5nSW1wbD4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IFJlZ2lzdGVyVG9WYXJpYWJsZU1hcDsKIAogICAg
IHN0YXRpYyBTeW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKICAgICB7CkBAIC00MTMsNiArNDE3
LDEyIEBAIHB1YmxpYzoKICAgICAKICAgICBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgQ29uY3Vy
cmVudEpJVExvY2tlciYsIFN0cmluZ0ltcGwqIGtleSwgY29uc3QgU3ltYm9sVGFibGVFbnRyeSYg
ZW50cnkpCiAgICAgeworICAgICAgICBpZiAobV91bmlxdWVJRE1hcCkgeworICAgICAgICAgICAg
Ly8gVXNlIGEgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHdlIG5lZWQgdG8gcHJvZHVjZSBhIHVuaXF1
ZSBJRC4gQmVjYXVzZSBWTSBpcyBpbiBjaGFyZ2Ugb2YgY3JlYXRpbmcgdW5pcXVlSURzLCAKKyAg
ICAgICAgICAgIC8vIHdoZW4gdW5pcXVlSUQoKSBpcyBjYWxsZWQsIHdlIGNoZWNrIHRoaXMgZmxh
ZyB0byBzZWUgaWYgdW5pcXVlSUQgY3JlYXRpb24gaXMgbmVjZXNzYXJ5LgorICAgICAgICAgICAg
bV91bmlxdWVJRE1hcC0+c2V0KGtleSwgSGlnaEZpZGVsaXR5TmVlZHNVbmlxdWVJREdlbmVyYXRp
b24pOyAKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5zZXQoZW50cnkuZ2V0
SW5kZXgoKSwga2V5KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGtleSwg
ZW50cnkpOwogICAgIH0KICAgICAKQEAgLTQyNCw2ICs0MzQsMTAgQEAgcHVibGljOgogICAgIAog
ICAgIE1hcDo6QWRkUmVzdWx0IHNldChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5n
SW1wbCoga2V5LCBjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSkKICAgICB7CisgICAgICAg
IGlmIChtX3VuaXF1ZUlETWFwKSB7CisgICAgICAgICAgICBtX3VuaXF1ZUlETWFwLT5zZXQoa2V5
LCBIaWdoRmlkZWxpdHlOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7IAorICAgICAgICAgICAgbV9y
ZWdpc3RlclRvVmFyaWFibGVNYXAtPnNldChlbnRyeS5nZXRJbmRleCgpLCBrZXkpOworICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBtX21hcC5zZXQoa2V5LCBlbnRyeSk7CiAgICAgfQogICAgIApA
QCAtNDQ0LDYgKzQ1OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjb250YWlucyhsb2Nr
ZXIsIGtleSk7CiAgICAgfQogICAgIAorICAgIGludDY0X3QgdW5pcXVlSURGb3JWYXJpYWJsZShj
b25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5LCBWTSYgdm0pOworICAg
IGludDY0X3QgdW5pcXVlSURGb3JSZWdpc3Rlcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBs
b2NrZXIsIGludCByZWdpc3RlckluZGV4LCBWTSYgdm0pOworICAgIFJlZlB0cjxUeXBlU2V0PiBn
bG9iYWxUeXBlU2V0Rm9yUmVnaXN0ZXIoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2Vy
LCBpbnQgcmVnaXN0ZXJJbmRleCwgVk0mIHZtKTsKKyAgICBSZWZQdHI8VHlwZVNldD4gZ2xvYmFs
VHlwZVNldEZvclZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgU3Ry
aW5nSW1wbCoga2V5LCBWTSYgdm0pOworCiAgICAgYm9vbCB1c2VzTm9uU3RyaWN0RXZhbCgpIHsg
cmV0dXJuIG1fdXNlc05vblN0cmljdEV2YWw7IH0KICAgICB2b2lkIHNldFVzZXNOb25TdHJpY3RF
dmFsKGJvb2wgdXNlc05vblN0cmljdEV2YWwpIHsgbV91c2VzTm9uU3RyaWN0RXZhbCA9IHVzZXNO
b25TdHJpY3RFdmFsOyB9CiAKQEAgLTQ5NCw3ICs1MTMsMTAgQEAgcHJpdmF0ZToKICAgICB+U3lt
Ym9sVGFibGUoKTsKIAogICAgIE1hcCBtX21hcDsKLSAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VW5pcXVlSURNYXA+IG1fdW5pcXVlSURNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVy
VG9WYXJpYWJsZU1hcD4gbV9yZWdpc3RlclRvVmFyaWFibGVNYXA7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFVuaXF1ZVR5cGVTZXRNYXA+IG1fdW5pcXVlVHlwZVNldE1hcDsKKwogICAgIGludCBtX3Bh
cmFtZXRlckNvdW50SW5jbHVkaW5nVGhpczsKICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWw7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VHlwZVNldC5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitUeXBlU2V0OjpU
eXBlU2V0KCkKKyAgICA6IG1fc2VlblR5cGVzKFR5cGVOb3RoaW5nKQorICAgICwgbV9zdHJ1Y3R1
cmVIaXN0b3J5KG5ldyBWZWN0b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4pCisgICAgLCBtX21p
Z2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkoZmFsc2UpCit7Cit9CisKK1J1bnRp
bWVUeXBlIFR5cGVTZXQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2KQoreworICAg
IFJ1bnRpbWVUeXBlIHJldDsKKyAgICBpZiAodi5pc0Z1bmN0aW9uKCkpCisgICAgICAgIHJldCA9
IFR5cGVGdW5jdGlvbjsKKyAgICBlbHNlIGlmICh2LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJl
dCA9IFR5cGVVbmRlZmluZWQ7CisgICAgZWxzZSBpZiAodi5pc051bGwoKSkKKyAgICAgICAgcmV0
ID0gVHlwZU51bGw7CisgICAgZWxzZSBpZiAodi5pc0Jvb2xlYW4oKSkKKyAgICAgICAgcmV0ID0g
VHlwZUJvb2xlYW47CisgICAgZWxzZSBpZiAodi5pc01hY2hpbmVJbnQoKSkKKyAgICAgICAgcmV0
ID0gVHlwZU1hY2hpbmVJbnQ7CisgICAgZWxzZSBpZiAodi5pc051bWJlcigpKQorICAgICAgICBy
ZXQgPSBUeXBlTnVtYmVyOworICAgIGVsc2UgaWYgKHYuaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0
ID0gVHlwZVN0cmluZzsKKyAgICBlbHNlIGlmICh2LmlzUHJpbWl0aXZlKCkpCisgICAgICAgIHJl
dCA9IFR5cGVQcmltaXRpdmU7CisgICAgZWxzZSBpZiAodi5pc09iamVjdCgpKQorICAgICAgICBy
ZXQgPSBUeXBlT2JqZWN0OworICAgIGVsc2UKKyAgICAgICAgQ1JBU0goKTsKKworICAgIHJldHVy
biByZXQ7Cit9CisKK3ZvaWQgVHlwZVNldDo6YWRkVHlwZUZvclZhbHVlKEpTVmFsdWUgdiwgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gc2hhcGUpIAoreworICAgIFJ1bnRpbWVUeXBlIHQgPSBn
ZXRSdW50aW1lVHlwZUZvclZhbHVlKHYpOworICAgIG1fc2VlblR5cGVzID0gbV9zZWVuVHlwZXMg
fCB0OworCisgICAgaWYgKHNoYXBlKSB7CisgICAgICAgIG1fc3RydWN0dXJlSGlzdG9yeS0+YXBw
ZW5kKHNoYXBlKTsKKyAgICAgICAgbV9taWdodEhhdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0
b3J5ID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgVHlwZVNldDo6cmVtb3ZlRHVwbGljYXRlc0lu
U3RydWN0dXJlSGlzdG9yeSgpIAoreworICAgIFZlY3RvcjxSZWZQdHI8U3RydWN0dXJlU2hhcGU+
PiogbmV3SGlzdG9yeSA9IG5ldyBWZWN0b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj47CisgICAg
SGFzaE1hcDxTdHJpbmcsIGJvb2w+IGNvbnRhaW5lcjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fc3RydWN0dXJlSGlzdG9yeS0+c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZVNoYXBlPiBhID0gbV9zdHJ1Y3R1cmVIaXN0b3J5LT5hdChpKTsKKyAgICAgICAgU3Ry
aW5nIGhhc2ggPSBhLT5wcm9wZXJ0eUhhc2goKTsKKyAgICAgICAgYXV0byBpdGVyID0gY29udGFp
bmVyLmZpbmQoaGFzaCk7CisgICAgICAgIGlmIChpdGVyID09IGNvbnRhaW5lci5lbmQoKSkgewor
ICAgICAgICAgICAgY29udGFpbmVyLmFkZChoYXNoLCB0cnVlKTsKKyAgICAgICAgICAgIG5ld0hp
c3RvcnktPmFwcGVuZChhKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRlbGV0ZSBtX3N0cnVj
dHVyZUhpc3Rvcnk7CisgICAgbV9zdHJ1Y3R1cmVIaXN0b3J5ID0gbmV3SGlzdG9yeTsKKyAgICBt
X21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkgPSBmYWxzZTsKK30KKworU3Ry
aW5nIFR5cGVTZXQ6OnNlZW5UeXBlcygpIAoreworICAgIGlmIChtX3NlZW5UeXBlcyA9PSBUeXBl
Tm90aGluZykKKyAgICAgICAgcmV0dXJuICIoVW5yZWFjaGVkIFN0YXRlbWVudCkiOworCisgICAg
aWYgKG1fbWlnaHRIYXZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeSkKKyAgICAgICAgcmVt
b3ZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeSgpOworCisgICAgU3RyaW5nQnVpbGRlciBz
ZWVuOworCisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZUZ1bmN0aW9uKQorICAgICAgICAgc2Vl
bi5hcHBlbmQoIkZ1bmN0aW9uICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVVbmRlZmlu
ZWQpCisgICAgICAgICBzZWVuLmFwcGVuZCgiVW5kZWZpbmVkICIpOworICAgIGlmIChtX3NlZW5U
eXBlcyAmIFR5cGVOdWxsKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIk51bGwgIik7CisgICAgaWYg
KG1fc2VlblR5cGVzICYgVHlwZUJvb2xlYW4pCisgICAgICAgICBzZWVuLmFwcGVuZCgiQm9vbGVh
biAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTWFjaGluZUludCkKKyAgICAgICAgIHNl
ZW4uYXBwZW5kKCJNYWNoaW5lSW50ICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdW1i
ZXIpCisgICAgICAgICBzZWVuLmFwcGVuZCgiTnVtYmVyICIpOworICAgIGlmIChtX3NlZW5UeXBl
cyAmIFR5cGVTdHJpbmcpCisgICAgICAgICBzZWVuLmFwcGVuZCgiU3RyaW5nICIpOworICAgIGlm
IChtX3NlZW5UeXBlcyAmIFR5cGVQcmltaXRpdmUpCisgICAgICAgICBzZWVuLmFwcGVuZCgiUHJp
bWl0aXZlICIpOworCisgICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS0+c2l6ZSgpKSAKKyAgICAg
ICAgc2Vlbi5hcHBlbmQoIlxuU3RydWN0dXJlczpbICIpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LT5zaXplKCk7IGkrKykgeworICAgICAgICBzZWVuLmFw
cGVuZChtX3N0cnVjdHVyZUhpc3RvcnktPmF0KGkpLT5zdHJpbmdSZXByZXNlbnRhdGlvbigpKTsK
KyAgICAgICAgc2Vlbi5hcHBlbmQoIiAiKTsKKyAgICB9CisgICAgaWYgKG1fc3RydWN0dXJlSGlz
dG9yeS0+c2l6ZSgpKQorICAgICAgICBzZWVuLmFwcGVuZCgiXSIpOworCisgICAgaWYgKG1fc3Ry
dWN0dXJlSGlzdG9yeS0+c2l6ZSgpKSB7CisgICAgICAgIHNlZW4uYXBwZW5kKCJcbkxVQjogIik7
CisgICAgICAgIHNlZW4uYXBwZW5kKFN0cnVjdHVyZVNoYXBlOjpsZWFzdFVwcGVyQm91bmQobV9z
dHJ1Y3R1cmVIaXN0b3J5KSk7CisgICAgfQorCisgICAgcmV0dXJuIHNlZW4udG9TdHJpbmcoKTsK
K30KKwordm9pZCBUeXBlU2V0OjpkdW1wU2VlblR5cGVzKCkKK3sKKyAgICBkYXRhTG9nKHNlZW5U
eXBlcygpLCAiXG4iKTsKK30KKworU3RydWN0dXJlU2hhcGU6OlN0cnVjdHVyZVNoYXBlKCkKKyAg
ICA6IG1fcHJvcGVydHlIYXNoKG51bGxwdHIpCisgICAgLCBtX2ZpbmFsKGZhbHNlKQoreworfQor
Cit2b2lkIFN0cnVjdHVyZVNoYXBlOjptYXJrQXNGaW5hbCgpCit7CisgICAgQVNTRVJUKCFtX2Zp
bmFsKTsKKyAgICBtX2ZpbmFsID0gdHJ1ZTsKK30KKwordm9pZCBTdHJ1Y3R1cmVTaGFwZTo6YWRk
UHJvcGVydHkoUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpCit7CisgICAgQVNTRVJUKCFtX2ZpbmFs
KTsKKyAgICBtX2ZpZWxkcy5zZXQoaW1wbCwgdHJ1ZSk7Cit9CisKK1N0cmluZyBTdHJ1Y3R1cmVT
aGFwZTo6cHJvcGVydHlIYXNoKCkgCit7CisgICAgQVNTRVJUKG1fZmluYWwpOworICAgIGlmICht
X3Byb3BlcnR5SGFzaCkKKyAgICAgICAgcmV0dXJuICptX3Byb3BlcnR5SGFzaDsKKworICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgiOiIpOworICAgIGZvciAo
YXV0byBpdGVyID0gbV9maWVsZHMuYmVnaW4oKSwgZW5kID0gbV9maWVsZHMuZW5kKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgU3RyaW5nIHByb3BlcnR5ID0gU3RyaW5nKGl0ZXIt
PmtleSk7CisgICAgICAgIHByb3BlcnR5LnJlcGxhY2UoIjoiLCAiXFw6Iik7IC8vIEVuc3VyZSB0
aGF0IGhhc2goeyJmb286IiwgImJhciJ9KSAhPSBoYXNoKHsiZm9vIiwgIjpiYXIifSkgYmVjYXVz
ZSB3ZSdyZSB1c2luZyBjb2xvbnMgYXMgYSBzZXBhcmF0b3IgYW5kIGNvbG9ucyBhcmUgbGVnYWwg
Y2hhcmFjdGVycyBpbiBmaWVsZCBuYW1lcyBpbiBKUy4KKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
cHJvcGVydHkpOworICAgIH0KKworICAgIG1fcHJvcGVydHlIYXNoID0gc3RkOjptYWtlX3VuaXF1
ZTxTdHJpbmc+KGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgcmV0dXJuICptX3Byb3BlcnR5SGFz
aDsKK30KKworU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpsZWFzdFVwcGVyQm91bmQoVmVjdG9yPFJl
ZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+KiBzaGFwZXMpCit7CisgICAgaWYgKCFzaGFwZXMtPnNpemUo
KSkKKyAgICAgICAgcmV0dXJuICIiOworCisgICAgU3RyaW5nQnVpbGRlciBsdWI7CisgICAgUmVm
UHRyPFN0cnVjdHVyZVNoYXBlPiBvcmlnaW4gPSBzaGFwZXMtPmF0KDApOworICAgIGx1Yi5hcHBl
bmQoInsiKTsKKyAgICBmb3IgKGF1dG8gaXRlciA9IG9yaWdpbi0+bV9maWVsZHMuYmVnaW4oKSwg
ZW5kID0gb3JpZ2luLT5tX2ZpZWxkcy5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAg
ICAgICBib29sIHNob3VsZEFkZCA9IHRydWU7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxLCBz
aXplID0gc2hhcGVzLT5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIC8vIElm
IGFsbCBvdGhlciBTaGFwZXMgaGF2ZSB0aGUgc2FtZSBmaWVsZCBhcyBvcmlnaW4sIGFkZCBpdCB0
byB0aGUgbGVhc3QgdXBwZXIgYm91bmQuCisgICAgICAgICAgICBpZiAoIXNoYXBlcy0+YXQoaSkt
Pm1fZmllbGRzLmNvbnRhaW5zKGl0ZXItPmtleSkpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRB
ZGQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBpZiAoc2hvdWxkQWRkKQorICAgICAgICAgICAgbHViLmFwcGVuZChTdHJp
bmcoaXRlci0+a2V5LmdldCgpKSArIFN0cmluZygiLCAiKSk7CisgICAgfQorCisgICAgaWYgKGx1
Yi5sZW5ndGgoKSA+PSAzKQorICAgICAgICBsdWIucmVzaXplKGx1Yi5sZW5ndGgoKSAtIDIpOyAv
LyBSZW1vdmUgdGhlIHRyYWlsaW5nICcsICcKKworICAgIGx1Yi5hcHBlbmQoIn0iKTsKKyAgICAK
KyAgICByZXR1cm4gbHViLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBTdHJ1Y3R1cmVTaGFwZTo6
c3RyaW5nUmVwcmVzZW50YXRpb24oKQoreworICAgIFN0cmluZ0J1aWxkZXIgcmVwcmVzZW50YXRp
b247CisgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKCJ7Iik7CisgICAgZm9yIChhdXRvIGl0ZXIg
PSBtX2ZpZWxkcy5iZWdpbigpLCBlbmQgPSBtX2ZpZWxkcy5lbmQoKTsgaXRlciAhPSBlbmQ7ICsr
aXRlcikgeworICAgICAgICBTdHJpbmcgcHJvcChpdGVyLT5rZXkuZ2V0KCkpOworICAgICAgICBy
ZXByZXNlbnRhdGlvbi5hcHBlbmQocHJvcCk7CisgICAgICAgIHJlcHJlc2VudGF0aW9uLmFwcGVu
ZCgiLCAiKTsKKyAgICB9CisKKyAgICBpZiAocmVwcmVzZW50YXRpb24ubGVuZ3RoKCkgPj0gMykK
KyAgICAgICAgcmVwcmVzZW50YXRpb24ucmVzaXplKHJlcHJlc2VudGF0aW9uLmxlbmd0aCgpIC0g
Mik7CisKKyAgICByZXByZXNlbnRhdGlvbi5hcHBlbmQoIn0iKTsKKworICAgIHJldHVybiByZXBy
ZXNlbnRhdGlvbi50b1N0cmluZygpOworfQorCit9IC8vbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBUeXBlU2V0X2gKKyNkZWZpbmUgVHlwZVNldF9oCisKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgSlNWYWx1ZTsKKworZW51bSBSdW50aW1lVHlwZSB7CisgICAgVHlwZU5v
dGhpbmcgICAgICAgICAgICA9IDB4MCwKKyAgICBUeXBlRnVuY3Rpb24gICAgICAgICAgID0gMHgx
LAorICAgIFR5cGVVbmRlZmluZWQgICAgICAgICAgPSAweDIsCisgICAgVHlwZU51bGwgICAgICAg
ICAgICAgICA9IDB4NCwKKyAgICBUeXBlQm9vbGVhbiAgICAgICAgICAgID0gMHg4LAorICAgIFR5
cGVNYWNoaW5lSW50ICAgICAgICAgPSAweDEwLAorICAgIFR5cGVOdW1iZXIgICAgICAgICAgICAg
PSAweDIwLAorICAgIFR5cGVTdHJpbmcgICAgICAgICAgICAgPSAweDQwLAorICAgIFR5cGVQcmlt
aXRpdmUgICAgICAgICAgPSAweDgwLAorICAgIFR5cGVPYmplY3QgICAgICAgICAgICAgPSAweDEw
MAorfTsKKworY2xhc3MgU3RydWN0dXJlU2hhcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHJ1Y3R1
cmVTaGFwZT4geworICAgIGZyaWVuZCBjbGFzcyBUeXBlU2V0OworCitwdWJsaWM6CisgICAgU3Ry
dWN0dXJlU2hhcGUoKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3RydWN0dXJlU2hhcGUpOyB9CisgICAgU3Ry
aW5nIHByb3BlcnR5SGFzaCgpOworICAgIHZvaWQgbWFya0FzRmluYWwoKTsKKyAgICB2b2lkIGFk
ZFByb3BlcnR5KFJlZlB0cjxTdHJpbmdJbXBsPik7CisgICAgc3RhdGljIFN0cmluZyBsZWFzdFVw
cGVyQm91bmQoVmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+Kik7CisgICAgU3RyaW5nIHN0
cmluZ1JlcHJlc2VudGF0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxSZWZQdHI8U3Ry
aW5nSW1wbD4sIGJvb2w+IG1fZmllbGRzOyAgICAgICAgIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxT
dHJpbmc+IG1fcHJvcGVydHlIYXNoOworICAgIGJvb2wgbV9maW5hbDsKK307CisKK2NsYXNzIFR5
cGVTZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxUeXBlU2V0PiB7CisKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxUeXBlU2V0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVHlw
ZVNldCk7IH0KKyAgICBUeXBlU2V0KCk7CisgICAgdm9pZCBhZGRUeXBlRm9yVmFsdWUoSlNWYWx1
ZSB2LCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPik7CisgICAgc3RhdGljIFJ1bnRpbWVUeXBl
IGdldFJ1bnRpbWVUeXBlRm9yVmFsdWUoSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIHNlZW5UeXBlcygpOworCitwcml2YXRlOgorICAgIHVpbnQzMl90IG1fc2VlblR5cGVz
OworICAgIHZvaWQgZHVtcFNlZW5UeXBlcygpOworICAgIFZlY3RvcjxSZWZQdHI8U3RydWN0dXJl
U2hhcGU+PiogbV9zdHJ1Y3R1cmVIaXN0b3J5OworICAgIGJvb2wgbV9taWdodEhhdmVEdXBsaWNh
dGVzSW5TdHJ1Y3R1cmVIaXN0b3J5OworICAgIHZvaWQgcmVtb3ZlRHVwbGljYXRlc0luU3RydWN0
dXJlSGlzdG9yeSgpOworCit9OworCit9IC8vbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy9UeXBl
U2V0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE3
MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsOCBAQAogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIK
ICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgpAQCAtODgsNiArOTAsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmg+CisjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICNpbmNsdWRlICJDb25zZXJ2YXRp
dmVSb290cy5oIgpAQCAtMjM2LDYgKzIzOSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICAgICAsIG1fY29kZUNhY2hlKENvZGVDYWNoZTo6Y3JlYXRlKCkpCiAg
ICAgLCBtX2VuYWJsZWRQcm9maWxlcihudWxscHRyKQogICAgICwgbV9idWlsdGluRXhlY3V0YWJs
ZXMoQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9uZXh0VW5pcXVl
VmFyaWFibGVJRCgxKQogewogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlz
KTsKICAgICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwpAQCAt
MzI3LDYgKzMzMSwxMiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGlzIGxhc3QsIGFzIGEgZnJlZSB3YXkgb2YgYXNzZXJ0aW5n
IHRoYXQgVk0gaW5pdGlhbGl6YXRpb24gaXRzZWxmCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMuCiAg
ICAgbV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFycmF5
Q29udHJvbGxlcigpKTsKKworICAgIC8vIEZJWE1FOiBjb25kaXRpb25hbGx5IGFsbG9jYXRlIHRo
aXMgc3R1ZmYgYmFzZWQgb24gd2hldGhlciBvciBub3QgdGhlIGluc3BlY3RvciBpcyBydW5uaW5n
IE9SIHRoaXMgZmxhZyBpcyBlbmFibGVkIChub3QganVzdCBpZiB0aGUgZmxhZyBpcyBlbmFibGVk
KS4KKyAgICBpZiAoT3B0aW9uczo6cHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7Cisg
ICAgICAgIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXI+KCk7CisgICAgICAgIG1faGlnaEZpZGVsaXR5TG9nID0gc3Rk
OjptYWtlX3VuaXF1ZTxIaWdoRmlkZWxpdHlMb2c+KCk7CisgICAgfQogfQogCiBWTTo6flZNKCkK
QEAgLTkxOSw2ICs5MjksNDYgQEAgdm9pZCBWTTo6c2V0RW5hYmxlZFByb2ZpbGVyKExlZ2FjeVBy
b2ZpbAogICAgIH0KIH0KIAorU3RyaW5nIFZNOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1
bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5l
LCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBjb25zdCBT
dHJpbmcmIHNvdXJjZUlEQXNTdHJpbmcpCit7CisgICAgaWYgKCFpc1Byb2ZpbGluZ1R5cGVzV2l0
aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICByZXR1cm4gIihOb3QgUHJvZmlsaW5nKSI7CisKKyAg
ICBib29sIG9rYXk7CisgICAgaW50cHRyX3Qgc291cmNlSUQgPSBzb3VyY2VJREFzU3RyaW5nLnRv
SW50UHRyU3RyaWN0KCZva2F5KTsKKyAgICBpZiAoIW9rYXkpCisgICAgICAgIENSQVNIKCk7CisK
KyAgICB1cGRhdGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZVN0YXRlKCk7CisgICAgcmV0dXJuIG1f
aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLT5nZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFy
dExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291
cmNlSUQpOworfQorCit2b2lkIFZNOjp1cGRhdGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZVN0YXRl
KCkKK3sKKyAgICBpZiAoIWlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGhpZ2hGaWRlbGl0eUxvZygpLT5wcm9jZXNzSGlnaEZpZGVsaXR5
TG9nKGZhbHNlLCAiVk0gVXBkYXRlIik7Cit9CisKK3ZvaWQgVk06OmR1bXBIaWdoRmlkZWxpdHlQ
cm9maWxpbmdUeXBlcygpCit7CisgICAgaWYgKCFpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRl
bGl0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZVN0YXRlKCk7CisgICAgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKiBwcm9maWxlciA9IG1f
aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmdldCgpOworICAgIGZvciAoQmFnPFR5cGVMb2NhdGlv
bj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2xvY2F0aW9uSW5mby5iZWdpbigpOyAhIWl0ZXI7ICsraXRl
cikgeworICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gKml0ZXI7CisgICAgICAgIGRh
dGFMb2dGKCJbTGluZSwgQ29sdW1uXTo6WyV1LCAldV0gIiwgbG9jYXRpb24tPm1fbGluZSwgbG9j
YXRpb24tPm1fY29sdW1uKTsKKyAgICAgICAgZGF0YUxvZygiXG5cdFx0I0xvY2FsI1xuXHRcdCIs
CisgICAgICAgICAgICAgICAgcHJvZmlsZXItPmdldExvY2FsVHlwZXNGb3JWYXJpYWJsZUluUmFu
Z2UobG9jYXRpb24tPm1fbGluZSwgbG9jYXRpb24tPm1fY29sdW1uLCBsb2NhdGlvbi0+bV9saW5l
LCBsb2NhdGlvbi0+bV9jb2x1bW4sICIiLCBsb2NhdGlvbi0+bV9zb3VyY2VJRCkucmVwbGFjZSgi
XG4iLCAiXG5cdFx0IiksCisgICAgICAgICAgICAgICAgIlxuXHRcdCNHbG9iYWwjXG5cdFx0IiwK
KyAgICAgICAgICAgICAgICBwcm9maWxlci0+Z2V0R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUluUmFu
Z2UobG9jYXRpb24tPm1fbGluZSwgbG9jYXRpb24tPm1fY29sdW1uLCBsb2NhdGlvbi0+bV9saW5l
LCBsb2NhdGlvbi0+bV9jb2x1bW4sICIiLCBsb2NhdGlvbi0+bV9zb3VyY2VJRCkucmVwbGFjZSgi
XG4iLCAiXG5cdFx0IiksCisgICAgICAgICAgICAgICAgIlxuIik7CisgICAgfQorfQorCiB2b2lk
IHNhbml0aXplU3RhY2tGb3JWTShWTSogdm0pCiB7CiAgICAgbG9nU2FuaXRpemVTdGFjayh2bSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE3MDM4NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDkgKzQ2LDExIEBACiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0
b3JzLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJUeXBl
TG9jYXRpb24uaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQu
aCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCisjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1
ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC03NCw2ICs3Niw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsK
ICAgICBjbGFzcyBIYW5kbGVTdGFjazsKKyAgICBjbGFzcyBIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXI7CisgICAgY2xhc3MgSGlnaEZpZGVsaXR5TG9nOwogICAgIGNsYXNzIElkZW50aWZpZXI7CiAg
ICAgY2xhc3MgSW50ZXJwcmV0ZXI7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CkBAIC04NCw2
ICs4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAg
ICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CisgICAgY2xhc3Mg
U2NyaXB0RXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VQcm92aWRlcjsKICAgICBjbGFzcyBT
b3VyY2VQcm92aWRlckNhY2hlOwogICAgIHN0cnVjdCBTdGFja0ZyYW1lOwpAQCAtOTYsNiArMTAx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwog
ICAgIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIFVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jazsKKyAgICBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiAgICAgY2xhc3Mg
Vk1FbnRyeVNjb3BlOwogICAgIGNsYXNzIFdhdGNocG9pbnQ7CiAgICAgY2xhc3MgV2F0Y2hwb2lu
dFNldDsKQEAgLTUxMCw2ICs1MTYsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAg
ICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVjdXRhYmxlcygpIHsgcmV0dXJuIG1f
YnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKKyAgICAgICAgYm9vbCBpc1Byb2ZpbGluZ1R5
cGVzV2l0aEhpZ2hGaWRlbGl0eSgpIHsgcmV0dXJuICEhbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXI7IH0KKyAgICAgICAgU3RyaW5nIGdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVk
IHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2ln
bmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYg
c291cmNlSUQpOworICAgICAgICBIaWdoRmlkZWxpdHlMb2cqIGhpZ2hGaWRlbGl0eUxvZygpIHsg
cmV0dXJuIG1faGlnaEZpZGVsaXR5TG9nLmdldCgpOyB9CisgICAgICAgIEhpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlciogaGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKCkgeyByZXR1cm4gbV9oaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCB1cGRhdGVIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZVN0YXRlKCk7CisgICAgICAgIFR5cGVMb2NhdGlvbiogbmV4dExvY2F0aW9u
KCkgeyByZXR1cm4gbV9sb2NhdGlvbkluZm8uYWRkKCk7IH0gLy9UT0RPOiBwb3NzaWJsZSBvcHRt
aXphdGlvbjogd2hlbiBjb2RlYmxvY2tzIGRpZSwgcmVwb3J0IHdoaWNoIGxvY2F0aW9ucyBhcmUg
bm8gbG9uZ2VyIGJlaW5nIGNoYW5nZWQgc28gd2UgZG9uJ3Qgd2FsayBvdmVyIHRoZW0KKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wSGlnaEZpZGVsaXR5UHJvZmlsaW5nVHlwZXMo
KTsKKyAgICAgICAgaW50NjRfdCBnZXROZXh0VW5pcXVlVmFyaWFibGVJRCgpIHsgcmV0dXJuIG1f
bmV4dFVuaXF1ZVZhcmlhYmxlSUQrKzsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIENsZWFy
RXhjZXB0aW9uU2NvcGU7CkBAIC01NTgsNiArNTczLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5FeGVjdXRhYmxlczsKICAg
ICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7CiAgICAg
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+IG1faW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50U2V0czsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlcj4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxIaWdoRmlkZWxpdHlMb2c+IG1faGlnaEZpZGVsaXR5TG9nOworICAgICAgICBpbnQ2
NF90IG1fbmV4dFVuaXF1ZVZhcmlhYmxlSUQ7CisgICAgICAgIEJhZzxUeXBlTG9jYXRpb24+IG1f
bG9jYXRpb25JbmZvOwogICAgIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikK
</data>
<flag name="review"
          id="258232"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="258233"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233760</attachid>
            <date>2014-06-24 16:25:02 -0700</date>
            <delta_ts>2014-06-25 12:31:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>88433</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwMzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNiBA
QAorMjAxNC0wNi0yNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBkZWJ1Z2dlciBzaG91bGQgYmUgYWJsZSB0byBzaG93IHZhcmlhYmxl
IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzMzOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bmNyZWFzZSB0aGUgYW1vdW50IG9mIHR5cGUgaW5mb3JtYXRpb24gdGhlIFZNIGdhdGhlcnMgd2hl
biBkaXJlY3RlZAorICAgICAgICB0byBkbyBzby4gVGhpcyBpbml0aWFsIGNvbW1pdCBpcyB3b3Jr
aW5nIHRvd2FyZHMgdGhlIGdvYWwgb2YKKyAgICAgICAgY2FwdHVyaW5nLCBhbmQgdGhlbiBzaG93
aW5nICh2aWEgdGhlIFdlYiBJbnNwZWN0b3IpIHR5cGUgaW5mb3JtYXRpb24gZm9yIGFsbAorICAg
ICAgICBhc3NpZ25tZW50IGFuZCBsb2FkIG9wZXJhdGlvbnMuIFRoaXMgcGF0Y2ggZG9lc24ndCBo
YXZlIHRoZSBmZWF0dXJlIGZ1bGx5IAorICAgICAgICBpbXBsZW1lbnRlZCwgYnV0IGl0IGVuc3Vy
ZXMgdGhlIFZNIGhhcyBubyBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucworICAgICAgICB1bmxlc3Mg
dGhlIGZlYXR1cmUgaXMgc3BlY2lmaWNhbGx5IHR1cm5lZCBvbi4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoK
KyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAqIGJ5dGVj
b2RlL1R5cGVMb2NhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VHlwZUxvY2F0aW9uOjpU
eXBlTG9jYXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0
eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29wZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJl
c29sdmUpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZSk6CisgICAgICAg
IChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0
RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6
OmNvbGxlY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRS
dW50aW1lVHlwZUZvclZhcmlhYmxlSW5UZXh0UmFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3Byb3Rv
Y29sL1J1bnRpbWUuanNvbjoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZh
cmlhYmxlcyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHV0VG9TY29wZUNvbW1vbik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1l
L0hpZ2hGaWRlbGl0eUxvZy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlM
b2c6OmluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxp
dHlMb2c6On5IaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6
OnJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGlnaEZp
ZGVsaXR5TG9nOjpwcm9jZXNzSGlnaEZpZGVsaXR5TG9nKToKKyAgICAgICAgKEpTQzo6SGlnaEZp
ZGVsaXR5TG9nOjphY3R1YWxseVByb2Nlc3NMb2dUaHJlYWRGdW5jdGlvbik6CisgICAgICAgICog
cnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkhpZ2hGaWRl
bGl0eUxvZzo6SGlnaEZpZGVsaXR5TG9nKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXI6OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAgICAgICAgKEpTQzo6SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSk6
CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYWxUeXBlc0Zv
clZhcmlhYmxlSW5SYW5nZSk6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
cjo6aW5zZXJ0TmV3TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXI6OmdldExvY2F0aW9uQmFzZWRIYXNoKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6dG9TdHJ1Y3R1cmVTaGFwZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGU6OlN5bWJvbFRhYmxlKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lQ2FwdHVy
ZWROYW1lcyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjp1bmlxdWVJREZvclZhcmlhYmxl
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnVuaXF1ZUlERm9yUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Z2xvYmFsVHlwZVNldEZvclJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6Omdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZSk6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6YWRk
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnNldCk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlR5cGVTZXQ6OlR5cGVTZXQpOgorICAg
ICAgICAoSlNDOjpUeXBlU2V0OjpnZXRSdW50aW1lVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpT
Qzo6VHlwZVNldDo6YWRkVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6cmVt
b3ZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeSk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6
OnNlZW5UeXBlcyk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OmR1bXBTZWVuVHlwZXMpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6U3RydWN0dXJlU2hhcGUpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTaGFwZTo6bWFya0FzRmluYWwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
aGFwZTo6YWRkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6cHJvcGVy
dHlIYXNoKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OmxlYXN0VXBwZXJCb3VuZCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9UeXBlU2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTaGFwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpT
Qzo6Vk06OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAgICAgICAgKEpTQzo6Vk06OnVw
ZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUpOgorICAgICAgICAoSlNDOjpWTTo6ZHVt
cEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgIChKU0M6OlZNOjppc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSk6CisgICAg
ICAgIChKU0M6OlZNOjpoaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpWTTo6aGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06Om5leHRMb2NhdGlvbik6Cisg
ICAgICAgIChKU0M6OlZNOjpnZXROZXh0VW5pcXVlVmFyaWFibGVJRCk6CisKIDIwMTQtMDYtMjQg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBbZnRsb3B0XSBQdXRC
eUlkRmx1c2ggY2FuIGFsc28gYmUgY29udmVydGVkIHRvIGEgUHV0QnlPZmZzZXQgc28gZG9uJ3Qg
YXNzZXJ0IG90aGVyd2lzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE3MDM4
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJCdXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJD
b21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgpAQCAtMzQ3LDYgKzM0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uVW5kZWZpbmVkKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZmZlY3RmdWw0MihFeGVjU3RhdGUqKTsKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1w
VHlwZXNGb3JBbGxWYXJpYWJsZXMgKEV4ZWNTdGF0ZSopOwogCiAjaWYgRU5BQkxFKFNBTVBMSU5H
X0ZMQUdTKQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRT
YW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOwpAQCAtNDkzLDYgKzQ5NSw3IEBAIHByb3RlY3RlZDoK
IAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUltcHVyZUdldHRlciIsIGZ1bmN0aW9u
Q3JlYXRlSW1wdXJlR2V0dGVyLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRJbXB1
cmVHZXR0ZXJEZWxlZ2F0ZSIsIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUsIDIpOwor
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyIsIGZ1bmN0
aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzICwgNCk7CiAgICAgICAgIAogICAgICAgICBKU0Fy
cmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsRXhlYygpLCAwKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCkBAIC05Mjcs
NiArOTMwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hc3F1ZXJhZGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIGV4ZWMtPnZtKCkuZHVtcEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKCk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogLy8gVXNlIFNF
SCBmb3IgUmVsZWFzZSBidWlsZHMgb25seSB0byBnZXQgcmlkIG9mIHRoZSBjcmFzaCByZXBvcnQg
ZGlhbG9nCiAvLyAobHVja2lseSB0aGUgc2FtZSB0ZXN0cyBmYWlsIGluIFJlbGVhc2UgYW5kIERl
YnVnIGJ1aWxkcyBzbyBmYXIpLiBOZWVkIHRvCiAvLyBiZSBpbiBhIHNlcGFyYXRlIG1haW4gZnVu
Y3Rpb24gYmVjYXVzZSB0aGUganNjbWFpbiBmdW5jdGlvbiByZXF1aXJlcyBvYmplY3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtODM3LDYgKzgzNywxMyBAQAogCQk0MTM1OUNGMzBGREQ4OUFEMDAy
MDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEQyMTIwMjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lv
bi5oICovOyB9OwogCQk0NDQzQUUzMzE2RTE4OEQ5MDA3NkYxMTAgLyogRm91bmRhdGlvbi5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJ
CTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFy
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUy
REFEMzhGMTk1QTE2NEUwMEYzMDQ2NCAvKiBUeXBlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyREFEMzhFMTk1QTE2NEUwMEYzMDQ2NCAv
KiBUeXBlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1MkZCNzEzNzE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MTMz
MTk1Mzc0QjcwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwICovOyB9OworCQk1MkZCNzEz
ODE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzEzNDE5NTM3NEI3MDBCQjYxMkUgLyog
SGlnaEZpZGVsaXR5TG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNTJGQjcxMzkxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MkZCNzEzNTE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNw
cCAqLzsgfTsKKwkJNTJGQjcxM0ExOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTJGQjcxMzYxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUyRkI3MjE0
MTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MjEyMTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0
LmNwcCAqLzsgfTsKKwkJNTJGQjcyMTUxOTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MjEzMTk1Mzc2
MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTUxMDUwMjYxOEVCODI3NTAwMDAxRjNFIC8qIEpTQ2FsbGJhY2tG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQ0MEY4OEYwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9Owog
CQk1NTJFQTcwQzE5MDg3MDQ4MDBBNjZGMkYgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCRjE3QjZC
NUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgKi87IH07CiAJCTU1NDA3NTcy
MThEQTU4QUQwMEVGRjdGMiAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5o
ICovOyB9OwpAQCAtMjk3NCw2ICsyOTgxLDE0IEBACiAJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4
NCAvKiBqc2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0ganNjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0
OyB9OwogCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07CiAJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGli
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIv
bGlib2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJNTIyQUJBRjkx
OTRBODA0MzAwOEIxQzg1IC8qIFR5cGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUeXBlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTJEQUQzOEUxOTVBMTY0RTAwRjMwNDY0IC8qIFR5cGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUeXBlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGQjcxMzMx
OTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIaWdoRmlkZWxpdHlMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MkZCNzEzNDE5NTM3NEI3MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZ2hGaWRlbGl0eUxvZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZCNzEzNTE5NTM3NEI4MDBCQjYxMkUgLyog
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUyRkI3MTM2MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRkI3MjEyMTk1
Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFR5cGVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZC
NzIxMzE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUeXBlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NDA3
NTg0MThGNEEzNzUwMDYwMkE1RCAvKiBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENvbXBpbGVSdW50aW1lVG9MTFZNSVIueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NDA3QUM4MThEQTU4QUQwMEVG
RjdGMiAvKiBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IGxpYkNvbXBpbGVSdW50aW1lVG9MTFZNSVIuYTsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQ1MzcyNkQwRTFDNTQ2QjAwMjFFNTQ5IC8qIFRyYWNpbmcu
ZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUcmFjaW5nLmQ7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00NjQ3LDYgKzQ2NjIsMTAgQEAKIAkJCQkwRjJCNjZCMzE3QjZCNUFCMDBBN0FF
M0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oICovLAogCQkJCUJDMDJFOUI4MEUx
ODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUJDMzM3QkRFMEUxQUYw
QjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLywKKwkJCQk1MkZCNzEzMzE5NTM3NEI3MDBC
QjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCAqLywKKwkJCQk1MkZCNzEzNDE5NTM3NEI3MDBC
QjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggKi8sCisJCQkJNTJGQjcxMzUxOTUzNzRCODAwQkI2
MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgKi8sCisJCQkJNTJGQjcxMzYxOTUz
NzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovLAogCQkJCTkzM0Ez
NDlEMDM4QUU4MEYwMDg2MzVDRSAvKiBJZGVudGlmaWVyLmNwcCAqLywKIAkJCQk5MzNBMzQ5QTAz
OEFFN0M2MDA4NjM1Q0UgLyogSWRlbnRpZmllci5oICovLAogCQkJCTg2MDZEREU5MThEQTQ0QUIw
MEEzODNEMCAvKiBJZGVudGlmaWVySW5saW5lcy5oICovLApAQCAtNDkxOCw2ICs0OTM3LDggQEAK
IAkJCQkwRjJCNjZEQjE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheXMuaCAqLywKIAkJCQkw
RjJCNjZEQzE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuY3BwICovLAogCQkJCTBG
MkI2NkREMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5oICovLAorCQkJCTUyRkI3
MjEyMTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCAqLywKKwkJCQk1MkZCNzIxMzE5NTM3
NjBDMDBCQjYxMkUgLyogVHlwZVNldC5oICovLAogCQkJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3
NCAvKiBVaW50MTZBcnJheS5oICovLAogCQkJCTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBV
aW50MTZXaXRoRnJhY3Rpb24uaCAqLywKIAkJCQlBN0E4QUYzMzE3QURCNUYzMDA1QUIxNzQgLyog
VWludDMyQXJyYXkuaCAqLywKQEAgLTUzODksNiArNTQxMCw3IEBACiAJCQkJMEZCNTQ2NzgxNEY1
QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkwRkI1
NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLywKIAkJ
CQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKKwkJ
CQk1MjJBQkFGOTE5NEE4MDQzMDA4QjFDODUgLyogVHlwZUxvY2F0aW9uLmggKi8sCiAJCQkJMEZC
NTQ2N0MxNEY1Q0ZEMzAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3Bw
ICovLAogCQkJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmggKi8sCiAJCQkJMTRDQTk1OEMxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmggKi8sCkBAIC01NDI2LDYgKzU0NDgsNyBAQAogCQkJCUJDQ0YwRDA3
MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5oICovLAogCQkJCTBGN0FCODJD
MTk1OERBMUMwMEM2ODgxRiAvKiBUb1RoaXNTdGF0dXMuY3BwICovLAogCQkJCTBGN0FCODJEMTk1
OERBMUMwMEM2ODgxRiAvKiBUb1RoaXNTdGF0dXMuaCAqLywKKwkJCQk1MkRBRDM4RTE5NUExNjRF
MDBGMzA0NjQgLyogVHlwZUxvY2F0aW9uLmggKi8sCiAJCQkJQTc5RTc4MUUxNUVFQ0JBODAwNDdD
ODU1IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCAqLywKIAkJCQlBNzlFNzgxRjE1RUVDQkE4MDA0
N0M4NTUgLyogVW5saW5rZWRDb2RlQmxvY2suaCAqLywKIAkJCQlCNTlGODkzODE4OTFBREI1MDBE
NUNDREMgLyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCkBAIC01ODk1LDYgKzU5
MTgsMTAgQEAKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8q
IEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJEQUQzOEYxOTVBMTY0RTAwRjMw
NDY0IC8qIFR5cGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJGQjcyMTUxOTUzNzYw
QzAwQkI2MTJFIC8qIFR5cGVTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyRkI3MTNBMTk1Mzc0
QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUyRkI3MTM4MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1ODQwMzIwMThCRkZCRTEwMDVBMDgxMSAvKiBJbnNwZWN0b3JBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2lu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1MjQ4RjkxOTE0NDJEOTAwQjdGREU0IC8qIFZhcmlh
YmxlV2F0Y2hwb2ludFNldElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzYxMCw2ICs3NjM3
LDcgQEAKIAkJCQkwRjQ4NTMyMTE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNjM5NDg0MTVFNDgxMTgwMDZBNTk3QyAvKiBERkdBcnJheU1v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEOUEyOTQxN0EwQkM3NDAwRUUyNjE4IC8qIERG
R0F0VGFpbEFic3RyYWN0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTJGQjcxMzkxOTUz
NzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjY2NkVDNjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNzE0Q0E0MTZFQTkyRjAwMEYzRUJFQiAvKiBERkdCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YyMTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY0NSw2
ICs3NjczLDcgQEAKIAkJCQlBNzhBOTc3NDE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmlu
YWxpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OEE5Nzc2MTc5NzM4QjgwMDlERjc0NCAv
KiBERkdGaW5hbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDMTUxNTFDNUQ0RDAw
Q0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTJGQjcyMTQx
OTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMz
OTYxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZFQzlEQzcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtNzcyNyw2ICs3NzU2LDcgQEAKIAkJCQlBN0I0OEY0OTBFRTg5MzZGMDBE
Q0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkRC
NjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRp
b25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyRkI3MTM3MTk1Mzc0QjgwMEJCNjEy
RSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwMzMyQzAxOEFE
RkFFMTAwNUY5NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QjEwNTg1MTY3NTQ4MEYwMEY4QUI2RSAvKiBFeGl0S2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkVBMEExQzE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgkocmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEz
LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc29sdmVfc2NvcGUiLCAibGVuZ3Ro
IiA6IDYgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9mcm9tX3Njb3BlIiwgImxl
bmd0aCIgOiA4IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fc2NvcGUiLCAi
bGVuZ3RoIiA6IDcgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF90b19zY29wZV93
aXRoX3Byb2ZpbGUiLCAibGVuZ3RoIiA6IDggfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3B1c2hfd2l0aF9zY29wZSIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcG9wX3Njb3BlIiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9wdXNoX25hbWVfc2NvcGUiLCAibGVuZ3RoIiA6IDQgfSwKQEAgLTEyMiw3ICsxMjMsOCBA
QAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVidWciLCAibGVuZ3RoIiA6IDMgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Byb2ZpbGVfd2lsbF9jYWxsIiwgImxlbmd0aCIgOiAy
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX2RpZF9jYWxsIiwgImxlbmd0
aCIgOiAyIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9lbmQiLCAibGVuZ3RoIiA6IDIg
fQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0aCIgOiAyIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSIs
ICJsZW5ndGgiIDogNCB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCShyZXZpc2lvbiAx
NzAzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOgogICAgIGNhc2Ug
b3BfcHJvZmlsZV93aWxsX2NhbGw6CiAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOgorICAg
IGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CiAgICAgY2FzZSBvcF90
aHJvdzoKICAgICBjYXNlIG9wX3B1c2hfd2l0aF9zY29wZToKICAgICBjYXNlIG9wX2VuZDoKQEAg
LTEwNSw2ICsxMDYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAg
Y2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgIGNhc2Ugb3BfcHV0X3RvX3Nj
b3BlOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CkBAIC0yNDks
NiArMjUxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbAogICAg
IGNhc2Ugb3BfcHVzaF9uYW1lX3Njb3BlOgogICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgog
ICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgorICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhf
cHJvZmlsZToKICAgICBjYXNlIG9wX3BvcF9zY29wZToKICAgICBjYXNlIG9wX2VuZDoKICAgICBj
YXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgpAQCAtMjg3LDYgKzI5MCw3IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmwKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGly
ZWN0OgogICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OgogICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJn
dW1lbnRzOgorICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CiAg
ICAgY2FzZSBvcF90b3VjaF9lbnRyeToKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bj
b2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVf
RVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdX
b3JrbGlzdC5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQu
aCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgpAQCAtNDcsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50
cnlwb2ludC5oIgorI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9seW1v
cnBoaWNHZXRCeUlkTGlzdC5oIgpAQCAtODQzLDYgKzg0NSwxNCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6
IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
KytpdDsKKyAgICAgICAgICAgICsraXQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRl
bGl0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25v
dDogewogICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
bm90Iik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NjksNiArMTQ3OSw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICAgICAgb3BlcmFuZCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZV93aXRo
X3Byb2ZpbGU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCkt
PnUub3BlcmFuZDsKQEAgLTE0NzcsNiArMTQ4OCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUoCiAgICAgICAgICAgICArK2l0OyAvLyBTdHJ1Y3R1cmUKICAgICAgICAgICAgIGludCBv
cGVyYW5kID0gKCsraXQpLT51Lm9wZXJhbmQ7IC8vIE9wZXJhbmQKICAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF90b19zY29wZSIpOwor
ICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlKQor
ICAgICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
LCAldTwlc3wlcz4sIDxzdHJ1Y3R1cmU+LCAlZCIsCiAgICAgICAgICAgICAgICAgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCByZWdp
c3Rlck5hbWUocjEpLmRhdGEoKSwKICAgICAgICAgICAgICAgICBtb2RlQW5kVHlwZS5vcGVyYW5k
KCksIHJlc29sdmVNb2RlTmFtZShtb2RlQW5kVHlwZS5tb2RlKCkpLCByZXNvbHZlVHlwZU5hbWUo
bW9kZUFuZFR5cGUudHlwZSgpKSwKQEAgLTE4ODAsNiArMTg5Myw3IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgICAgICBj
YXNlIG9wX3B1dF90b19zY29wZTogewogICAgICAgICAgICAgLy8gcHV0X3RvX3Njb3BlIHNjb3Bl
LCBpZCwgdmFsdWUsIFJlc29sdmVNb2RlQW5kVHlwZSwgU3RydWN0dXJlLCBPcGVyYW5kCiAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKTsKQEAgLTE4OTUsOSArMTkwOSw2OCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRF
eGVjdXRhYmxlKiBvCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkKICAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUuc3RydWN0dXJlLnNldCgqdm0oKSwgb3du
ZXJFeGVjdXRhYmxlLCBvcC5zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA2XS51LnBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihvcC5vcGVyYW5kKTsKKwor
ICAgICAgICAgICAgaWYgKHBjWzBdLnUub3Bjb2RlID09IG9wX3B1dF90b19zY29wZV93aXRoX3By
b2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZm9ybWF0IG9mIHRoaXMgaW5zdHJ1Y3Rp
b24gaXM6IHB1dF90b19zY29wZV93aXRoX3Byb2ZpbGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVzb2x2
ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQsIFR5cGVMb2NhdGlvbioKKyAgICAgICAg
ICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gdm0oKS0+bmV4dExvY2F0aW9uKCk7Cisg
ICAgICAgICAgICAgICAgc2l6ZV90IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9wTGVuZ3RoIC0g
MTsKKyAgICAgICAgICAgICAgICBpbnQgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7IAor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwLCBjb2x1bW4gPSAwOworICAgICAgICAg
ICAgICAgIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0
LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKKworICAgICAg
ICAgICAgICAgIGxvY2F0aW9uLT5tX2xpbmUgPSBsaW5lOworICAgICAgICAgICAgICAgIGxvY2F0
aW9uLT5tX2NvbHVtbiA9IGNvbHVtbjsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9zb3Vy
Y2VJRCA9IG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpOworCisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IGhhbmRsZSBvdGhlciB2YWx1ZXMgZm9yIG9wLnR5cGUgaGVyZSwgYW5kIGFsc28g
Y29uc2lkZXIgd2hhdCB0byBkbyB3aGVuIHdlIGNhbid0IHN0YXRpY2FsbHkgZGV0ZXJtaW5lIHRo
ZSBnbG9iYWxJRAorICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IDA7
CisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhcikgCisgICAgICAgICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlID0gb3AuYWN0aXZhdGlvbi0+c3ltYm9sVGFibGUoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2JhbFZhcikKKyAgICAgICAgICAg
ICAgICAgICAgc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5nZXQoKS0+c3ltYm9sVGFibGUo
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoc3ltYm9sVGFibGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFi
bGUtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlh
YmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGlkZW50Lmlt
cGwoKSwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBl
U2V0ID1zeW1ib2xUYWJsZS0+Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQu
aW1wbCgpLCAqdm0oKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxpdHlOb0dsb2JhbElE
RXhpc3RzOworCisgICAgICAgICAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
KCktPmluc2VydE5ld0xvY2F0aW9uKGxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVj
dGlvbnNbaSArIDddLnUubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9wcm9maWxlX3R5cGVz
X3dpdGhfaGlnaF9maWRlbGl0eTogeworCisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUgPSBtX3N5bWJvbFRhYmxlLmdldCgpOworICAgICAgICAgICAgVHlwZUxvY2F0
aW9uKiBsb2NhdGlvbiA9IHZtKCktPm5leHRMb2NhdGlvbigpOworICAgICAgICAgICAgc2l6ZV90
IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9wTGVuZ3RoIC0gMTsKKyAgICAgICAgICAgIGludCBk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsgCisgICAgICAgICAgICB1bnNpZ25lZCBsaW5l
ID0gMCwgY29sdW1uID0gMDsKKyAgICAgICAgICAgIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2Rl
T2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwg
bGluZSwgY29sdW1uKTsKKworICAgICAgICAgICAgaW50IGhhc0dsb2JhbElERmxhZyA9IHBjWzNd
LnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlmIChoYXNHbG9iYWxJREZsYWcpIHsKKyAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsK
KyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFi
bGUtPnVuaXF1ZUlERm9yUmVnaXN0ZXIobG9ja2VyLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCks
ICp2bSgpKTsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ID0gc3lt
Ym9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JSZWdpc3Rlcihsb2NrZXIsIHZpcnR1YWxSZWdpc3Rl
ci5vZmZzZXQoKSwgKnZtKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
bG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlz
dHM7CiAgICAgICAgICAgICAKKworICAgICAgICAgICAgbG9jYXRpb24tPm1fbGluZSA9IGxpbmU7
CisgICAgICAgICAgICBsb2NhdGlvbi0+bV9jb2x1bW4gPSBjb2x1bW47CisgICAgICAgICAgICBs
b2NhdGlvbi0+bV9zb3VyY2VJRCA9IG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpOworCisg
ICAgICAgICAgICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+aW5zZXJ0TmV3TG9j
YXRpb24obG9jYXRpb24pOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyAyXS51LmxvY2F0
aW9uID0gbG9jYXRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKICAgICAg
ICAgY2FzZSBvcF9jYXB0dXJlZF9tb3Y6CiAgICAgICAgIGNhc2Ugb3BfbmV3X2NhcHR1cmVkX2Z1
bmM6IHsKICAgICAgICAgICAgIGlmIChwY1szXS51LmluZGV4ID09IFVJTlRfTUFYKSB7CkBAIC0y
MzQzLDYgKzI0MTYsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNl
IG9wX2dldF9mcm9tX3Njb3BlOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0
aF9wcm9maWxlOgogICAgICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKICAgICAgICAg
ICAgICAgICBSZXNvbHZlTW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUgPQogICAgICAgICAgICAgICAg
ICAgICBSZXNvbHZlTW9kZUFuZFR5cGUoY3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtOTQzLDYgKzk0Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNL
bm93blRvQmVMaXZlRHVyaW5nR0MoKTsgLy8gV2lsbCBvbmx5IHJldHVybiB2YWxpZCByZXN1bHRz
IHdoZW4gY2FsbGVkIGR1cmluZyBHQy4gQXNzdW1lcyB0aGF0IHlvdSd2ZSBhbHJlYWR5IGVzdGFi
bGlzaGVkIHRoYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUgaXMgbGl2ZS4KIAorCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKSBvdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5o
CShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJUeXBlTG9j
YXRpb24uaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJTcGVjaWFsUG9p
bnRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgpAQCAtMTIwLDYgKzEyMSw3IEBAIHN0cnVj
dCBJbnN0cnVjdGlvbiB7CiAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIGJvb2wqIHBy
ZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAgIFRvVGhpc1N0YXR1cyB0b1RoaXNTdGF0dXM7CisgICAg
ICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb247CiAgICAgfSB1OwogICAgICAgICAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlvbi5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2Nh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFR5cGVMb2NhdGlvbl9oCisjZGVm
aW5lIFR5cGVMb2NhdGlvbl9oCisKKyNpbmNsdWRlICJUeXBlU2V0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitlbnVtIEhpZ2hGaWRlbGl0eUdsb2JhbElERmxhZ3MgeworICAgIEhpZ2hGaWRlbGl0
eU5lZWRzVW5pcXVlSURHZW5lcmF0aW9uID0gLTEsCisgICAgSGlnaEZpZGVsaXR5Tm9HbG9iYWxJ
REV4aXN0cyA9IC0yCit9OworCitjbGFzcyBUeXBlTG9jYXRpb24geworICAgICAgICAgICAgICAg
ICAgICAgICAKK3B1YmxpYzoKKyAgICBUeXBlTG9jYXRpb24oKSAKKyAgICAgICAgOiBtX2luc3Ry
dWN0aW9uVHlwZVNldChUeXBlU2V0OjpjcmVhdGUoKSkKKyAgICAgICAgLCBtX2dsb2JhbFR5cGVT
ZXQobnVsbHB0cikKKyAgICB7CisgICAgfQorCisgICAgaW50NjRfdCBtX2dsb2JhbFZhcmlhYmxl
SUQ7CisgICAgaW50cHRyX3QgbV9zb3VyY2VJRDsKKyAgICB1bnNpZ25lZCBtX2xpbmU7CisgICAg
dW5zaWduZWQgbV9jb2x1bW47CisgICAgUmVmUHRyPFR5cGVTZXQ+IG1faW5zdHJ1Y3Rpb25UeXBl
U2V0OworICAgIFJlZlB0cjxUeXBlU2V0PiBtX2dsb2JhbFR5cGVTZXQ7Cit9OworCit9IC8vbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy9UeXBlTG9jYXRpb25faApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHJldmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAzLDYgKzEwMDMs
MTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKAogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChzcmMtPmluZGV4KCkpOwogICAgIGlmIChjYXB0dXJlTW9kZSA9PSBJ
c0NhcHR1cmVkKQogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQod2F0Y2hhYmxlVmFyaWFi
bGUoZHN0LT5pbmRleCgpKSk7CisKKyAgICBpZiAoIWRzdC0+aXNUZW1wb3JhcnkoKSAmJiBpc1By
b2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICBlbWl0UHJvZmlsZVR5cGVz
V2l0aEhpZ2hGaWRlbGl0eShkc3QsIHRydWUpOworCiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAt
MTExMiw2ICsxMTE2LDE4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1
YWwKICAgICByZXR1cm4gZHN0OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJv
ZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJvZmlsZSwg
Ym9vbCBoYXNHbG9iYWxJRCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX3Byb2ZpbGVfdHlwZXNfd2l0
aF9oaWdoX2ZpZGVsaXR5KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVnaXN0ZXJUb1By
b2ZpbGUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsgLy8gcGxhY2Vo
b2xkZXIgZm9yIFR5cGVMb2NhdGlvbgorICAgIC8vIFRoaXMgaXMgYSBmbGFnIGluZGljYXRpbmcg
d2hldGhlciB3ZSBzaG91bGQgdHJhY2sgdGhpcyB2YWx1ZSB0byBpdHMgZ2xvYmFsSUQgb3Igbm90
LgorICAgIGlmIChoYXNHbG9iYWxJRCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDEp
OworICAgIGVsc2UKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworfQorCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29s
IGIpCiB7CiAgICAgcmV0dXJuIGVtaXRMb2FkKGRzdCwganNCb29sZWFuKGIpKTsKQEAgLTEyNTYs
MTMgKzEyNzIsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUbwog
ICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAKICAgICAvLyBwdXRfdG9fc2NvcGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVz
b2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQKLSAgICBlbWl0T3Bjb2RlKG9wX3B1
dF90b19zY29wZSk7CisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
CisgICAgICAgIGVtaXRPcGNvZGUob3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSk7CisgICAg
ZWxzZQorICAgICAgICBlbWl0T3Bjb2RlKG9wX3B1dF90b19zY29wZSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHNjb3BlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
YWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1
ZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFJlc29sdmVNb2RlQW5kVHlw
ZShyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUoKSkub3BlcmFuZCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGlmIChp
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0xMzI5LDYgKzEzNTAsMTAg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworCisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KCkpCisgICAgICAgIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZh
bHVlLCBmYWxzZSk7CisKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTE0MjUsNiArMTQ1MCwx
MCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQodmFsdWUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVBy
b2ZpbGUpOworCisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisg
ICAgICAgIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZhbHVlLCBmYWxzZSk7CisK
ICAgICByZXR1cm4gdmFsdWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE3MDM4
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIGVtaXROb2RlKG4pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9p
ZCBlbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiBkc3QsIGJvb2wp
OworCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVu
dGlmaWVyJik7CkBAIC02NzcsNiArNjc5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
Vk0qIG1fdm07CiAKKyAgICAgICAgYm9vbCBpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0
eSgpIHsgcmV0dXJuIHZtKCktPmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCk7IH0K
KwogICAgICAgICBPcGNvZGVJRCBtX2xhc3RPcGNvZGVJRDsKICNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIHNpemVfdCBtX2xhc3RPcGNvZGVQb3NpdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE3
MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQwLDEzICs3NDAsMTUgQEAgUmVnaXN0ZXJJRCogUG9z
dGZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dAogICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgp
KSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQo
KTsKICAgICAgICAgICAgIGxvY2FsUmVnID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9jYWxSZWcpOwotICAgICAgICB9IGVsc2UgaWYgKGxvY2Fs
LmlzQ2FwdHVyZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8
fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpOwogICAgICAgICAgICAgQVNTRVJUKGRzdCAhPSBsb2NhbFJlZyk7CiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdFNyYyA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VG9OdW1iZXIodGVtcERzdC5nZXQoKSwg
bG9jYWxSZWcpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBEc3RTcmMuZ2V0
KCksIGxvY2FsUmVnKTsKICAgICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHRlbXBE
c3RTcmMuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1By
b2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbFJlZywgdGVtcERzdFNyYy5nZXQo
KSk7CiAgICAgICAgICAgICByZXR1cm4gdGVtcERzdC5nZXQoKTsKICAgICAgICAgfQpAQCAtOTE1
LDEwICs5MTcsMTIgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZQog
ICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGxvY2FsUmVnID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9jYWxS
ZWcpOwotICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkgeworICAgICAgICB9
IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRl
bXBEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdE1vdmUodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcpOwogICAgICAgICAgICAgZW1p
dEluY09yRGVjKGdlbmVyYXRvciwgdGVtcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAg
ICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxv
Y2FsUmVnLCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92
ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CkBA
IC0xNDA3LDYgKzE0MTEsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0
UmVhCiAKIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBKU1Rl
eHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7CiAg
ICAgaWYgKExvY2FsIGxvY2FsID0gZ2VuZXJhdG9yLmxvY2FsKG1faWRlbnQpKSB7CiAgICAgICAg
IGlmIChsb2NhbC5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVh
ZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpOwpAQCAtMTQxNCwxMCArMTQxOSwxMyBAQCBSZWdpc3Rl
cklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkKKyAgICAgICAgICAgIHx8IGdlbmVyYXRvci5p
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpCiAgICAgICAgICAgICB8fCBnZW5lcmF0
b3IubGVmdEhhbmRTaWRlTmVlZHNDb3B5KG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+
aXNQdXJlKGdlbmVyYXRvcikpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVz
dWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRNb3ZlKHJlc3VsdC5nZXQoKSwgbG9jYWwuZ2V0KCkpOwogICAgICAgICAgICAgZW1pdFJlYWRN
b2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgcmVzdWx0LmdldCgpLCByZXN1bHQuZ2V0KCksIG1f
cmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgp
LCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0
b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rp
dm90KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5nZXQoKSwgcmVzdWx0
LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25J
Zk5lZWRlZChkc3QsIHJlc3VsdC5nZXQoKSk7CiAgICAgICAgIH0KQEAgLTE0MjYsNyArMTQzNCw2
IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEIKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKICAg
ICB9CiAKLSAgICBKU1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRl
bnQubGVuZ3RoKCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwg
ZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lk
ZW50KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZy
b21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBU
aHJvd0lmTm90Rm91bmQpOwpAQCAtMTQ0Myw5ICsxNDUwLDExIEBAIFJlZ2lzdGVySUQqIEFzc2ln
blJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9u
bHlFeGNlcHRpb25JZk5lZWRlZCgpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
Tm9kZShkc3QsIG1fcmlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1
cmVkKCkpIHsKKyAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQ
cm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGVtcERzdC5nZXQoKSwgbV9yaWdodCk7CisgICAg
ICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3Zl
KGxvY2FsLmdldCgpLCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0
b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAg
ICB9CkBAIC0xNTQ4LDcgKzE1NTcsOCBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0
Q29kZVNpbmdsCiAgICAgICAgIGlmICghbV9pbml0KQogICAgICAgICAgICAgcmV0dXJuIGxvY2Fs
LmdldCgpOwogCi0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkpIHsKKyAgICAgICAgLy8g
RklYTUU6IE1heWJlIGNhbGwgZW1pdEV4cHJlc3Npb25JbmZvIGhlcmUuCisgICAgICAgIGlmIChs
b2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZp
ZGVsaXR5KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHRl
bXBEc3QuZ2V0KCksIG1faW5pdCk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRN
b3ZlKGxvY2FsLmdldCgpLCB0ZW1wRHN0LmdldCgpKTsKQEAgLTE4NzEsNyArMTg4MSw4IEBAIHZv
aWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgICAgIElkZW50
aWZpZXIgaWRlbnQgPSBzaW1wbGVCaW5kaW5nLT5ib3VuZFByb3BlcnR5KCk7CiAgICAgICAgICAg
ICBMb2NhbCBsb2NhbCA9IGdlbmVyYXRvci5sb2NhbChpZGVudCk7CiAgICAgICAgICAgICBwcm9w
ZXJ0eU5hbWUgPSBsb2NhbC5nZXQoKTsKLSAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lIHx8
IGxvY2FsLmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgSSBlbWl0
IGV4cHJlc3Npb24gaW5mbyBoZXJlPworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwg
bG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hG
aWRlbGl0eSgpKQogICAgICAgICAgICAgICAgIGdvdG8gZ2VuZXJpY0JpbmRpbmc7CiAgICAgICAg
ICAgICBleHBlY3RlZFN1YnNjcmlwdCA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IucHVzaE9w
dGltaXNlZEZvckluKGV4cGVjdGVkU3Vic2NyaXB0LmdldCgpLCBpdGVyLmdldCgpLCBpLmdldCgp
LCBwcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJl
dmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiSGVhcFN0YXRp
c3RpY3MuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJJbmNyZW1l
bnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCkBAIC05NjksNiArOTcwLDggQEAgdm9pZCBIZWFwOjpjb2xsZWN0KEhlYXBP
cGVyYXRpb24gY29sbGVjdAogI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0
YUxvZ0YoIkpTQyBHQyBzdGFydGluZyBjb2xsZWN0aW9uLlxuIik7CiAjZW5kaWYKKyAgICBpZiAo
dm0oKS0+aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgdm0oKS0+
aGlnaEZpZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coZmFsc2UsICJHQyIpOwog
ICAgIAogICAgIGRvdWJsZSBiZWZvcmUgPSAwOwogICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAJKHJldmlzaW9uIDE3MDM4NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OnJ1bihFcnJvclN0cgogewogfQogCit2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5faWQs
IGludCBpbl9zdGFydExpbmUsIGludCBpbl9zdGFydENvbHVtbiwgaW50IGluX2VuZExpbmUsIGlu
dCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5cGVzKSAKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxWTSgpOworICAgIFN0cmluZyB0eXBlcyh2bS5nZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShp
bl9zdGFydExpbmUsIGluX3N0YXJ0Q29sdW1uLCBpbl9lbmRMaW5lLCBpbl9lbmRDb2x1bW4sIGlu
X3ZhcmlhYmxlTmFtZSwgaW5faWQpKTsKKyAgICAqb3V0X3R5cGVzID0gdHlwZXM7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBj
b25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9y
Pj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGlu
dGVybmFsUHJvcGVydGllcykgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VPYmplY3RHcm91cChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApIG92
ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcqKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgaW5faWQsIGludCBpbl9zdGFydExpbmUsIGludCBpbl9zdGFydENvbHVtbiwgaW50IGluX2Vu
ZExpbmUsIGludCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5cGVzKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2V0U2NyaXB0RGVidWdTZXJ2ZXIoU2NyaXB0RGVidWdTZXJ2ZXIqIHNjcmlwdERl
YnVnU2VydmVyKSB7IG1fc2NyaXB0RGVidWdTZXJ2ZXIgPSBzY3JpcHREZWJ1Z1NlcnZlcjsgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL1J1bnRpbWUuanNvbgkocmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE5
Niw2ICsxOTYsMjEgQEAKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIs
CiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgcmVwb3J0aW5nIG9mIGV4ZWN1
dGlvbiBjb250ZXh0cyBjcmVhdGlvbi4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJuYW1lIjogImdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZSIsCisgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhcmlh
YmxlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJWYXJpYWJsZSB3ZSB3
YW50IHR5cGUgaW5mcm9tYXRpb24gZm9yLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InNvdXJjZUlEIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogInNvdXJjZUlEIHVu
aXF1ZWx5IGlkZW50aWZ5aW5nIGEgc2NyaXB0IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic3RhcnRMaW5lIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJzdGFydCBs
aW5lIGZvciB2YXJpYWJsZSBuYW1lIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3Rh
cnRDb2x1bW4iLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogInN0YXJ0IGNvbHVt
biBmb3IgdmFyaWFibGUgbmFtZSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuZExp
bmUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogImVuZCBsaW5lIGZvciB2YXJp
YWJsZSBuYW1lIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5kQ29sdW1uIiwgInR5
cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJlbmQgY29sdW1uIGZvciB2YXJpYWJsZSBu
YW1lIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ0eXBlcyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlv
biI6ICJUeXBlcyBmb3IgcmVxdWVzdGVkIHZhcmlhYmxlLiIgfQorICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGRldGFpbGVkIGluZm9ybXRhdGlvbiBv
biBnaXZlbiBmdW5jdGlvbi4iCiAgICAgICAgIH0KICAgICBdLAogICAgICJldmVudHMiOiBbCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHJldmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJF
cnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRF
eGNlcHRpb25zLmgiCkBAIC0xNjcsNyArMTY4LDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBMTEludCB7CiAgICAgICAgIEV4ZWNTdGF0ZSogX19yY2ZfZXhlYyA9IChleGVjQ2FsbGVlKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08ocGMs
IF9fcmNmX2V4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGls
ZSAoZmFsc2UpCi0gICAgCiAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Ry
YWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hl
cmUsIGludCBvcGVyYW5kKQogewpAQCAtNTMzLDYgKzUzMywxNSBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbmV3X3JlZ2V4CiAgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6
Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgp
LCByZWdFeHApKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVf
dHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVHlw
ZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHBjWzJdLnUubG9jYXRpb247CisgICAgSlNWYWx1ZSB2YWwg
PSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICB2bS5oaWdoRmlkZWxpdHlMb2coKS0+cmVj
b3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24odmFsLCBsb2NhdGlvbik7CisgICAgTExJTlRf
RU5EX0lNUEwoKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hh
c19pbnN0YW5jZSkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTQyNiw5ICsxNDM1LDggQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tXwogICAgIExMSU5UX1JFVFVS
TihzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCitzdGF0aWMgSlNPYmplY3QqIHB1dFRvU2NvcGVDb21t
b24oRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIFZNJiB2bSkKIHsKLSAgICBMTElO
VF9CRUdJTigpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNb
Ml0udS5vcGVyYW5kKTsKICAgICBKU09iamVjdCogc2NvcGUgPSBqc0Nhc3Q8SlNPYmplY3QqPihM
TElOVF9PUCgxKS5qc1ZhbHVlKCkpOwpAQCAtMTQzNiw3ICsxNDQ0LDcgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogICAgIFJlc29sdmVNb2RlQW5kVHlwZSBtb2Rl
QW5kVHlwZSA9IFJlc29sdmVNb2RlQW5kVHlwZShwY1s0XS51Lm9wZXJhbmQpOwogCiAgICAgaWYg
KG1vZGVBbmRUeXBlLm1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQgJiYgIXNjb3BlLT5oYXNQcm9w
ZXJ0eShleGVjLCBpZGVudCkpCi0gICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVVuZGVmaW5l
ZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
c2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJs
ZSgpLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CkBAIC0xNDUwLDYgKzE0
NTgsMjggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogICAgICAg
ICB9CiAgICAgfQogCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBK
U09iamVjdCogZXJyb3IgPSBwdXRUb1Njb3BlQ29tbW9uKGV4ZWMsIHBjLCB2bSk7CisgICAgaWYg
KGVycm9yKQorICAgICAgICBMTElOVF9USFJPVyhlcnJvcik7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9m
aWxlKQoreworICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhpcyBpbnN0cnVjdGlvbiBpcyB0aGUgc2Ft
ZSBhcyBwdXRfdG9fc2NvcGUgd2l0aCBhIFR5cGVMb2NhdGlvbiBhcHBlbmRlZDogcHV0X3RvX3Nj
b3BlX3dpdGhfcHJvZmlsZSBzY29wZSwgaWQsIHZhbHVlLCBSZXNvbHZlTW9kZUFuZFR5cGUsIFN0
cnVjdHVyZSwgT3BlcmFuZCwgVHlwZUxvY2F0aW9uKgorICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNPYmplY3QqIGVycm9yID0gcHV0VG9TY29wZUNvbW1vbihleGVjLCBwYywgdm0pOworICAgIGlm
IChlcnJvcikKKyAgICAgICAgTExJTlRfVEhST1coZXJyb3IpOworICAgIFR5cGVMb2NhdGlvbiog
bG9jYXRpb24gPSBwY1s3XS51LmxvY2F0aW9uOworICAgIEpTVmFsdWUgdmFsID0gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCk7CisgICAgdm0uaGlnaEZpZGVsaXR5TG9nKCktPnJlY29yZFR5cGVJbmZv
cm1hdGlvbkZvckxvY2F0aW9uKHZhbCwgbG9jYXRpb24pOwogICAgIExMSU5UX0VORCgpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAko
cmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsOCBAQCBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhCiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9nZXRfZnJvbV9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF90b19zY29wZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGUpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSk7CiBleHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihW
TSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShMTElOVF9DX0xP
T1ApCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92
bV9lbnRyeShWTSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNp
b24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMyLDMgKzEyMzIsMTEgQEAgZW5kCiBfbGxp
bnRfb3BfaW5pdF9nbG9iYWxfY29uc3Rfbm9wOgogICAgIGRpc3BhdGNoKDUpCiAKK19sbGludF9v
cF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSkKKyAgICBkaXNw
YXRjaCg0KQorCitfbGxpbnRfb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3RvX3Nj
b3BlX3dpdGhfcHJvZmlsZSkKKyAgICBkaXNwYXRjaCg4KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSGlnaEZp
ZGVsaXR5TG9nLmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUg
IlR5cGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCisKK25hbWVz
cGFjZSBKU0MgeworCitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisKK3ZvaWQg
SGlnaEZpZGVsaXR5TG9nOjppbml0aWFsaXplSGlnaEZpZGVsaXR5TG9nKCkKK3sKKyAgICBBU1NF
UlQoIW1fbG9nU3RhcnRQdHIpOworICAgIG1faGlnaEZpZGVsaXR5TG9nU2l6ZSA9IDUwMDAwOwor
ICAgIG1fbG9nU3RhcnRQdHIgPSBuZXcgTG9nRW50cnlbbV9oaWdoRmlkZWxpdHlMb2dTaXplXTsK
KyAgICBtX25leHRCdWZmZXIgPSBuZXcgTG9nRW50cnlbbV9oaWdoRmlkZWxpdHlMb2dTaXplXTsK
KyAgICBtX2N1cnJlbnRPZmZzZXQgPSAwOworfQorCitIaWdoRmlkZWxpdHlMb2c6On5IaWdoRmlk
ZWxpdHlMb2coKQoreworICAgIGRlbGV0ZVtdIG1fbG9nU3RhcnRQdHI7CisgICAgZGVsZXRlW10g
bV9uZXh0QnVmZmVyOworfQorCit2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6cmVjb3JkVHlwZUluZm9y
bWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2LCBUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQorewor
ICAgIEFTU0VSVChtX2xvZ1N0YXJ0UHRyKTsKKyAgICBBU1NFUlQobV9jdXJyZW50T2Zmc2V0IDwg
bV9oaWdoRmlkZWxpdHlMb2dTaXplKTsKKworICAgIExvZ0VudHJ5KiBlbnRyeSA9IG1fbG9nU3Rh
cnRQdHIgKyBtX2N1cnJlbnRPZmZzZXQ7CisKKyAgICBlbnRyeS0+bG9jYXRpb24gPSBsb2NhdGlv
bjsKKyAgICBlbnRyeS0+dmFsdWUgPSB2OworICAgIGVudHJ5LT5zdHJ1Y3R1cmUgPSAodi5pc0Nl
bGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpIDogbnVsbHB0cik7CisKKyAgICBtX2N1cnJl
bnRPZmZzZXQgKz0gMTsKKyAgICBpZiAobV9jdXJyZW50T2Zmc2V0ID09IG1faGlnaEZpZGVsaXR5
TG9nU2l6ZSkKKyAgICAgICAgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyh0cnVlLCAiTG9nIEZ1bGwi
KTsKK30KKwordm9pZCBIaWdoRmlkZWxpdHlMb2c6OnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coYm9v
bCBhc3luY2hyb25vdXNseSwgU3RyaW5nIHJlYXNvbikKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBv
bmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIGV4ZWN1dGlvbiB0aHJlYWQuCisgICAgaWYgKCFt
X2N1cnJlbnRPZmZzZXQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCInIik7CisKKyAgICBCeXRl
U3BpbkxvY2tlciogbG9ja2VyID0gbmV3IEJ5dGVTcGluTG9ja2VyKG1fbG9jayk7CisgICAgVGhy
ZWFkRGF0YSogZGF0YSA9IG5ldyBUaHJlYWREYXRhOworICAgIGRhdGEtPm1fcHJvY2Nlc3NMb2dU
b09mZnNldCA9IG1fY3VycmVudE9mZnNldDsKKyAgICBkYXRhLT5tX3Byb2Nlc3NMb2dQdHIgPSBt
X2xvZ1N0YXJ0UHRyOworICAgIGRhdGEtPm1fbG9ja2VyID0gbG9ja2VyOworCisgICAgbV9jdXJy
ZW50T2Zmc2V0ID0gMDsKKyAgICBMb2dFbnRyeSogdGVtcCA9IG1fbG9nU3RhcnRQdHI7CisgICAg
bV9sb2dTdGFydFB0ciA9IG1fbmV4dEJ1ZmZlcjsKKyAgICBtX25leHRCdWZmZXIgPSB0ZW1wOwor
ICAgIAorICAgIGlmIChhc3luY2hyb25vdXNseSkKKyAgICAgICAgY3JlYXRlVGhyZWFkKGFjdHVh
bGx5UHJvY2Vzc0xvZ1RocmVhZEZ1bmN0aW9uLCBkYXRhLCAiUHJvY2Vzc0hpZ2hGaWRlbGl0eUxv
ZyIpOworICAgIGVsc2UgCisgICAgICAgIGFjdHVhbGx5UHJvY2Vzc0xvZ1RocmVhZEZ1bmN0aW9u
KGRhdGEpOworfQorCit2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6YWN0dWFsbHlQcm9jZXNzTG9nVGhy
ZWFkRnVuY3Rpb24odm9pZCogYXJnKQoreworICAgIGRvdWJsZSBiZWZvcmUgID0gY3VycmVudFRp
bWVNUygpOworICAgIFRocmVhZERhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxUaHJlYWREYXRhKj4o
YXJnKTsKKyAgICBMb2dFbnRyeSogZW50cnkgPSBkYXRhLT5tX3Byb2Nlc3NMb2dQdHI7OworICAg
IHNpemVfdCBwcm9jZXNzTG9nVG9PZmZzZXQgPSBkYXRhLT5tX3Byb2NjZXNzTG9nVG9PZmZzZXQ7
IAorICAgIHNpemVfdCBpID0gMDsKKyAgICB3aGlsZSAoaSA8IHByb2Nlc3NMb2dUb09mZnNldCkg
eworICAgICAgICAvL0xvZ0VudHJ5KiBlbnRyeSA9ICpwdHI7CisgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gZW50cnktPnN0cnVjdHVyZSA/IGVudHJ5LT5zdHJ1Y3R1cmUgOiBudWxscHRy
OworICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlOyAKKyAgICAgICAgaWYgKHN0
cnVjdHVyZSkKKyAgICAgICAgICAgIHNoYXBlID0gc3RydWN0dXJlLT50b1N0cnVjdHVyZVNoYXBl
KCk7CisgICAgICAgIGlmIChlbnRyeS0+bG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCkKKyAgICAg
ICAgICAgIGVudHJ5LT5sb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5hZGRUeXBlRm9yVmFsdWUo
ZW50cnktPnZhbHVlLCBzaGFwZSk7CisgICAgICAgIGVudHJ5LT5sb2NhdGlvbi0+bV9pbnN0cnVj
dGlvblR5cGVTZXQtPmFkZFR5cGVGb3JWYWx1ZShlbnRyeS0+dmFsdWUsIHNoYXBlKTsKKyAgICAg
ICAgZW50cnkrKzsKKyAgICAgICAgaSsrOworICAgIH0KKworICAgIGRlbGV0ZSBkYXRhLT5tX2xv
Y2tlcjsKKyAgICBkZWxldGUgZGF0YTsKKyAgICBkb3VibGUgYWZ0ZXIgPSBjdXJyZW50VGltZU1T
KCk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2dGKCJQcm9jZXNzIGxvZyAnJWYn
IG1zXG4iLCBhZnRlciAtIGJlZm9yZSk7Cit9CisKK30gLy9uYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxv
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIaWdoRmlkZWxpdHlMb2dfaAorI2Rl
ZmluZSBIaWdoRmlkZWxpdHlMb2dfaAorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgor
I2luY2x1ZGUgPHd0Zi9CeXRlU3BpbkxvY2suaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IFR5cGVMb2NhdGlvbjsKKworY2xhc3MgSGlnaEZpZGVsaXR5TG9nIHsKKworcHVibGljOgorICAg
IHN0cnVjdCBMb2dFbnRyeSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgSlNWYWx1ZSB2YWx1
ZTsKKyAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbjsgCisgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlOworICAgIH07CisKKyAgICBIaWdoRmlkZWxpdHlMb2coKQorICAgICAgICA6IG1f
bG9nU3RhcnRQdHIoMCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2co
KTsKKyAgICB9CisKKyAgICB+SGlnaEZpZGVsaXR5TG9nKCk7CisKKyAgICB2b2lkIHJlY29yZFR5
cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9uKEpTVmFsdWUgdiwgVHlwZUxvY2F0aW9uKik7CisgICAg
dm9pZCBwcm9jZXNzSGlnaEZpZGVsaXR5TG9nKGJvb2wgYXN5bmNocm9ub3VzbHkgPSBmYWxzZSwg
U3RyaW5nID0gIiIpOworCitwcml2YXRlOgorICAgIHZvaWQgaW5pdGlhbGl6ZUhpZ2hGaWRlbGl0
eUxvZygpOworICAgIHN0YXRpYyB2b2lkIGFjdHVhbGx5UHJvY2Vzc0xvZ1RocmVhZEZ1bmN0aW9u
KHZvaWQqKTsKKworICAgIHVuc2lnbmVkIG1faGlnaEZpZGVsaXR5TG9nU2l6ZTsKKyAgICBzaXpl
X3QgbV9jdXJyZW50T2Zmc2V0OworICAgIExvZ0VudHJ5KiBtX2xvZ1N0YXJ0UHRyOworICAgIExv
Z0VudHJ5KiBtX25leHRCdWZmZXI7CisKKyAgICBCeXRlU3BpbkxvY2sgbV9sb2NrOworCisgICAg
c3RydWN0IFRocmVhZERhdGEgeworICAgICAgICBwdWJsaWM6CisgICAgICAgIExvZ0VudHJ5KiBt
X3Byb2Nlc3NMb2dQdHI7CisgICAgICAgIHNpemVfdCBtX3Byb2NjZXNzTG9nVG9PZmZzZXQ7Cisg
ICAgICAgIEJ5dGVTcGluTG9ja2VyKiBtX2xvY2tlcjsKKyAgICB9OworfTsKKworfSAvL25hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vSGlnaEZpZGVsaXR5TG9nX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKKworI2lu
Y2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworCitTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
OjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lICwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25z
dCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpCit7CisgICAgU3RyaW5n
IGdsb2JhbCA9IGdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHN0YXJ0TGluZSwgc3Rh
cnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7Cisg
ICAgaWYgKCFnbG9iYWwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZ2xvYmFsOworICAgIAor
ICAgIHJldHVybiBnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHN0YXJ0TGluZSwgc3Rh
cnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7Cit9
CisKK1dURjo6U3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0R2xvYmFsVHlwZXNG
b3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCwgdW5zaWduZWQs
IHVuc2lnbmVkLCBjb25zdCBXVEY6OlN0cmluZyYsIGludHB0cl90IHNvdXJjZUlEKQoreworICAg
IGF1dG8gaXRlckxvY2F0aW9uTWFwID0gbV9nbG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXAuZmlu
ZChnZXRMb2NhdGlvbkJhc2VkSGFzaChzb3VyY2VJRCwgc3RhcnRMaW5lKSk7CisgICAgaWYgKGl0
ZXJMb2NhdGlvbk1hcCA9PSBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcC5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuICIiOworCisgICAgYXV0byBpdGVySURNYXAgPSBtX2dsb2JhbElETWFwLmZp
bmQoaXRlckxvY2F0aW9uTWFwLT5zZWNvbmQpOworICAgIGlmIChpdGVySURNYXAgPT0gbV9nbG9i
YWxJRE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuICIiOworCisgICAgcmV0dXJuIGl0ZXJJRE1h
cC0+c2Vjb25kLT5zZWVuVHlwZXMoKTsKK30KKworV1RGOjpTdHJpbmcgSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVyOjpnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0
TGluZSwgdW5zaWduZWQgLCB1bnNpZ25lZCAsIHVuc2lnbmVkICwgY29uc3QgV1RGOjpTdHJpbmcm
ICwgaW50cHRyX3Qgc291cmNlSUQpCit7CisgICAgYXV0byBpdGVyID0gbV9nbG9iYWxMb2NhdGlv
bk1hcC5maW5kKGdldExvY2F0aW9uQmFzZWRIYXNoKHNvdXJjZUlELCBzdGFydExpbmUpKTsKKyAg
ICBhdXRvIGVuZCA9IG1fZ2xvYmFsTG9jYXRpb25NYXAuZW5kKCk7CisgICAgaWYgKGl0ZXIgPT0g
ZW5kKQorICAgICAgICByZXR1cm4gICIiOworCisgICAgcmV0dXJuIGl0ZXItPnNlY29uZC0+c2Vl
blR5cGVzKCk7Cit9CisKK3ZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjppbnNlcnROZXdM
b2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQoreworICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBkYXRhTG9nRigiUmVnaXN0ZXJpbmcgbG9jYXRpb246OiBsaW5lOiV1LCBjb2x1bW46JXVc
biIsIGxvY2F0aW9uLT5tX2xpbmUsIGxvY2F0aW9uLT5tX2NvbHVtbik7CisKKyAgICBMb2NhdGlv
bktleSBrZXkoZ2V0TG9jYXRpb25CYXNlZEhhc2gobG9jYXRpb24tPm1fc291cmNlSUQsIGxvY2F0
aW9uLT5tX2xpbmUpKTsKKworICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEICE9
IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHMpIHsgCisgICAgICAgIC8vIEJ1aWxkIHRoZSBt
YXBwaW5nIHJlbGF0aW9uc2hpcHMgTWFwMTprZXk9Pmdsb2JhbElkLCBNYXAyOmdsb2JhbElEPT5U
eXBlU2V0IAorICAgICAgICBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcFtrZXldID0gbG9j
YXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRDsKKyAgICAgICAgbV9nbG9iYWxJRE1hcFtsb2NhdGlv
bi0+bV9nbG9iYWxWYXJpYWJsZUlEXSA9IGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQ7CisgICAg
fQorCisgICAgbV9nbG9iYWxMb2NhdGlvbk1hcFtrZXldID0gbG9jYXRpb24tPm1faW5zdHJ1Y3Rp
b25UeXBlU2V0OworfQorCitMb2NhdGlvbktleSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6Omdl
dExvY2F0aW9uQmFzZWRIYXNoKGludHB0cl90IGlkLCB1bnNpZ25lZCBsaW5lKQoreworICAgIHJl
dHVybiBMb2NhdGlvbktleShpZCwgbGluZSwgMSk7Cit9CisKK30gLy9uYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCisjZGVmaW5lIEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlcl9oCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx1bm9y
ZGVyZWRfbWFwPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
ZXRob2QuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIFR5cGVMb2NhdGlvbjsKKworc3RydWN0IExvY2F0aW9uS2V5IHsKKworcHVi
bGljOgorICAgIExvY2F0aW9uS2V5KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lLCB1
bnNpZ25lZCBjb2x1bW4pIAorICAgICAgICA6IG1fc291cmNlSUQoc291cmNlSUQpCisgICAgICAg
ICwgbV9saW5lKGxpbmUpCisgICAgICAgICwgbV9jb2x1bW4oY29sdW1uKQorCisgICAgeworICAg
IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
bGluZSArIG1fc291cmNlSUQ7CisgICAgfQorCisgICAgLy8gRklYTUU6IEZvciBub3csIHRoaXMg
aXMgYSBoYWNrLiBXZSBkbyB0aGUgZm9sbG93aW5nOiBNYXA6IklEOkxpbmUiID0+IFR5cGVTZXQu
IE9idmlvdXNseSwgdGhpcyBhc3N1bWVzIGFsbCBhc3NpZ25tZW50cyBhcmUgb24gZGlzY3JldGUg
bGluZXMsIHdoaWNoIGlzIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uLgorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBMb2NhdGlvbktleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9zb3VyY2VJRCA9PSBvdGhlci5tX3NvdXJjZUlECisgICAgICAgICAgICAgICAmJiBtX2xp
bmUgPT0gb3RoZXIubV9saW5lOworICAgIH0KKworICAgIGludHB0cl90IG1fc291cmNlSUQ7Cisg
ICAgdW5zaWduZWQgbV9saW5lOworICAgIHVuc2lnbmVkIG1fY29sdW1uOworfTsKKworY2xhc3Mg
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyIHsKKworcHVibGljOgorICAgIFN0cmluZyBnZXRUeXBl
c0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYg
dmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7CisgICAgU3RyaW5nIGdldEdsb2JhbFR5
cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5n
JiB2YXJpYWJsZU5hbWUsIGludHB0cl90IHNvdXJjZUlEKTsKKyAgICBTdHJpbmcgZ2V0TG9jYWxU
eXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmlu
ZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7CisgICAgdm9pZCBpbnNlcnROZXdM
b2NhdGlvbihUeXBlTG9jYXRpb24qKTsKKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIExvY2F0
aW9uS2V5IGdldExvY2F0aW9uQmFzZWRIYXNoKGludHB0cl90LCB1bnNpZ25lZCk7CisKKyAgICB0
eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxMb2NhdGlvbktleSwgUmVmUHRyPFR5cGVTZXQ+LCBI
YXNoTWV0aG9kPExvY2F0aW9uS2V5Pj4gR2xvYmFsTG9jYXRpb25NYXA7IAorICAgIHR5cGVkZWYg
c3RkOjp1bm9yZGVyZWRfbWFwPGludDY0X3QsIFJlZlB0cjxUeXBlU2V0Pj4gR2xvYmFsSURNYXA7
IAorICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPExvY2F0aW9uS2V5LCBpbnQ2NF90LCBI
YXNoTWV0aG9kPExvY2F0aW9uS2V5Pj4gR2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwOworCisg
ICAgR2xvYmFsSURNYXAgbV9nbG9iYWxJRE1hcDsKKyAgICBHbG9iYWxMb2NhdGlvbk1hcCBtX2ds
b2JhbExvY2F0aW9uTWFwOworICAgIEdsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcCBtX2dsb2Jh
bExvY2F0aW9uVG9HbG9iYWxJRE1hcDsKK307CisKK30gLy9uYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw3ICsyNzEsOSBA
QCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGRpc2FibGVH
QywgZmFsc2UpIFwKICAgICB2KHVuc2lnbmVkLCBnY01heEhlYXBTaXplLCAwKSBcCiAgICAgdihi
b29sLCByZWNvcmRHQ1BhdXNlVGltZXMsIGZhbHNlKSBcCi0gICAgdihib29sLCBsb2dIZWFwU3Rh
dGlzdGljc0F0RXhpdCwgZmFsc2UpCisgICAgdihib29sLCBsb2dIZWFwU3RhdGlzdGljc0F0RXhp
dCwgZmFsc2UpIFwKKyAgICB2KGJvb2wsIHByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHksIGZh
bHNlKQorICAgIAogCiBjbGFzcyBPcHRpb25zIHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTcwMzg0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA1Miw2ICsxMDUyLDM5IEBAIGJvb2wgU3RydWN0dXJlOjpwcm90b3R5cGVDaGFpbk1h
eUludGVyY2UKICAgICB9CiB9CiAKKworUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0
dXJlOjp0b1N0cnVjdHVyZVNoYXBlKCkKK3sKKyAgICBWZWN0b3I8U3RydWN0dXJlKiwgOD4gc3Ry
dWN0dXJlczsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBQcm9wZXJ0eVRhYmxlKiB0
YWJsZTsKKyAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlID0gU3RydWN0dXJlU2hhcGU6
OmNyZWF0ZSgpOworCisgICAgZmluZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24o
c3RydWN0dXJlcywgc3RydWN0dXJlLCB0YWJsZSk7CisgICAgCisgICAgaWYgKHRhYmxlKSB7Cisg
ICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS0+YmVnaW4oKTsKKyAg
ICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGFibGUtPmVuZCgpOworCisgICAg
ICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgc2hhcGUtPmFkZFBy
b3BlcnR5KGl0ZXItPmtleSk7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9jay51
bmxvY2soKTsKKyAgICB9CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gc3RydWN0dXJlcy5z
aXplKCk7IGktLTspIHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVz
W2ldOworICAgICAgICBpZiAoIXN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cykKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIHNoYXBlLT5hZGRQcm9wZXJ0eShzdHJ1Y3R1cmUtPm1f
bmFtZUluUHJldmlvdXMuZ2V0KCkpOworICAgIH0KKworICAgIHNoYXBlLT5tYXJrQXNGaW5hbCgp
OworCisgICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKK30KKwogdm9pZCBTdHJ1Y3R1cmU6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0
aGlzKSwgIjpbIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDE3MDM4NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTAsNiArMzkwLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdHJh
bnNpdGlvbldhdGNocG9pbnRTZXQ7CiAgICAgfQorCisgICAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVT
aGFwZT4gdG9TdHJ1Y3R1cmVTaGFwZSgpOwogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuY3BwCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsMTEg
QEAgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlKFZNJiB2bSkKICAgICAsIG1fY2FwdHVyZUVuZCgw
KQogICAgICwgbV9mdW5jdGlvbkVudGVyZWRPbmNlKENsZWFyV2F0Y2hwb2ludCkKIHsKKyAgICBp
ZiAodm0uaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBtX3Vu
aXF1ZUlETWFwID0gc3RkOjptYWtlX3VuaXF1ZTxVbmlxdWVJRE1hcD4oKTsKKyAgICAgICAgbV9y
ZWdpc3RlclRvVmFyaWFibGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyVG9WYXJpYWJs
ZU1hcD4oKTsKKyAgICAgICAgbV91bmlxdWVUeXBlU2V0TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxV
bmlxdWVUeXBlU2V0TWFwPigpOworICAgIH0KIH0KIAogU3ltYm9sVGFibGU6On5TeW1ib2xUYWJs
ZSgpIHsgfQpAQCAtMTU3LDkgKzE2Miw3MiBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNs
b25lQ2FwdHVyZWROCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHBhcmFtZXRlckNvdW50KCk7
IGktLTspCiAgICAgICAgICAgICByZXN1bHQtPm1fc2xvd0FyZ3VtZW50c1tpXSA9IG1fc2xvd0Fy
Z3VtZW50c1tpXTsKICAgICB9CisKKyAgICBpZiAobV91bmlxdWVJRE1hcCAmJiByZXN1bHQtPm1f
dW5pcXVlSURNYXApIHsKKworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX3Vu
aXF1ZUlETWFwLT5iZWdpbigpOworICAgICAgICAgICAgYXV0byBlbmQgPSBtX3VuaXF1ZUlETWFw
LT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAg
ICAgICAgICAgIHJlc3VsdC0+bV91bmlxdWVJRE1hcC0+c2V0KGl0ZXItPmtleSwgaXRlci0+dmFs
dWUpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBpdGVyID0gbV9y
ZWdpc3RlclRvVmFyaWFibGVNYXAtPmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9IG1f
cmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9
IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yZWdpc3RlclRvVmFyaWFi
bGVNYXAtPnNldChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAg
IHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fdW5pcXVlVHlwZVNldE1hcC0+YmVnaW4oKTsK
KyAgICAgICAgICAgIGF1dG8gZW5kID0gbV91bmlxdWVUeXBlU2V0TWFwLT5lbmQoKTsKKyAgICAg
ICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIHJlc3Vs
dC0+bV91bmlxdWVUeXBlU2V0TWFwLT5zZXQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSk7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitpbnQ2NF90IFN5
bWJvbFRhYmxlOjp1bmlxdWVJREZvclZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXIm
LCBTdHJpbmdJbXBsKiBrZXksIFZNJiB2bSkKK3sKKyAgICBhdXRvIGl0ZXIgPSBtX3VuaXF1ZUlE
TWFwLT5maW5kKGtleSk7CisgICAgYXV0byBlbmQgPSBtX3VuaXF1ZUlETWFwLT5lbmQoKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGVuZCwgaXRlciAhPSBlbmQpOworCisgICAgaW50NjRfdCYgaWQgPSBp
dGVyLT52YWx1ZTsKKyAgICBpZiAoaWQgPT0gSGlnaEZpZGVsaXR5TmVlZHNVbmlxdWVJREdlbmVy
YXRpb24pIHsKKyAgICAgICAgaWQgPSB2bS5nZXROZXh0VW5pcXVlVmFyaWFibGVJRCgpOworICAg
ICAgICBtX3VuaXF1ZVR5cGVTZXRNYXAtPnNldChrZXksIFR5cGVTZXQ6OmNyZWF0ZSgpKTsgLy9t
YWtlIGEgbmV3IGdsb2JhbCB0eXBlc2V0IGZvciB0aGUgSUQKKyAgICB9CisgICAgICAgICAKKyAg
ICByZXR1cm4gaWQ7Cit9CisKK2ludDY0X3QgU3ltYm9sVGFibGU6OnVuaXF1ZUlERm9yUmVnaXN0
ZXIoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBpbnQgcmVnaXN0ZXJJbmRleCwg
Vk0mIHZtKQoreworICAgIGF1dG8gaXRlciA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5maW5k
KHJlZ2lzdGVySW5kZXgpOworICAgIGF1dG8gZW5kID0gbV9yZWdpc3RlclRvVmFyaWFibGVNYXAt
PmVuZCgpOworICAgIEFTU0VSVF9VTlVTRUQoZW5kLCBpdGVyICE9IGVuZCk7CisgICAgcmV0dXJu
IHVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpdGVyLT52YWx1ZS5nZXQoKSwgdm0pOworfQor
CitSZWZQdHI8VHlwZVNldD4gU3ltYm9sVGFibGU6Omdsb2JhbFR5cGVTZXRGb3JSZWdpc3Rlcihj
b25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIGludCByZWdpc3RlckluZGV4LCBWTSYg
dm0pCit7CisgICAgdW5pcXVlSURGb3JSZWdpc3Rlcihsb2NrZXIsIHJlZ2lzdGVySW5kZXgsIHZt
KTsgLy9lbnN1cmUgaXQncyBjcmVhdGVkCisgICAgYXV0byBpdGVyID0gbV9yZWdpc3RlclRvVmFy
aWFibGVNYXAtPmZpbmQocmVnaXN0ZXJJbmRleCk7CisgICAgYXV0byBlbmQgPSBtX3JlZ2lzdGVy
VG9WYXJpYWJsZU1hcC0+ZW5kKCk7CisgICAgQVNTRVJUX1VOVVNFRChlbmQsIGl0ZXIgIT0gZW5k
KTsKKyAgICByZXR1cm4gZ2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaXRlci0+dmFs
dWUuZ2V0KCksIHZtKTsKK30KKworUmVmUHRyPFR5cGVTZXQ+IFN5bWJvbFRhYmxlOjpnbG9iYWxU
eXBlU2V0Rm9yVmFyaWFibGUoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBTdHJp
bmdJbXBsKiBrZXksIFZNJiB2bSkKK3sKKyAgICB1bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwg
a2V5LCB2bSk7CisgICAgcmV0dXJuIG1fdW5pcXVlVHlwZVNldE1hcC0+ZmluZChrZXkpLT52YWx1
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKICNpbmNsdWRlICJK
U09iamVjdC5oIgorI2luY2x1ZGUgIlR5cGVTZXQuaCIKICNpbmNsdWRlICJWYXJpYWJsZVdhdGNo
cG9pbnRTZXQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMu
aD4KQEAgLTMzNiw2ICszMzcsOSBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIFN5bWJvbFRhYmxlRW50
cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxTdHJpbmdJbXBsPj4sIFN5
bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzPiBNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxTdHJpbmdJbXBsPiwgaW50NjRfdD4gVW5pcXVlSURNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxTdHJpbmdJbXBsPiwgUmVmUHRyPFR5cGVTZXQ+PiBVbmlxdWVUeXBlU2V0TWFwOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxTdHJpbmdJbXBsPiwgV1RGOjpJbnRIYXNo
PGludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50Pj4gUmVnaXN0ZXJU
b1ZhcmlhYmxlTWFwOwogCiAgICAgc3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGUoVk0mIHZtKQog
ICAgIHsKQEAgLTQxMyw2ICs0MTcsMTIgQEAgcHVibGljOgogICAgIAogICAgIE1hcDo6QWRkUmVz
dWx0IGFkZChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5LCBjb25z
dCBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSkKICAgICB7CisgICAgICAgIGlmIChtX3VuaXF1ZUlE
TWFwKSB7CisgICAgICAgICAgICAvLyBVc2UgYSBmbGFnIHRvIGluZGljYXRlIHRoYXQgd2UgbmVl
ZCB0byBwcm9kdWNlIGEgdW5pcXVlIElELiBCZWNhdXNlIFZNIGlzIGluIGNoYXJnZSBvZiBjcmVh
dGluZyB1bmlxdWVJRHMsIAorICAgICAgICAgICAgLy8gd2hlbiB1bmlxdWVJRCgpIGlzIGNhbGxl
ZCwgd2UgY2hlY2sgdGhpcyBmbGFnIHRvIHNlZSBpZiB1bmlxdWVJRCBjcmVhdGlvbiBpcyBuZWNl
c3NhcnkuCisgICAgICAgICAgICBtX3VuaXF1ZUlETWFwLT5zZXQoa2V5LCBIaWdoRmlkZWxpdHlO
ZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7IAorICAgICAgICAgICAgbV9yZWdpc3RlclRvVmFyaWFi
bGVNYXAtPnNldChlbnRyeS5nZXRJbmRleCgpLCBrZXkpOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBtX21hcC5hZGQoa2V5LCBlbnRyeSk7CiAgICAgfQogICAgIApAQCAtNDI0LDYgKzQzNCwx
MCBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFwOjpBZGRSZXN1bHQgc2V0KGNvbnN0IENvbmN1cnJl
bnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXksIGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVu
dHJ5KQogICAgIHsKKyAgICAgICAgaWYgKG1fdW5pcXVlSURNYXApIHsKKyAgICAgICAgICAgIG1f
dW5pcXVlSURNYXAtPnNldChrZXksIEhpZ2hGaWRlbGl0eU5lZWRzVW5pcXVlSURHZW5lcmF0aW9u
KTsgCisgICAgICAgICAgICBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcC0+c2V0KGVudHJ5LmdldElu
ZGV4KCksIGtleSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fbWFwLnNldChrZXksIGVu
dHJ5KTsKICAgICB9CiAgICAgCkBAIC00NDQsNiArNDU4LDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGNvbnRhaW5zKGxvY2tlciwga2V5KTsKICAgICB9CiAgICAgCisgICAgaW50NjRfdCB1
bmlxdWVJREZvclZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBs
KiBrZXksIFZNJiB2bSk7CisgICAgaW50NjRfdCB1bmlxdWVJREZvclJlZ2lzdGVyKGNvbnN0IENv
bmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgaW50IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSk7Cisg
ICAgUmVmUHRyPFR5cGVTZXQ+IGdsb2JhbFR5cGVTZXRGb3JSZWdpc3Rlcihjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiBsb2NrZXIsIGludCByZWdpc3RlckluZGV4LCBWTSYgdm0pOworICAgIFJl
ZlB0cjxUeXBlU2V0PiBnbG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUoY29uc3QgQ29uY3VycmVudEpJ
VExvY2tlciYgbG9ja2VyLCBTdHJpbmdJbXBsKiBrZXksIFZNJiB2bSk7CisKICAgICBib29sIHVz
ZXNOb25TdHJpY3RFdmFsKCkgeyByZXR1cm4gbV91c2VzTm9uU3RyaWN0RXZhbDsgfQogICAgIHZv
aWQgc2V0VXNlc05vblN0cmljdEV2YWwoYm9vbCB1c2VzTm9uU3RyaWN0RXZhbCkgeyBtX3VzZXNO
b25TdHJpY3RFdmFsID0gdXNlc05vblN0cmljdEV2YWw7IH0KIApAQCAtNDk0LDcgKzUxMywxMCBA
QCBwcml2YXRlOgogICAgIH5TeW1ib2xUYWJsZSgpOwogCiAgICAgTWFwIG1fbWFwOwotICAgIAor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxVbmlxdWVJRE1hcD4gbV91bmlxdWVJRE1hcDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVnaXN0ZXJUb1ZhcmlhYmxlTWFwPiBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1h
cDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlVHlwZVNldE1hcD4gbV91bmlxdWVUeXBlU2V0
TWFwOworCiAgICAgaW50IG1fcGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzOwogICAgIGJvb2wg
bV91c2VzTm9uU3RyaWN0RXZhbDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVNldC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJUeXBlU2V0LmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK1R5cGVTZXQ6OlR5cGVTZXQoKQorICAgIDogbV9zZWVuVHlwZXMoVHlwZU5vdGhp
bmcpCisgICAgLCBtX3N0cnVjdHVyZUhpc3RvcnkobmV3IFZlY3RvcjxSZWZQdHI8U3RydWN0dXJl
U2hhcGU+PikKKyAgICAsIG1fbWlnaHRIYXZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeShm
YWxzZSkKK3sKK30KKworUnVudGltZVR5cGUgVHlwZVNldDo6Z2V0UnVudGltZVR5cGVGb3JWYWx1
ZShKU1ZhbHVlIHYpCit7CisgICAgUnVudGltZVR5cGUgcmV0OworICAgIGlmICh2LmlzRnVuY3Rp
b24oKSkKKyAgICAgICAgcmV0ID0gVHlwZUZ1bmN0aW9uOworICAgIGVsc2UgaWYgKHYuaXNVbmRl
ZmluZWQoKSkKKyAgICAgICAgcmV0ID0gVHlwZVVuZGVmaW5lZDsKKyAgICBlbHNlIGlmICh2Lmlz
TnVsbCgpKQorICAgICAgICByZXQgPSBUeXBlTnVsbDsKKyAgICBlbHNlIGlmICh2LmlzQm9vbGVh
bigpKQorICAgICAgICByZXQgPSBUeXBlQm9vbGVhbjsKKyAgICBlbHNlIGlmICh2LmlzTWFjaGlu
ZUludCgpKQorICAgICAgICByZXQgPSBUeXBlTWFjaGluZUludDsKKyAgICBlbHNlIGlmICh2Lmlz
TnVtYmVyKCkpCisgICAgICAgIHJldCA9IFR5cGVOdW1iZXI7CisgICAgZWxzZSBpZiAodi5pc1N0
cmluZygpKQorICAgICAgICByZXQgPSBUeXBlU3RyaW5nOworICAgIGVsc2UgaWYgKHYuaXNQcmlt
aXRpdmUoKSkKKyAgICAgICAgcmV0ID0gVHlwZVByaW1pdGl2ZTsKKyAgICBlbHNlIGlmICh2Lmlz
T2JqZWN0KCkpCisgICAgICAgIHJldCA9IFR5cGVPYmplY3Q7CisgICAgZWxzZQorICAgICAgICBD
UkFTSCgpOworCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCBUeXBlU2V0OjphZGRUeXBlRm9y
VmFsdWUoSlNWYWx1ZSB2LCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBzaGFwZSkgCit7Cisg
ICAgUnVudGltZVR5cGUgdCA9IGdldFJ1bnRpbWVUeXBlRm9yVmFsdWUodik7CisgICAgbV9zZWVu
VHlwZXMgPSBtX3NlZW5UeXBlcyB8IHQ7CisKKyAgICBpZiAoc2hhcGUpIHsKKyAgICAgICAgbV9z
dHJ1Y3R1cmVIaXN0b3J5LT5hcHBlbmQoc2hhcGUpOworICAgICAgICBtX21pZ2h0SGF2ZUR1cGxp
Y2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBUeXBlU2V0
OjpyZW1vdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KCkgCit7CisgICAgVmVjdG9yPFJl
ZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+KiBuZXdIaXN0b3J5ID0gbmV3IFZlY3RvcjxSZWZQdHI8U3Ry
dWN0dXJlU2hhcGU+PjsKKyAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gY29udGFpbmVyOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LT5zaXplKCk7IGkrKykg
eworICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGEgPSBtX3N0cnVjdHVyZUhpc3Rvcnkt
PmF0KGkpOworICAgICAgICBTdHJpbmcgaGFzaCA9IGEtPnByb3BlcnR5SGFzaCgpOworICAgICAg
ICBhdXRvIGl0ZXIgPSBjb250YWluZXIuZmluZChoYXNoKTsKKyAgICAgICAgaWYgKGl0ZXIgPT0g
Y29udGFpbmVyLmVuZCgpKSB7CisgICAgICAgICAgICBjb250YWluZXIuYWRkKGhhc2gsIHRydWUp
OworICAgICAgICAgICAgbmV3SGlzdG9yeS0+YXBwZW5kKGEpOworICAgICAgICB9CisgICAgfQor
CisgICAgZGVsZXRlIG1fc3RydWN0dXJlSGlzdG9yeTsKKyAgICBtX3N0cnVjdHVyZUhpc3Rvcnkg
PSBuZXdIaXN0b3J5OworICAgIG1fbWlnaHRIYXZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9y
eSA9IGZhbHNlOworfQorCitTdHJpbmcgVHlwZVNldDo6c2VlblR5cGVzKCkgCit7CisgICAgaWYg
KG1fc2VlblR5cGVzID09IFR5cGVOb3RoaW5nKQorICAgICAgICByZXR1cm4gIihVbnJlYWNoZWQg
U3RhdGVtZW50KSI7CisKKyAgICBpZiAobV9taWdodEhhdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVI
aXN0b3J5KQorICAgICAgICByZW1vdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KCk7CisK
KyAgICBTdHJpbmdCdWlsZGVyIHNlZW47CisKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlRnVu
Y3Rpb24pCisgICAgICAgICBzZWVuLmFwcGVuZCgiRnVuY3Rpb24gIik7CisgICAgaWYgKG1fc2Vl
blR5cGVzICYgVHlwZVVuZGVmaW5lZCkKKyAgICAgICAgIHNlZW4uYXBwZW5kKCJVbmRlZmluZWQg
Iik7CisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bGwpCisgICAgICAgICBzZWVuLmFwcGVu
ZCgiTnVsbCAiKTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9vbGVhbikKKyAgICAgICAg
IHNlZW4uYXBwZW5kKCJCb29sZWFuICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVNYWNo
aW5lSW50KQorICAgICAgICAgc2Vlbi5hcHBlbmQoIk1hY2hpbmVJbnQgIik7CisgICAgaWYgKG1f
c2VlblR5cGVzICYgVHlwZU51bWJlcikKKyAgICAgICAgIHNlZW4uYXBwZW5kKCJOdW1iZXIgIik7
CisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZVN0cmluZykKKyAgICAgICAgIHNlZW4uYXBwZW5k
KCJTdHJpbmcgIik7CisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZVByaW1pdGl2ZSkKKyAgICAg
ICAgIHNlZW4uYXBwZW5kKCJQcmltaXRpdmUgIik7CisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlw
ZU9iamVjdCkKKyAgICAgICAgIHNlZW4uYXBwZW5kKCJPYmplY3QgIik7CisKKyAgICBpZiAobV9z
dHJ1Y3R1cmVIaXN0b3J5LT5zaXplKCkpIAorICAgICAgICBzZWVuLmFwcGVuZCgiXG5TdHJ1Y3R1
cmVzOlsgIik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZUhpc3Rvcnkt
PnNpemUoKTsgaSsrKSB7CisgICAgICAgIHNlZW4uYXBwZW5kKG1fc3RydWN0dXJlSGlzdG9yeS0+
YXQoaSktPnN0cmluZ1JlcHJlc2VudGF0aW9uKCkpOworICAgICAgICBzZWVuLmFwcGVuZCgiICIp
OworICAgIH0KKyAgICBpZiAobV9zdHJ1Y3R1cmVIaXN0b3J5LT5zaXplKCkpCisgICAgICAgIHNl
ZW4uYXBwZW5kKCJdIik7CisKKyAgICBpZiAobV9zdHJ1Y3R1cmVIaXN0b3J5LT5zaXplKCkpIHsK
KyAgICAgICAgc2Vlbi5hcHBlbmQoIlxuTFVCOiAiKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoU3Ry
dWN0dXJlU2hhcGU6OmxlYXN0VXBwZXJCb3VuZChtX3N0cnVjdHVyZUhpc3RvcnkpKTsKKyAgICB9
CisKKyAgICByZXR1cm4gc2Vlbi50b1N0cmluZygpOworfQorCit2b2lkIFR5cGVTZXQ6OmR1bXBT
ZWVuVHlwZXMoKQoreworICAgIGRhdGFMb2coc2VlblR5cGVzKCksICJcbiIpOworfQorCitTdHJ1
Y3R1cmVTaGFwZTo6U3RydWN0dXJlU2hhcGUoKQorICAgIDogbV9wcm9wZXJ0eUhhc2gobnVsbHB0
cikKKyAgICAsIG1fZmluYWwoZmFsc2UpCit7Cit9CisKK3ZvaWQgU3RydWN0dXJlU2hhcGU6Om1h
cmtBc0ZpbmFsKCkKK3sKKyAgICBBU1NFUlQoIW1fZmluYWwpOworICAgIG1fZmluYWwgPSB0cnVl
OworfQorCit2b2lkIFN0cnVjdHVyZVNoYXBlOjphZGRQcm9wZXJ0eShSZWZQdHI8U3RyaW5nSW1w
bD4gaW1wbCkKK3sKKyAgICBBU1NFUlQoIW1fZmluYWwpOworICAgIG1fZmllbGRzLnNldChpbXBs
LCB0cnVlKTsKK30KKworU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2goKSAKK3sK
KyAgICBBU1NFUlQobV9maW5hbCk7CisgICAgaWYgKG1fcHJvcGVydHlIYXNoKQorICAgICAgICBy
ZXR1cm4gKm1fcHJvcGVydHlIYXNoOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKCI6Iik7CisgICAgZm9yIChhdXRvIGl0ZXIgPSBtX2ZpZWxkcy5iZWdp
bigpLCBlbmQgPSBtX2ZpZWxkcy5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAg
ICBTdHJpbmcgcHJvcGVydHkgPSBTdHJpbmcoaXRlci0+a2V5KTsKKyAgICAgICAgcHJvcGVydHku
cmVwbGFjZSgiOiIsICJcXDoiKTsgLy8gRW5zdXJlIHRoYXQgaGFzaCh7ImZvbzoiLCAiYmFyIn0p
ICE9IGhhc2goeyJmb28iLCAiOmJhciJ9KSBiZWNhdXNlIHdlJ3JlIHVzaW5nIGNvbG9ucyBhcyBh
IHNlcGFyYXRvciBhbmQgY29sb25zIGFyZSBsZWdhbCBjaGFyYWN0ZXJzIGluIGZpZWxkIG5hbWVz
IGluIEpTLgorICAgICAgICBidWlsZGVyLmFwcGVuZChwcm9wZXJ0eSk7CisgICAgfQorCisgICAg
bV9wcm9wZXJ0eUhhc2ggPSBzdGQ6Om1ha2VfdW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmlu
ZygpKTsKKyAgICByZXR1cm4gKm1fcHJvcGVydHlIYXNoOworfQorCitTdHJpbmcgU3RydWN0dXJl
U2hhcGU6OmxlYXN0VXBwZXJCb3VuZChWZWN0b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4qIHNo
YXBlcykKK3sKKyAgICBpZiAoIXNoYXBlcy0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gIiI7CisK
KyAgICBTdHJpbmdCdWlsZGVyIGx1YjsKKyAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IG9yaWdp
biA9IHNoYXBlcy0+YXQoMCk7CisgICAgbHViLmFwcGVuZCgieyIpOworICAgIGZvciAoYXV0byBp
dGVyID0gb3JpZ2luLT5tX2ZpZWxkcy5iZWdpbigpLCBlbmQgPSBvcmlnaW4tPm1fZmllbGRzLmVu
ZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgIGJvb2wgc2hvdWxkQWRkID0gdHJ1
ZTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDEsIHNpemUgPSBzaGFwZXMtPnNpemUoKTsgaSA8
IHNpemU7IGkrKykgeworICAgICAgICAgICAgLy8gSWYgYWxsIG90aGVyIFNoYXBlcyBoYXZlIHRo
ZSBzYW1lIGZpZWxkIGFzIG9yaWdpbiwgYWRkIGl0IHRvIHRoZSBsZWFzdCB1cHBlciBib3VuZC4K
KyAgICAgICAgICAgIGlmICghc2hhcGVzLT5hdChpKS0+bV9maWVsZHMuY29udGFpbnMoaXRlci0+
a2V5KSkgeworICAgICAgICAgICAgICAgIHNob3VsZEFkZCA9IGZhbHNlOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChzaG91bGRB
ZGQpCisgICAgICAgICAgICBsdWIuYXBwZW5kKFN0cmluZyhpdGVyLT5rZXkuZ2V0KCkpICsgU3Ry
aW5nKCIsICIpKTsKKyAgICB9CisKKyAgICBpZiAobHViLmxlbmd0aCgpID49IDMpCisgICAgICAg
IGx1Yi5yZXNpemUobHViLmxlbmd0aCgpIC0gMik7IC8vIFJlbW92ZSB0aGUgdHJhaWxpbmcgJywg
JworCisgICAgbHViLmFwcGVuZCgifSIpOworICAgIAorICAgIHJldHVybiBsdWIudG9TdHJpbmco
KTsKK30KKworU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbigpCit7
CisgICAgU3RyaW5nQnVpbGRlciByZXByZXNlbnRhdGlvbjsKKyAgICByZXByZXNlbnRhdGlvbi5h
cHBlbmQoInsiKTsKKyAgICBmb3IgKGF1dG8gaXRlciA9IG1fZmllbGRzLmJlZ2luKCksIGVuZCA9
IG1fZmllbGRzLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgIFN0cmluZyBw
cm9wKGl0ZXItPmtleS5nZXQoKSk7CisgICAgICAgIHJlcHJlc2VudGF0aW9uLmFwcGVuZChwcm9w
KTsKKyAgICAgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKCIsICIpOworICAgIH0KKworICAgIGlm
IChyZXByZXNlbnRhdGlvbi5sZW5ndGgoKSA+PSAzKQorICAgICAgICByZXByZXNlbnRhdGlvbi5y
ZXNpemUocmVwcmVzZW50YXRpb24ubGVuZ3RoKCkgLSAyKTsKKworICAgIHJlcHJlc2VudGF0aW9u
LmFwcGVuZCgifSIpOworCisgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uLnRvU3RyaW5nKCk7Cit9
CisKK30gLy9uYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZVNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFR5cGVTZXRfaAor
I2RlZmluZSBUeXBlU2V0X2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1ZhbHVlOwor
CitlbnVtIFJ1bnRpbWVUeXBlIHsKKyAgICBUeXBlTm90aGluZyAgICAgICAgICAgID0gMHgwLAor
ICAgIFR5cGVGdW5jdGlvbiAgICAgICAgICAgPSAweDEsCisgICAgVHlwZVVuZGVmaW5lZCAgICAg
ICAgICA9IDB4MiwKKyAgICBUeXBlTnVsbCAgICAgICAgICAgICAgID0gMHg0LAorICAgIFR5cGVC
b29sZWFuICAgICAgICAgICAgPSAweDgsCisgICAgVHlwZU1hY2hpbmVJbnQgICAgICAgICA9IDB4
MTAsCisgICAgVHlwZU51bWJlciAgICAgICAgICAgICA9IDB4MjAsCisgICAgVHlwZVN0cmluZyAg
ICAgICAgICAgICA9IDB4NDAsCisgICAgVHlwZVByaW1pdGl2ZSAgICAgICAgICA9IDB4ODAsCisg
ICAgVHlwZU9iamVjdCAgICAgICAgICAgICA9IDB4MTAwCit9OworCitjbGFzcyBTdHJ1Y3R1cmVT
aGFwZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0cnVjdHVyZVNoYXBlPiB7CisgICAgZnJpZW5kIGNs
YXNzIFR5cGVTZXQ7CisKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmVTaGFwZSgpOworCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHJ1Y3R1cmVTaGFwZSk7IH0KKyAgICBTdHJpbmcgcHJvcGVydHlIYXNoKCk7CisgICAg
dm9pZCBtYXJrQXNGaW5hbCgpOworICAgIHZvaWQgYWRkUHJvcGVydHkoUmVmUHRyPFN0cmluZ0lt
cGw+KTsKKyAgICBzdGF0aWMgU3RyaW5nIGxlYXN0VXBwZXJCb3VuZChWZWN0b3I8UmVmUHRyPFN0
cnVjdHVyZVNoYXBlPj4qKTsKKyAgICBTdHJpbmcgc3RyaW5nUmVwcmVzZW50YXRpb24oKTsKKwor
cHJpdmF0ZToKKyAgICBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgYm9vbD4gbV9maWVsZHM7
ICAgICAgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFN0cmluZz4gbV9wcm9wZXJ0eUhhc2g7Cisg
ICAgYm9vbCBtX2ZpbmFsOworfTsKKworY2xhc3MgVHlwZVNldCA6IHB1YmxpYyBSZWZDb3VudGVk
PFR5cGVTZXQ+IHsKKworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVTZXQ+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUeXBlU2V0KTsgfQorICAgIFR5cGVTZXQoKTsK
KyAgICB2b2lkIGFkZFR5cGVGb3JWYWx1ZShKU1ZhbHVlIHYsIFBhc3NSZWZQdHI8U3RydWN0dXJl
U2hhcGU+KTsKKyAgICBzdGF0aWMgUnVudGltZVR5cGUgZ2V0UnVudGltZVR5cGVGb3JWYWx1ZShK
U1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgc2VlblR5cGVzKCk7CisKK3By
aXZhdGU6CisgICAgdWludDMyX3QgbV9zZWVuVHlwZXM7CisgICAgdm9pZCBkdW1wU2VlblR5cGVz
KCk7CisgICAgVmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+KiBtX3N0cnVjdHVyZUhpc3Rv
cnk7CisgICAgYm9vbCBtX21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3Rvcnk7Cisg
ICAgdm9pZCByZW1vdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KCk7CisKK307CisKK30g
Ly9uYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvL1R5cGVTZXRfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw4IEBACiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhl
YXBJdGVyYXRpb25TY29wZS5oIgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5o
IgorI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eUxvZy5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJu
VmFsdWUuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxT
d2VlcGVyLmgiCkBAIC04OCw2ICs5MCw3IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
I2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nVGFibGUuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogI2lmIEVOQUJM
RShERkdfSklUKQogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCkBAIC0yMzYsNiArMjM5
LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9j
b2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51
bGxwdHIpCiAgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNy
ZWF0ZSgqdGhpcykpCisgICAgLCBtX25leHRVbmlxdWVWYXJpYWJsZUlEKDEpCiB7CiAgICAgaW50
ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNr
ID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CkBAIC0zMjcsNiArMzMxLDEyIEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAvLyBJbml0aWFsaXplIHRoaXMg
bGFzdCwgYXMgYSBmcmVlIHdheSBvZiBhc3NlcnRpbmcgdGhhdCBWTSBpbml0aWFsaXphdGlvbiBp
dHNlbGYKICAgICAvLyB3b24ndCB1c2UgdGhpcy4KICAgICBtX3R5cGVkQXJyYXlDb250cm9sbGVy
ID0gYWRvcHRSZWYobmV3IFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOworCisgICAgLy8g
RklYTUU6IGNvbmRpdGlvbmFsbHkgYWxsb2NhdGUgdGhpcyBzdHVmZiBiYXNlZCBvbiB3aGV0aGVy
IG9yIG5vdCB0aGUgaW5zcGVjdG9yIGlzIHJ1bm5pbmcgT1IgdGhpcyBmbGFnIGlzIGVuYWJsZWQg
KG5vdCBqdXN0IGlmIHRoZSBmbGFnIGlzIGVuYWJsZWQpLgorICAgIGlmIChPcHRpb25zOjpwcm9m
aWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgbV9oaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcj4oKTsK
KyAgICAgICAgbV9oaWdoRmlkZWxpdHlMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hGaWRlbGl0
eUxvZz4oKTsKKyAgICB9CiB9CiAKIFZNOjp+Vk0oKQpAQCAtOTE5LDYgKzkyOSw0NiBAQCB2b2lk
IFZNOjpzZXRFbmFibGVkUHJvZmlsZXIoTGVnYWN5UHJvZmlsCiAgICAgfQogfQogCitTdHJpbmcg
Vk06OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29u
c3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlSURBc1N0cmluZykK
K3sKKyAgICBpZiAoIWlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAg
IHJldHVybiAiKE5vdCBQcm9maWxpbmcpIjsKKworICAgIGJvb2wgb2theTsKKyAgICBpbnRwdHJf
dCBzb3VyY2VJRCA9IHNvdXJjZUlEQXNTdHJpbmcudG9JbnRQdHJTdHJpY3QoJm9rYXkpOworICAg
IGlmICghb2theSkKKyAgICAgICAgQ1JBU0goKTsKKworICAgIHVwZGF0ZUhpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlU3RhdGUoKTsKKyAgICByZXR1cm4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIt
PmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExp
bmUsIGVuZENvbHVtbiwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7Cit9CisKK3ZvaWQgVk06OnVw
ZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUoKQoreworICAgIGlmICghaXNQcm9maWxp
bmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaGlnaEZp
ZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coZmFsc2UsICJWTSBVcGRhdGUiKTsK
K30KKwordm9pZCBWTTo6ZHVtcEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKCkKK3sKKyAgICBp
ZiAoIWlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUoKTsKKyAgICBIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIqIHByb2ZpbGVyID0gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIu
Z2V0KCk7CisgICAgZm9yIChCYWc8VHlwZUxvY2F0aW9uPjo6aXRlcmF0b3IgaXRlciA9IG1fbG9j
YXRpb25JbmZvLmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7CisgICAgICAgIFR5cGVMb2NhdGlv
biogbG9jYXRpb24gPSAqaXRlcjsKKyAgICAgICAgZGF0YUxvZ0YoIltMaW5lLCBDb2x1bW5dOjpb
JXUsICV1XSAiLCBsb2NhdGlvbi0+bV9saW5lLCBsb2NhdGlvbi0+bV9jb2x1bW4pOworICAgICAg
ICBkYXRhTG9nKCJcblx0XHQjTG9jYWwjXG5cdFx0IiwKKyAgICAgICAgICAgICAgICBwcm9maWxl
ci0+Z2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShsb2NhdGlvbi0+bV9saW5lLCBsb2Nh
dGlvbi0+bV9jb2x1bW4sIGxvY2F0aW9uLT5tX2xpbmUsIGxvY2F0aW9uLT5tX2NvbHVtbiwgIiIs
IGxvY2F0aW9uLT5tX3NvdXJjZUlEKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwKKyAgICAgICAg
ICAgICAgICAiXG5cdFx0I0dsb2JhbCNcblx0XHQiLAorICAgICAgICAgICAgICAgIHByb2ZpbGVy
LT5nZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShsb2NhdGlvbi0+bV9saW5lLCBsb2Nh
dGlvbi0+bV9jb2x1bW4sIGxvY2F0aW9uLT5tX2xpbmUsIGxvY2F0aW9uLT5tX2NvbHVtbiwgIiIs
IGxvY2F0aW9uLT5tX3NvdXJjZUlEKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwKKyAgICAgICAg
ICAgICAgICAiXG4iKTsKKyAgICB9Cit9CisKIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNKiB2
bSkKIHsKICAgICBsb2dTYW5pdGl6ZVN0YWNrKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkocmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsMTEgQEAKICNpbmNsdWRlICJT
dHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFy
cmF5Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIldh
dGNoZG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20u
aCIKKyNpbmNsdWRlIDx3dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2Nh
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTc0LDYgKzc2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29tbW9uSWRl
bnRpZmllcnM7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEhhbmRsZVN0YWNrOwor
ICAgIGNsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjsKKyAgICBjbGFzcyBIaWdoRmlkZWxp
dHlMb2c7CiAgICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKQEAgLTg0LDYgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAg
ICBjbGFzcyBSZWdFeHBDYWNoZTsKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogICAgIGNs
YXNzIFNvdXJjZVByb3ZpZGVyOwogICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGU7CiAgICAg
c3RydWN0IFN0YWNrRnJhbWU7CkBAIC05Niw2ICsxMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworICAgIGNs
YXNzIFZpcnR1YWxSZWdpc3RlcjsKICAgICBjbGFzcyBWTUVudHJ5U2NvcGU7CiAgICAgY2xhc3Mg
V2F0Y2hwb2ludDsKICAgICBjbGFzcyBXYXRjaHBvaW50U2V0OwpAQCAtNTEwLDYgKzUxNiwxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyog
YnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7
IH0KIAorICAgICAgICBib29sIGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkgeyBy
ZXR1cm4gISFtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjsgfQorICAgICAgICBTdHJpbmcgZ2V0
VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJp
bmcmIHZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CisgICAgICAgIEhpZ2hG
aWRlbGl0eUxvZyogaGlnaEZpZGVsaXR5TG9nKCkgeyByZXR1cm4gbV9oaWdoRmlkZWxpdHlMb2cu
Z2V0KCk7IH0KKyAgICAgICAgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKiBoaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIoKSB7IHJldHVybiBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5nZXQoKTsg
fQorICAgICAgICB2b2lkIHVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUoKTsKKyAg
ICAgICAgVHlwZUxvY2F0aW9uKiBuZXh0TG9jYXRpb24oKSB7IHJldHVybiBtX2xvY2F0aW9uSW5m
by5hZGQoKTsgfSAvL1RPRE86IHBvc3NpYmxlIG9wdG1pemF0aW9uOiB3aGVuIGNvZGVibG9ja3Mg
ZGllLCByZXBvcnQgd2hpY2ggbG9jYXRpb25zIGFyZSBubyBsb25nZXIgYmVpbmcgY2hhbmdlZCBz
byB3ZSBkb24ndCB3YWxrIG92ZXIgdGhlbQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGR1bXBIaWdoRmlkZWxpdHlQcm9maWxpbmdUeXBlcygpOworICAgICAgICBpbnQ2NF90IGdldE5l
eHRVbmlxdWVWYXJpYWJsZUlEKCkgeyByZXR1cm4gbV9uZXh0VW5pcXVlVmFyaWFibGVJRCsrOyB9
CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2xlYXJFeGNlcHRpb25TY29wZTsKQEAgLTU1OCw2
ICs1NzMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0
YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOwogICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3Rh
Y2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyPiBtX2hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlcjsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hGaWRlbGl0eUxvZz4g
bV9oaWdoRmlkZWxpdHlMb2c7CisgICAgICAgIGludDY0X3QgbV9uZXh0VW5pcXVlVmFyaWFibGVJ
RDsKKyAgICAgICAgQmFnPFR5cGVMb2NhdGlvbj4gbV9sb2NhdGlvbkluZm87CiAgICAgfTsKIAog
I2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233830</attachid>
            <date>2014-06-25 12:31:48 -0700</date>
            <delta_ts>2014-06-28 10:08:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>88410</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwMzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNiBA
QAorMjAxNC0wNi0yNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBkZWJ1Z2dlciBzaG91bGQgYmUgYWJsZSB0byBzaG93IHZhcmlhYmxl
IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzMzOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bmNyZWFzZSB0aGUgYW1vdW50IG9mIHR5cGUgaW5mb3JtYXRpb24gdGhlIFZNIGdhdGhlcnMgd2hl
biBkaXJlY3RlZAorICAgICAgICB0byBkbyBzby4gVGhpcyBpbml0aWFsIGNvbW1pdCBpcyB3b3Jr
aW5nIHRvd2FyZHMgdGhlIGdvYWwgb2YKKyAgICAgICAgY2FwdHVyaW5nLCBhbmQgdGhlbiBzaG93
aW5nICh2aWEgdGhlIFdlYiBJbnNwZWN0b3IpIHR5cGUgaW5mb3JtYXRpb24gZm9yIGFsbAorICAg
ICAgICBhc3NpZ25tZW50IGFuZCBsb2FkIG9wZXJhdGlvbnMuIFRoaXMgcGF0Y2ggZG9lc24ndCBo
YXZlIHRoZSBmZWF0dXJlIGZ1bGx5IAorICAgICAgICBpbXBsZW1lbnRlZCwgYnV0IGl0IGVuc3Vy
ZXMgdGhlIFZNIGhhcyBubyBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucworICAgICAgICB1bmxlc3Mg
dGhlIGZlYXR1cmUgaXMgc3BlY2lmaWNhbGx5IHR1cm5lZCBvbi4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoK
KyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAqIGJ5dGVj
b2RlL1R5cGVMb2NhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VHlwZUxvY2F0aW9uOjpU
eXBlTG9jYXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0
eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29wZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJl
c29sdmUpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZSk6CisgICAgICAg
IChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0
RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6
OmNvbGxlY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRS
dW50aW1lVHlwZUZvclZhcmlhYmxlSW5UZXh0UmFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3Byb3Rv
Y29sL1J1bnRpbWUuanNvbjoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZh
cmlhYmxlcyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHV0VG9TY29wZUNvbW1vbik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1l
L0hpZ2hGaWRlbGl0eUxvZy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlM
b2c6OmluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxp
dHlMb2c6On5IaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6
OnJlY29yZFR5cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGlnaEZp
ZGVsaXR5TG9nOjpwcm9jZXNzSGlnaEZpZGVsaXR5TG9nKToKKyAgICAgICAgKEpTQzo6SGlnaEZp
ZGVsaXR5TG9nOjphY3R1YWxseVByb2Nlc3NMb2dUaHJlYWRGdW5jdGlvbik6CisgICAgICAgICog
cnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkhpZ2hGaWRl
bGl0eUxvZzo6SGlnaEZpZGVsaXR5TG9nKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXI6OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAgICAgICAgKEpTQzo6SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSk6
CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYWxUeXBlc0Zv
clZhcmlhYmxlSW5SYW5nZSk6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
cjo6aW5zZXJ0TmV3TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXI6OmdldExvY2F0aW9uQmFzZWRIYXNoKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6dG9TdHJ1Y3R1cmVTaGFwZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGU6OlN5bWJvbFRhYmxlKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lQ2FwdHVy
ZWROYW1lcyk6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjp1bmlxdWVJREZvclZhcmlhYmxl
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnVuaXF1ZUlERm9yUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Z2xvYmFsVHlwZVNldEZvclJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6Omdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZSk6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6YWRk
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnNldCk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlR5cGVTZXQ6OlR5cGVTZXQpOgorICAg
ICAgICAoSlNDOjpUeXBlU2V0OjpnZXRSdW50aW1lVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpT
Qzo6VHlwZVNldDo6YWRkVHlwZUZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6cmVt
b3ZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeSk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6
OnNlZW5UeXBlcyk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OmR1bXBTZWVuVHlwZXMpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6U3RydWN0dXJlU2hhcGUpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTaGFwZTo6bWFya0FzRmluYWwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
aGFwZTo6YWRkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6cHJvcGVy
dHlIYXNoKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OmxlYXN0VXBwZXJCb3VuZCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9UeXBlU2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTaGFwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpT
Qzo6Vk06OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKToKKyAgICAgICAgKEpTQzo6Vk06OnVw
ZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlU3RhdGUpOgorICAgICAgICAoSlNDOjpWTTo6ZHVt
cEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgIChKU0M6OlZNOjppc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSk6CisgICAg
ICAgIChKU0M6OlZNOjpoaWdoRmlkZWxpdHlMb2cpOgorICAgICAgICAoSlNDOjpWTTo6aGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06Om5leHRMb2NhdGlvbik6Cisg
ICAgICAgIChKU0M6OlZNOjpnZXROZXh0VW5pcXVlVmFyaWFibGVJRCk6CisKIDIwMTQtMDYtMjQg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBbZnRsb3B0XSBQdXRC
eUlkRmx1c2ggY2FuIGFsc28gYmUgY29udmVydGVkIHRvIGEgUHV0QnlPZmZzZXQgc28gZG9uJ3Qg
YXNzZXJ0IG90aGVyd2lzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE3MDM4
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJCdXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJD
b21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgpAQCAtMzQ3LDYgKzM0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uVW5kZWZpbmVkKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZmZlY3RmdWw0MihFeGVjU3RhdGUqKTsKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1w
VHlwZXNGb3JBbGxWYXJpYWJsZXMgKEV4ZWNTdGF0ZSopOwogCiAjaWYgRU5BQkxFKFNBTVBMSU5H
X0ZMQUdTKQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRT
YW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSopOwpAQCAtNDkzLDYgKzQ5NSw3IEBAIHByb3RlY3RlZDoK
IAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUltcHVyZUdldHRlciIsIGZ1bmN0aW9u
Q3JlYXRlSW1wdXJlR2V0dGVyLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRJbXB1
cmVHZXR0ZXJEZWxlZ2F0ZSIsIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUsIDIpOwor
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyIsIGZ1bmN0
aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzICwgNCk7CiAgICAgICAgIAogICAgICAgICBKU0Fy
cmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsRXhlYygpLCAwKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCkBAIC05Mjcs
NiArOTMwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE1hc3F1ZXJhZGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIGV4ZWMtPnZtKCkuZHVtcEhpZ2hGaWRlbGl0eVByb2ZpbGluZ1R5cGVzKCk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogLy8gVXNlIFNF
SCBmb3IgUmVsZWFzZSBidWlsZHMgb25seSB0byBnZXQgcmlkIG9mIHRoZSBjcmFzaCByZXBvcnQg
ZGlhbG9nCiAvLyAobHVja2lseSB0aGUgc2FtZSB0ZXN0cyBmYWlsIGluIFJlbGVhc2UgYW5kIERl
YnVnIGJ1aWxkcyBzbyBmYXIpLiBOZWVkIHRvCiAvLyBiZSBpbiBhIHNlcGFyYXRlIG1haW4gZnVu
Y3Rpb24gYmVjYXVzZSB0aGUganNjbWFpbiBmdW5jdGlvbiByZXF1aXJlcyBvYmplY3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtODM3LDYgKzgzNywxMyBAQAogCQk0MTM1OUNGMzBGREQ4OUFEMDAy
MDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEQyMTIwMjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lv
bi5oICovOyB9OwogCQk0NDQzQUUzMzE2RTE4OEQ5MDA3NkYxMTAgLyogRm91bmRhdGlvbi5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJ
CTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFy
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUy
REFEMzhGMTk1QTE2NEUwMEYzMDQ2NCAvKiBUeXBlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyREFEMzhFMTk1QTE2NEUwMEYzMDQ2NCAv
KiBUeXBlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1MkZCNzEzNzE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MTMz
MTk1Mzc0QjcwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwICovOyB9OworCQk1MkZCNzEz
ODE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkZCNzEzNDE5NTM3NEI3MDBCQjYxMkUgLyog
SGlnaEZpZGVsaXR5TG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNTJGQjcxMzkxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MkZCNzEzNTE5NTM3NEI4MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNw
cCAqLzsgfTsKKwkJNTJGQjcxM0ExOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTJGQjcxMzYxOTUzNzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUyRkI3MjE0
MTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MjEyMTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0
LmNwcCAqLzsgfTsKKwkJNTJGQjcyMTUxOTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkI3MjEzMTk1Mzc2
MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTUxMDUwMjYxOEVCODI3NTAwMDAxRjNFIC8qIEpTQ2FsbGJhY2tG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQ0MEY4OEYwQTUwOEIxMDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9Owog
CQk1NTJFQTcwQzE5MDg3MDQ4MDBBNjZGMkYgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCRjE3QjZC
NUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgKi87IH07CiAJCTU1NDA3NTcy
MThEQTU4QUQwMEVGRjdGMiAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5o
ICovOyB9OwpAQCAtMjk3NCw2ICsyOTgxLDE0IEBACiAJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4
NCAvKiBqc2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0ganNjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0
OyB9OwogCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07CiAJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGli
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIv
bGlib2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJNTIyQUJBRjkx
OTRBODA0MzAwOEIxQzg1IC8qIFR5cGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUeXBlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTJEQUQzOEUxOTVBMTY0RTAwRjMwNDY0IC8qIFR5cGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUeXBlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJGQjcxMzMx
OTUzNzRCNzAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eUxvZy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIaWdoRmlkZWxpdHlMb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MkZCNzEzNDE5NTM3NEI3MDBCQjYxMkUgLyogSGlnaEZpZGVsaXR5TG9n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZ2hGaWRlbGl0eUxvZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZCNzEzNTE5NTM3NEI4MDBCQjYxMkUgLyog
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUyRkI3MTM2MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyRkI3MjEyMTk1
Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFR5cGVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkZC
NzIxMzE5NTM3NjBDMDBCQjYxMkUgLyogVHlwZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUeXBlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NDA3
NTg0MThGNEEzNzUwMDYwMkE1RCAvKiBDb21waWxlUnVudGltZVRvTExWTUlSLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENvbXBpbGVSdW50aW1lVG9MTFZNSVIueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NDA3QUM4MThEQTU4QUQwMEVG
RjdGMiAvKiBsaWJDb21waWxlUnVudGltZVRvTExWTUlSLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IGxpYkNvbXBpbGVSdW50aW1lVG9MTFZNSVIuYTsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQ1MzcyNkQwRTFDNTQ2QjAwMjFFNTQ5IC8qIFRyYWNpbmcu
ZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUcmFjaW5nLmQ7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00NjQ3LDYgKzQ2NjIsMTAgQEAKIAkJCQkwRjJCNjZCMzE3QjZCNUFCMDBBN0FF
M0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oICovLAogCQkJCUJDMDJFOUI4MEUx
ODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUJDMzM3QkRFMEUxQUYw
QjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLywKKwkJCQk1MkZCNzEzMzE5NTM3NEI3MDBC
QjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmNwcCAqLywKKwkJCQk1MkZCNzEzNDE5NTM3NEI3MDBC
QjYxMkUgLyogSGlnaEZpZGVsaXR5TG9nLmggKi8sCisJCQkJNTJGQjcxMzUxOTUzNzRCODAwQkI2
MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgKi8sCisJCQkJNTJGQjcxMzYxOTUz
NzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oICovLAogCQkJCTkzM0Ez
NDlEMDM4QUU4MEYwMDg2MzVDRSAvKiBJZGVudGlmaWVyLmNwcCAqLywKIAkJCQk5MzNBMzQ5QTAz
OEFFN0M2MDA4NjM1Q0UgLyogSWRlbnRpZmllci5oICovLAogCQkJCTg2MDZEREU5MThEQTQ0QUIw
MEEzODNEMCAvKiBJZGVudGlmaWVySW5saW5lcy5oICovLApAQCAtNDkxOCw2ICs0OTM3LDggQEAK
IAkJCQkwRjJCNjZEQjE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheXMuaCAqLywKIAkJCQkw
RjJCNjZEQzE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuY3BwICovLAogCQkJCTBG
MkI2NkREMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5oICovLAorCQkJCTUyRkI3
MjEyMTk1Mzc2MEMwMEJCNjEyRSAvKiBUeXBlU2V0LmNwcCAqLywKKwkJCQk1MkZCNzIxMzE5NTM3
NjBDMDBCQjYxMkUgLyogVHlwZVNldC5oICovLAogCQkJCUE3QThBRjMyMTdBREI1RjMwMDVBQjE3
NCAvKiBVaW50MTZBcnJheS5oICovLAogCQkJCTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBV
aW50MTZXaXRoRnJhY3Rpb24uaCAqLywKIAkJCQlBN0E4QUYzMzE3QURCNUYzMDA1QUIxNzQgLyog
VWludDMyQXJyYXkuaCAqLywKQEAgLTUzODksNiArNTQxMCw3IEBACiAJCQkJMEZCNTQ2NzgxNEY1
QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkwRkI1
NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLywKIAkJ
CQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKKwkJ
CQk1MjJBQkFGOTE5NEE4MDQzMDA4QjFDODUgLyogVHlwZUxvY2F0aW9uLmggKi8sCiAJCQkJMEZC
NTQ2N0MxNEY1Q0ZEMzAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3Bw
ICovLAogCQkJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmggKi8sCiAJCQkJMTRDQTk1OEMxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmggKi8sCkBAIC01NDI2LDYgKzU0NDgsNyBAQAogCQkJCUJDQ0YwRDA3
MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5oICovLAogCQkJCTBGN0FCODJD
MTk1OERBMUMwMEM2ODgxRiAvKiBUb1RoaXNTdGF0dXMuY3BwICovLAogCQkJCTBGN0FCODJEMTk1
OERBMUMwMEM2ODgxRiAvKiBUb1RoaXNTdGF0dXMuaCAqLywKKwkJCQk1MkRBRDM4RTE5NUExNjRF
MDBGMzA0NjQgLyogVHlwZUxvY2F0aW9uLmggKi8sCiAJCQkJQTc5RTc4MUUxNUVFQ0JBODAwNDdD
ODU1IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCAqLywKIAkJCQlBNzlFNzgxRjE1RUVDQkE4MDA0
N0M4NTUgLyogVW5saW5rZWRDb2RlQmxvY2suaCAqLywKIAkJCQlCNTlGODkzODE4OTFBREI1MDBE
NUNDREMgLyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8sCkBAIC01ODk1LDYgKzU5
MTgsMTAgQEAKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8q
IEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJEQUQzOEYxOTVBMTY0RTAwRjMw
NDY0IC8qIFR5cGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJGQjcyMTUxOTUzNzYw
QzAwQkI2MTJFIC8qIFR5cGVTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyRkI3MTNBMTk1Mzc0
QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUyRkI3MTM4MTk1Mzc0QjgwMEJCNjEyRSAvKiBIaWdoRmlkZWxpdHlMb2cuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1ODQwMzIwMThCRkZCRTEwMDVBMDgxMSAvKiBJbnNwZWN0b3JBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2lu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1MjQ4RjkxOTE0NDJEOTAwQjdGREU0IC8qIFZhcmlh
YmxlV2F0Y2hwb2ludFNldElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzYxMCw2ICs3NjM3
LDcgQEAKIAkJCQkwRjQ4NTMyMTE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNjM5NDg0MTVFNDgxMTgwMDZBNTk3QyAvKiBERkdBcnJheU1v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEOUEyOTQxN0EwQkM3NDAwRUUyNjE4IC8qIERG
R0F0VGFpbEFic3RyYWN0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTJGQjcxMzkxOTUz
NzRCODAwQkI2MTJFIC8qIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjY2NkVDNjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNzE0Q0E0MTZFQTkyRjAwMEYzRUJFQiAvKiBERkdCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YyMTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY0NSw2
ICs3NjczLDcgQEAKIAkJCQlBNzhBOTc3NDE3OTczOEI4MDA5REY3NDQgLyogREZHRmFpbGVkRmlu
YWxpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OEE5Nzc2MTc5NzM4QjgwMDlERjc0NCAv
KiBERkdGaW5hbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDMTUxNTFDNUQ0RDAw
Q0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTJGQjcyMTQx
OTUzNzYwQzAwQkI2MTJFIC8qIFR5cGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMz
OTYxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZFQzlEQzcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtNzcyNyw2ICs3NzU2LDcgQEAKIAkJCQlBN0I0OEY0OTBFRTg5MzZGMDBE
Q0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkRC
NjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRp
b25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyRkI3MTM3MTk1Mzc0QjgwMEJCNjEy
RSAvKiBIaWdoRmlkZWxpdHlMb2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwMzMyQzAxOEFE
RkFFMTAwNUY5NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QjEwNTg1MTY3NTQ4MEYwMEY4QUI2RSAvKiBFeGl0S2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkVBMEExQzE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgkocmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEz
LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc29sdmVfc2NvcGUiLCAibGVuZ3Ro
IiA6IDYgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9mcm9tX3Njb3BlIiwgImxl
bmd0aCIgOiA4IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fc2NvcGUiLCAi
bGVuZ3RoIiA6IDcgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF90b19zY29wZV93
aXRoX3Byb2ZpbGUiLCAibGVuZ3RoIiA6IDggfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3B1c2hfd2l0aF9zY29wZSIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcG9wX3Njb3BlIiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9wdXNoX25hbWVfc2NvcGUiLCAibGVuZ3RoIiA6IDQgfSwKQEAgLTEyMiw3ICsxMjMsOCBA
QAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVidWciLCAibGVuZ3RoIiA6IDMgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Byb2ZpbGVfd2lsbF9jYWxsIiwgImxlbmd0aCIgOiAy
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX2RpZF9jYWxsIiwgImxlbmd0
aCIgOiAyIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9lbmQiLCAibGVuZ3RoIiA6IDIg
fQorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZW5kIiwgImxlbmd0aCIgOiAyIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSIs
ICJsZW5ndGgiIDogNCB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCShyZXZpc2lvbiAx
NzAzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOgogICAgIGNhc2Ug
b3BfcHJvZmlsZV93aWxsX2NhbGw6CiAgICAgY2FzZSBvcF9wcm9maWxlX2RpZF9jYWxsOgorICAg
IGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CiAgICAgY2FzZSBvcF90
aHJvdzoKICAgICBjYXNlIG9wX3B1c2hfd2l0aF9zY29wZToKICAgICBjYXNlIG9wX2VuZDoKQEAg
LTEwNSw2ICsxMDYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmU6CiAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAg
Y2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgIGNhc2Ugb3BfcHV0X3RvX3Nj
b3BlOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CkBAIC0yNDks
NiArMjUxLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbAogICAg
IGNhc2Ugb3BfcHVzaF9uYW1lX3Njb3BlOgogICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgog
ICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgorICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhf
cHJvZmlsZToKICAgICBjYXNlIG9wX3BvcF9zY29wZToKICAgICBjYXNlIG9wX2VuZDoKICAgICBj
YXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgpAQCAtMjg3LDYgKzI5MCw3IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmwKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGly
ZWN0OgogICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OgogICAgIGNhc2Ugb3BfdGVhcl9vZmZfYXJn
dW1lbnRzOgorICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6CiAg
ICAgY2FzZSBvcF90b3VjaF9lbnRyeToKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bj
b2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVf
RVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdX
b3JrbGlzdC5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQu
aCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgpAQCAtNDcsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50
cnlwb2ludC5oIgorI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9seW1v
cnBoaWNHZXRCeUlkTGlzdC5oIgpAQCAtODQzLDYgKzg0NSwxNCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6
IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
KytpdDsKKyAgICAgICAgICAgICsraXQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRl
bGl0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25v
dDogewogICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
bm90Iik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NjksNiArMTQ3OSw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICAgICAgb3BlcmFuZCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZV93aXRo
X3Byb2ZpbGU6CiAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAgICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCkt
PnUub3BlcmFuZDsKQEAgLTE0NzcsNiArMTQ4OCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUoCiAgICAgICAgICAgICArK2l0OyAvLyBTdHJ1Y3R1cmUKICAgICAgICAgICAgIGludCBv
cGVyYW5kID0gKCsraXQpLT51Lm9wZXJhbmQ7IC8vIE9wZXJhbmQKICAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF90b19zY29wZSIpOwor
ICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlKQor
ICAgICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
LCAldTwlc3wlcz4sIDxzdHJ1Y3R1cmU+LCAlZCIsCiAgICAgICAgICAgICAgICAgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCByZWdp
c3Rlck5hbWUocjEpLmRhdGEoKSwKICAgICAgICAgICAgICAgICBtb2RlQW5kVHlwZS5vcGVyYW5k
KCksIHJlc29sdmVNb2RlTmFtZShtb2RlQW5kVHlwZS5tb2RlKCkpLCByZXNvbHZlVHlwZU5hbWUo
bW9kZUFuZFR5cGUudHlwZSgpKSwKQEAgLTE4ODAsNiArMTg5Myw3IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlOgogICAgICAgICBj
YXNlIG9wX3B1dF90b19zY29wZTogewogICAgICAgICAgICAgLy8gcHV0X3RvX3Njb3BlIHNjb3Bl
LCBpZCwgdmFsdWUsIFJlc29sdmVNb2RlQW5kVHlwZSwgU3RydWN0dXJlLCBPcGVyYW5kCiAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKTsKQEAgLTE4OTUsOSArMTkwOSw2OCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRF
eGVjdXRhYmxlKiBvCiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkKICAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUuc3RydWN0dXJlLnNldCgqdm0oKSwgb3du
ZXJFeGVjdXRhYmxlLCBvcC5zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA2XS51LnBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihvcC5vcGVyYW5kKTsKKwor
ICAgICAgICAgICAgaWYgKHBjWzBdLnUub3Bjb2RlID09IG9wX3B1dF90b19zY29wZV93aXRoX3By
b2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZm9ybWF0IG9mIHRoaXMgaW5zdHJ1Y3Rp
b24gaXM6IHB1dF90b19zY29wZV93aXRoX3Byb2ZpbGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVzb2x2
ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQsIFR5cGVMb2NhdGlvbioKKyAgICAgICAg
ICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gdm0oKS0+bmV4dExvY2F0aW9uKCk7Cisg
ICAgICAgICAgICAgICAgc2l6ZV90IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9wTGVuZ3RoIC0g
MTsKKyAgICAgICAgICAgICAgICBpbnQgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7IAor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwLCBjb2x1bW4gPSAwOworICAgICAgICAg
ICAgICAgIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0
LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKKworICAgICAg
ICAgICAgICAgIGxvY2F0aW9uLT5tX2xpbmUgPSBsaW5lOworICAgICAgICAgICAgICAgIGxvY2F0
aW9uLT5tX2NvbHVtbiA9IGNvbHVtbjsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9zb3Vy
Y2VJRCA9IG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpOworCisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IGhhbmRsZSBvdGhlciB2YWx1ZXMgZm9yIG9wLnR5cGUgaGVyZSwgYW5kIGFsc28g
Y29uc2lkZXIgd2hhdCB0byBkbyB3aGVuIHdlIGNhbid0IHN0YXRpY2FsbHkgZGV0ZXJtaW5lIHRo
ZSBnbG9iYWxJRAorICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IDA7
CisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhcikgCisgICAgICAgICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlID0gb3AuYWN0aXZhdGlvbi0+c3ltYm9sVGFibGUoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2JhbFZhcikKKyAgICAgICAgICAg
ICAgICAgICAgc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5nZXQoKS0+c3ltYm9sVGFibGUo
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoc3ltYm9sVGFibGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFi
bGUtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlh
YmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGlkZW50Lmlt
cGwoKSwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBl
U2V0ID1zeW1ib2xUYWJsZS0+Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQu
aW1wbCgpLCAqdm0oKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxpdHlOb0dsb2JhbElE
RXhpc3RzOworCisgICAgICAgICAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
KCktPmluc2VydE5ld0xvY2F0aW9uKGxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVj
dGlvbnNbaSArIDddLnUubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9wcm9maWxlX3R5cGVz
X3dpdGhfaGlnaF9maWRlbGl0eTogeworCisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUgPSBtX3N5bWJvbFRhYmxlLmdldCgpOworICAgICAgICAgICAgVHlwZUxvY2F0
aW9uKiBsb2NhdGlvbiA9IHZtKCktPm5leHRMb2NhdGlvbigpOworICAgICAgICAgICAgc2l6ZV90
IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9wTGVuZ3RoIC0gMTsKKyAgICAgICAgICAgIGludCBk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldDsgCisgICAgICAgICAgICB1bnNpZ25lZCBsaW5l
ID0gMCwgY29sdW1uID0gMDsKKyAgICAgICAgICAgIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2Rl
T2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwg
bGluZSwgY29sdW1uKTsKKworICAgICAgICAgICAgaW50IGhhc0dsb2JhbElERmxhZyA9IHBjWzNd
LnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlmIChoYXNHbG9iYWxJREZsYWcpIHsKKyAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsK
KyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFi
bGUtPnVuaXF1ZUlERm9yUmVnaXN0ZXIobG9ja2VyLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCks
ICp2bSgpKTsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ID0gc3lt
Ym9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JSZWdpc3Rlcihsb2NrZXIsIHZpcnR1YWxSZWdpc3Rl
ci5vZmZzZXQoKSwgKnZtKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
bG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlz
dHM7CiAgICAgICAgICAgICAKKworICAgICAgICAgICAgbG9jYXRpb24tPm1fbGluZSA9IGxpbmU7
CisgICAgICAgICAgICBsb2NhdGlvbi0+bV9jb2x1bW4gPSBjb2x1bW47CisgICAgICAgICAgICBs
b2NhdGlvbi0+bV9zb3VyY2VJRCA9IG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpOworCisg
ICAgICAgICAgICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+aW5zZXJ0TmV3TG9j
YXRpb24obG9jYXRpb24pOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyAyXS51LmxvY2F0
aW9uID0gbG9jYXRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKICAgICAg
ICAgY2FzZSBvcF9jYXB0dXJlZF9tb3Y6CiAgICAgICAgIGNhc2Ugb3BfbmV3X2NhcHR1cmVkX2Z1
bmM6IHsKICAgICAgICAgICAgIGlmIChwY1szXS51LmluZGV4ID09IFVJTlRfTUFYKSB7CkBAIC0y
MzQzLDYgKzI0MTYsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNl
IG9wX2dldF9mcm9tX3Njb3BlOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGVfd2l0
aF9wcm9maWxlOgogICAgICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKICAgICAgICAg
ICAgICAgICBSZXNvbHZlTW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUgPQogICAgICAgICAgICAgICAg
ICAgICBSZXNvbHZlTW9kZUFuZFR5cGUoY3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtOTQzLDYgKzk0Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNL
bm93blRvQmVMaXZlRHVyaW5nR0MoKTsgLy8gV2lsbCBvbmx5IHJldHVybiB2YWxpZCByZXN1bHRz
IHdoZW4gY2FsbGVkIGR1cmluZyBHQy4gQXNzdW1lcyB0aGF0IHlvdSd2ZSBhbHJlYWR5IGVzdGFi
bGlzaGVkIHRoYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUgaXMgbGl2ZS4KIAorCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKSBvdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5o
CShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJUeXBlTG9j
YXRpb24uaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJTcGVjaWFsUG9p
bnRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgpAQCAtMTIwLDYgKzEyMSw3IEBAIHN0cnVj
dCBJbnN0cnVjdGlvbiB7CiAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIGJvb2wqIHBy
ZWRpY2F0ZVBvaW50ZXI7CiAgICAgICAgIFRvVGhpc1N0YXR1cyB0b1RoaXNTdGF0dXM7CisgICAg
ICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb247CiAgICAgfSB1OwogICAgICAgICAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlvbi5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2Nh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFR5cGVMb2NhdGlvbl9oCisjZGVm
aW5lIFR5cGVMb2NhdGlvbl9oCisKKyNpbmNsdWRlICJUeXBlU2V0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitlbnVtIEhpZ2hGaWRlbGl0eUdsb2JhbElERmxhZ3MgeworICAgIEhpZ2hGaWRlbGl0
eU5lZWRzVW5pcXVlSURHZW5lcmF0aW9uID0gLTEsCisgICAgSGlnaEZpZGVsaXR5Tm9HbG9iYWxJ
REV4aXN0cyA9IC0yCit9OworCitjbGFzcyBUeXBlTG9jYXRpb24geworICAgICAgICAgICAgICAg
ICAgICAgICAKK3B1YmxpYzoKKyAgICBUeXBlTG9jYXRpb24oKSAKKyAgICAgICAgOiBtX2luc3Ry
dWN0aW9uVHlwZVNldChUeXBlU2V0OjpjcmVhdGUoKSkKKyAgICAgICAgLCBtX2dsb2JhbFR5cGVT
ZXQobnVsbHB0cikKKyAgICB7CisgICAgfQorCisgICAgaW50NjRfdCBtX2dsb2JhbFZhcmlhYmxl
SUQ7CisgICAgaW50cHRyX3QgbV9zb3VyY2VJRDsKKyAgICB1bnNpZ25lZCBtX2xpbmU7CisgICAg
dW5zaWduZWQgbV9jb2x1bW47CisgICAgUmVmUHRyPFR5cGVTZXQ+IG1faW5zdHJ1Y3Rpb25UeXBl
U2V0OworICAgIFJlZlB0cjxUeXBlU2V0PiBtX2dsb2JhbFR5cGVTZXQ7Cit9OworCit9IC8vbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy9UeXBlTG9jYXRpb25faApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHJldmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAzLDYgKzEwMDMs
MTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKAogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChzcmMtPmluZGV4KCkpOwogICAgIGlmIChjYXB0dXJlTW9kZSA9PSBJ
c0NhcHR1cmVkKQogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQod2F0Y2hhYmxlVmFyaWFi
bGUoZHN0LT5pbmRleCgpKSk7CisKKyAgICBpZiAoIWRzdC0+aXNUZW1wb3JhcnkoKSAmJiBpc1By
b2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICBlbWl0UHJvZmlsZVR5cGVz
V2l0aEhpZ2hGaWRlbGl0eShkc3QsIHRydWUpOworCiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAt
MTExMiw2ICsxMTE2LDE4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1
YWwKICAgICByZXR1cm4gZHN0OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJv
ZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJvZmlsZSwg
Ym9vbCBoYXNHbG9iYWxJRCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX3Byb2ZpbGVfdHlwZXNfd2l0
aF9oaWdoX2ZpZGVsaXR5KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVnaXN0ZXJUb1By
b2ZpbGUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsgLy8gcGxhY2Vo
b2xkZXIgZm9yIFR5cGVMb2NhdGlvbgorICAgIC8vIFRoaXMgaXMgYSBmbGFnIGluZGljYXRpbmcg
d2hldGhlciB3ZSBzaG91bGQgdHJhY2sgdGhpcyB2YWx1ZSB0byBpdHMgZ2xvYmFsSUQgb3Igbm90
LgorICAgIGlmIChoYXNHbG9iYWxJRCkKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDEp
OworICAgIGVsc2UKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworfQorCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBib29s
IGIpCiB7CiAgICAgcmV0dXJuIGVtaXRMb2FkKGRzdCwganNCb29sZWFuKGIpKTsKQEAgLTEyNTYs
MTMgKzEyNzIsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUbwog
ICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAKICAgICAvLyBwdXRfdG9fc2NvcGUgc2NvcGUsIGlkLCB2YWx1ZSwgUmVz
b2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1cmUsIE9wZXJhbmQKLSAgICBlbWl0T3Bjb2RlKG9wX3B1
dF90b19zY29wZSk7CisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
CisgICAgICAgIGVtaXRPcGNvZGUob3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSk7CisgICAg
ZWxzZQorICAgICAgICBlbWl0T3Bjb2RlKG9wX3B1dF90b19zY29wZSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHNjb3BlLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
YWRkQ29uc3RhbnQoaWRlbnRpZmllcikpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1
ZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFJlc29sdmVNb2RlQW5kVHlw
ZShyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUoKSkub3BlcmFuZCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGlmIChp
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0xMzI5LDYgKzEzNTAsMTAg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworCisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KCkpCisgICAgICAgIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZh
bHVlLCBmYWxzZSk7CisKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTE0MjUsNiArMTQ1MCwx
MCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQodmFsdWUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcnJheVBy
b2ZpbGUpOworCisgICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisg
ICAgICAgIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZhbHVlLCBmYWxzZSk7CisK
ICAgICByZXR1cm4gdmFsdWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE3MDM4
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIGVtaXROb2RlKG4pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9p
ZCBlbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdpc3RlcklEKiBkc3QsIGJvb2wp
OworCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVu
dGlmaWVyJik7CkBAIC02NzcsNiArNjc5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
Vk0qIG1fdm07CiAKKyAgICAgICAgYm9vbCBpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0
eSgpIHsgcmV0dXJuIHZtKCktPmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCk7IH0K
KwogICAgICAgICBPcGNvZGVJRCBtX2xhc3RPcGNvZGVJRDsKICNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIHNpemVfdCBtX2xhc3RPcGNvZGVQb3NpdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE3
MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQwLDEzICs3NDAsMTUgQEAgUmVnaXN0ZXJJRCogUG9z
dGZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dAogICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgp
KSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQo
KTsKICAgICAgICAgICAgIGxvY2FsUmVnID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9jYWxSZWcpOwotICAgICAgICB9IGVsc2UgaWYgKGxvY2Fs
LmlzQ2FwdHVyZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8
fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QpOwogICAgICAgICAgICAgQVNTRVJUKGRzdCAhPSBsb2NhbFJlZyk7CiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdFNyYyA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VG9OdW1iZXIodGVtcERzdC5nZXQoKSwg
bG9jYWxSZWcpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBEc3RTcmMuZ2V0
KCksIGxvY2FsUmVnKTsKICAgICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHRlbXBE
c3RTcmMuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1By
b2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbFJlZywgdGVtcERzdFNyYy5nZXQo
KSk7CiAgICAgICAgICAgICByZXR1cm4gdGVtcERzdC5nZXQoKTsKICAgICAgICAgfQpAQCAtOTE1
LDEwICs5MTcsMTIgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZQog
ICAgICAgICBpZiAobG9jYWwuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGxvY2FsUmVnID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9jYWxS
ZWcpOwotICAgICAgICB9IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSkgeworICAgICAgICB9
IGVsc2UgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRl
bXBEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdE1vdmUodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcpOwogICAgICAgICAgICAgZW1p
dEluY09yRGVjKGdlbmVyYXRvciwgdGVtcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAg
ICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxv
Y2FsUmVnLCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92
ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CkBA
IC0xNDA3LDYgKzE0MTEsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0
UmVhCiAKIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBKU1Rl
eHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7CiAg
ICAgaWYgKExvY2FsIGxvY2FsID0gZ2VuZXJhdG9yLmxvY2FsKG1faWRlbnQpKSB7CiAgICAgICAg
IGlmIChsb2NhbC5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVh
ZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpOwpAQCAtMTQxNCwxMCArMTQxOSwxMyBAQCBSZWdpc3Rl
cklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkKKyAgICAgICAgICAgIHx8IGdlbmVyYXRvci5p
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpCiAgICAgICAgICAgICB8fCBnZW5lcmF0
b3IubGVmdEhhbmRTaWRlTmVlZHNDb3B5KG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+
aXNQdXJlKGdlbmVyYXRvcikpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVz
dWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRNb3ZlKHJlc3VsdC5nZXQoKSwgbG9jYWwuZ2V0KCkpOwogICAgICAgICAgICAgZW1pdFJlYWRN
b2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgcmVzdWx0LmdldCgpLCByZXN1bHQuZ2V0KCksIG1f
cmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgp
LCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0
b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rp
dm90KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5nZXQoKSwgcmVzdWx0
LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25J
Zk5lZWRlZChkc3QsIHJlc3VsdC5nZXQoKSk7CiAgICAgICAgIH0KQEAgLTE0MjYsNyArMTQzNCw2
IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEIKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKICAg
ICB9CiAKLSAgICBKU1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRl
bnQubGVuZ3RoKCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwg
ZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lk
ZW50KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZy
b21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBU
aHJvd0lmTm90Rm91bmQpOwpAQCAtMTQ0Myw5ICsxNDUwLDExIEBAIFJlZ2lzdGVySUQqIEFzc2ln
blJlc29sdmVOb2RlOjplbWl0Qnl0ZWMKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9u
bHlFeGNlcHRpb25JZk5lZWRlZCgpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
Tm9kZShkc3QsIG1fcmlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1
cmVkKCkpIHsKKyAgICAgICAgaWYgKGxvY2FsLmlzQ2FwdHVyZWQoKSB8fCBnZW5lcmF0b3IuaXNQ
cm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRlbXBEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGVtcERzdC5nZXQoKSwgbV9yaWdodCk7CisgICAg
ICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3Zl
KGxvY2FsLmdldCgpLCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0
b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAg
ICB9CkBAIC0xNTQ4LDcgKzE1NTcsOCBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0
Q29kZVNpbmdsCiAgICAgICAgIGlmICghbV9pbml0KQogICAgICAgICAgICAgcmV0dXJuIGxvY2Fs
LmdldCgpOwogCi0gICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkpIHsKKyAgICAgICAgLy8g
RklYTUU6IE1heWJlIGNhbGwgZW1pdEV4cHJlc3Npb25JbmZvIGhlcmUuCisgICAgICAgIGlmIChs
b2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZp
ZGVsaXR5KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHRl
bXBEc3QuZ2V0KCksIG1faW5pdCk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRN
b3ZlKGxvY2FsLmdldCgpLCB0ZW1wRHN0LmdldCgpKTsKQEAgLTE4NzEsNyArMTg4MSw4IEBAIHZv
aWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgICAgIElkZW50
aWZpZXIgaWRlbnQgPSBzaW1wbGVCaW5kaW5nLT5ib3VuZFByb3BlcnR5KCk7CiAgICAgICAgICAg
ICBMb2NhbCBsb2NhbCA9IGdlbmVyYXRvci5sb2NhbChpZGVudCk7CiAgICAgICAgICAgICBwcm9w
ZXJ0eU5hbWUgPSBsb2NhbC5nZXQoKTsKLSAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lIHx8
IGxvY2FsLmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgSSBlbWl0
IGV4cHJlc3Npb24gaW5mbyBoZXJlPworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwg
bG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hG
aWRlbGl0eSgpKQogICAgICAgICAgICAgICAgIGdvdG8gZ2VuZXJpY0JpbmRpbmc7CiAgICAgICAg
ICAgICBleHBlY3RlZFN1YnNjcmlwdCA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IucHVzaE9w
dGltaXNlZEZvckluKGV4cGVjdGVkU3Vic2NyaXB0LmdldCgpLCBpdGVyLmdldCgpLCBpLmdldCgp
LCBwcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJl
dmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNj
b3BlLmgiCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiSGVhcFN0YXRp
c3RpY3MuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlMb2cuaCIKICNpbmNsdWRlICJJbmNyZW1l
bnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCkBAIC05NjksNiArOTcwLDggQEAgdm9pZCBIZWFwOjpjb2xsZWN0KEhlYXBP
cGVyYXRpb24gY29sbGVjdAogI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0
YUxvZ0YoIkpTQyBHQyBzdGFydGluZyBjb2xsZWN0aW9uLlxuIik7CiAjZW5kaWYKKyAgICBpZiAo
dm0oKS0+aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgdm0oKS0+
aGlnaEZpZGVsaXR5TG9nKCktPnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coZmFsc2UsICJHQyIpOwog
ICAgIAogICAgIGRvdWJsZSBiZWZvcmUgPSAwOwogICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAJKHJldmlzaW9uIDE3MDM4NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OnJ1bihFcnJvclN0cgogewogfQogCit2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5faWQs
IGludCBpbl9zdGFydExpbmUsIGludCBpbl9zdGFydENvbHVtbiwgaW50IGluX2VuZExpbmUsIGlu
dCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5cGVzKSAKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxWTSgpOworICAgIFN0cmluZyB0eXBlcyh2bS5nZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShp
bl9zdGFydExpbmUsIGluX3N0YXJ0Q29sdW1uLCBpbl9lbmRMaW5lLCBpbl9lbmRDb2x1bW4sIGlu
X3ZhcmlhYmxlTmFtZSwgaW5faWQpKTsKKyAgICAqb3V0X3R5cGVzID0gdHlwZXM7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBj
b25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9y
Pj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGlu
dGVybmFsUHJvcGVydGllcykgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VPYmplY3RHcm91cChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApIG92
ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcqKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgaW5faWQsIGludCBpbl9zdGFydExpbmUsIGludCBpbl9zdGFydENvbHVtbiwgaW50IGluX2Vu
ZExpbmUsIGludCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5cGVzKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2V0U2NyaXB0RGVidWdTZXJ2ZXIoU2NyaXB0RGVidWdTZXJ2ZXIqIHNjcmlwdERl
YnVnU2VydmVyKSB7IG1fc2NyaXB0RGVidWdTZXJ2ZXIgPSBzY3JpcHREZWJ1Z1NlcnZlcjsgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL1J1bnRpbWUuanNvbgkocmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE5
Niw2ICsxOTYsMjEgQEAKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIs
CiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgcmVwb3J0aW5nIG9mIGV4ZWN1
dGlvbiBjb250ZXh0cyBjcmVhdGlvbi4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgICJuYW1lIjogImdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZSIsCisgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhcmlh
YmxlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJWYXJpYWJsZSB3ZSB3
YW50IHR5cGUgaW5mcm9tYXRpb24gZm9yLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InNvdXJjZUlEIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogInNvdXJjZUlEIHVu
aXF1ZWx5IGlkZW50aWZ5aW5nIGEgc2NyaXB0IiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic3RhcnRMaW5lIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJzdGFydCBs
aW5lIGZvciB2YXJpYWJsZSBuYW1lIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3Rh
cnRDb2x1bW4iLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogInN0YXJ0IGNvbHVt
biBmb3IgdmFyaWFibGUgbmFtZSIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuZExp
bmUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogImVuZCBsaW5lIGZvciB2YXJp
YWJsZSBuYW1lIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5kQ29sdW1uIiwgInR5
cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJlbmQgY29sdW1uIGZvciB2YXJpYWJsZSBu
YW1lIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ0eXBlcyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlv
biI6ICJUeXBlcyBmb3IgcmVxdWVzdGVkIHZhcmlhYmxlLiIgfQorICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGRldGFpbGVkIGluZm9ybXRhdGlvbiBv
biBnaXZlbiBmdW5jdGlvbi4iCiAgICAgICAgIH0KICAgICBdLAogICAgICJldmVudHMiOiBbCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHJldmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJF
cnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSGlnaEZpZGVsaXR5TG9nLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRF
eGNlcHRpb25zLmgiCkBAIC0xNjcsNyArMTY4LDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBMTEludCB7CiAgICAgICAgIEV4ZWNTdGF0ZSogX19yY2ZfZXhlYyA9IChleGVjQ2FsbGVlKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08ocGMs
IF9fcmNmX2V4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGls
ZSAoZmFsc2UpCi0gICAgCiAKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Ry
YWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hl
cmUsIGludCBvcGVyYW5kKQogewpAQCAtNTMzLDYgKzUzMywxNSBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbmV3X3JlZ2V4CiAgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6
Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgp
LCByZWdFeHApKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVf
dHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgVHlw
ZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHBjWzJdLnUubG9jYXRpb247CisgICAgSlNWYWx1ZSB2YWwg
PSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICB2bS5oaWdoRmlkZWxpdHlMb2coKS0+cmVj
b3JkVHlwZUluZm9ybWF0aW9uRm9yTG9jYXRpb24odmFsLCBsb2NhdGlvbik7CisgICAgTExJTlRf
RU5EX0lNUEwoKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hh
c19pbnN0YW5jZSkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTQyNiw5ICsxNDM1LDggQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tXwogICAgIExMSU5UX1JFVFVS
TihzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCitzdGF0aWMgSlNPYmplY3QqIHB1dFRvU2NvcGVDb21t
b24oRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIFZNJiB2bSkKIHsKLSAgICBMTElO
VF9CRUdJTigpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNb
Ml0udS5vcGVyYW5kKTsKICAgICBKU09iamVjdCogc2NvcGUgPSBqc0Nhc3Q8SlNPYmplY3QqPihM
TElOVF9PUCgxKS5qc1ZhbHVlKCkpOwpAQCAtMTQzNiw3ICsxNDQ0LDcgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogICAgIFJlc29sdmVNb2RlQW5kVHlwZSBtb2Rl
QW5kVHlwZSA9IFJlc29sdmVNb2RlQW5kVHlwZShwY1s0XS51Lm9wZXJhbmQpOwogCiAgICAgaWYg
KG1vZGVBbmRUeXBlLm1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQgJiYgIXNjb3BlLT5oYXNQcm9w
ZXJ0eShleGVjLCBpZGVudCkpCi0gICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVVuZGVmaW5l
ZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpOwogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
c2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJs
ZSgpLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CkBAIC0xNDUwLDYgKzE0
NTgsMjggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogICAgICAg
ICB9CiAgICAgfQogCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBK
U09iamVjdCogZXJyb3IgPSBwdXRUb1Njb3BlQ29tbW9uKGV4ZWMsIHBjLCB2bSk7CisgICAgaWYg
KGVycm9yKQorICAgICAgICBMTElOVF9USFJPVyhlcnJvcik7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9m
aWxlKQoreworICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhpcyBpbnN0cnVjdGlvbiBpcyB0aGUgc2Ft
ZSBhcyBwdXRfdG9fc2NvcGUgd2l0aCBhIFR5cGVMb2NhdGlvbiBhcHBlbmRlZDogcHV0X3RvX3Nj
b3BlX3dpdGhfcHJvZmlsZSBzY29wZSwgaWQsIHZhbHVlLCBSZXNvbHZlTW9kZUFuZFR5cGUsIFN0
cnVjdHVyZSwgT3BlcmFuZCwgVHlwZUxvY2F0aW9uKgorICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNPYmplY3QqIGVycm9yID0gcHV0VG9TY29wZUNvbW1vbihleGVjLCBwYywgdm0pOworICAgIGlm
IChlcnJvcikKKyAgICAgICAgTExJTlRfVEhST1coZXJyb3IpOworICAgIFR5cGVMb2NhdGlvbiog
bG9jYXRpb24gPSBwY1s3XS51LmxvY2F0aW9uOworICAgIEpTVmFsdWUgdmFsID0gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCk7CisgICAgdm0uaGlnaEZpZGVsaXR5TG9nKCktPnJlY29yZFR5cGVJbmZv
cm1hdGlvbkZvckxvY2F0aW9uKHZhbCwgbG9jYXRpb24pOwogICAgIExMSU5UX0VORCgpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAko
cmV2aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsOCBAQCBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhCiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9nZXRfZnJvbV9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF90b19zY29wZSk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGUpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSk7CiBleHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihW
TSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShMTElOVF9DX0xP
T1ApCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92
bV9lbnRyeShWTSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNp
b24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMyLDMgKzEyMzIsMTEgQEAgZW5kCiBfbGxp
bnRfb3BfaW5pdF9nbG9iYWxfY29uc3Rfbm9wOgogICAgIGRpc3BhdGNoKDUpCiAKK19sbGludF9v
cF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eToKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSkKKyAgICBkaXNw
YXRjaCg0KQorCitfbGxpbnRfb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3RvX3Nj
b3BlX3dpdGhfcHJvZmlsZSkKKyAgICBkaXNwYXRjaCg4KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSGlnaEZp
ZGVsaXR5TG9nLmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUg
IlR5cGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCisKK25hbWVz
cGFjZSBKU0MgeworCitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisKK3ZvaWQg
SGlnaEZpZGVsaXR5TG9nOjppbml0aWFsaXplSGlnaEZpZGVsaXR5TG9nKCkKK3sKKyAgICBBU1NF
UlQoIW1fbG9nU3RhcnRQdHIpOworICAgIG1faGlnaEZpZGVsaXR5TG9nU2l6ZSA9IDUwMDAwOwor
ICAgIG1fbG9nU3RhcnRQdHIgPSBuZXcgTG9nRW50cnlbbV9oaWdoRmlkZWxpdHlMb2dTaXplXTsK
KyAgICBtX25leHRCdWZmZXIgPSBuZXcgTG9nRW50cnlbbV9oaWdoRmlkZWxpdHlMb2dTaXplXTsK
KyAgICBtX2N1cnJlbnRPZmZzZXQgPSAwOworfQorCitIaWdoRmlkZWxpdHlMb2c6On5IaWdoRmlk
ZWxpdHlMb2coKQoreworICAgIGRlbGV0ZVtdIG1fbG9nU3RhcnRQdHI7CisgICAgZGVsZXRlW10g
bV9uZXh0QnVmZmVyOworfQorCit2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6cmVjb3JkVHlwZUluZm9y
bWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2LCBUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQorewor
ICAgIEFTU0VSVChtX2xvZ1N0YXJ0UHRyKTsKKyAgICBBU1NFUlQobV9jdXJyZW50T2Zmc2V0IDwg
bV9oaWdoRmlkZWxpdHlMb2dTaXplKTsKKworICAgIExvZ0VudHJ5KiBlbnRyeSA9IG1fbG9nU3Rh
cnRQdHIgKyBtX2N1cnJlbnRPZmZzZXQ7CisKKyAgICBlbnRyeS0+bG9jYXRpb24gPSBsb2NhdGlv
bjsKKyAgICBlbnRyeS0+dmFsdWUgPSB2OworICAgIGVudHJ5LT5zdHJ1Y3R1cmUgPSAodi5pc0Nl
bGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpIDogbnVsbHB0cik7CisKKyAgICBtX2N1cnJl
bnRPZmZzZXQgKz0gMTsKKyAgICBpZiAobV9jdXJyZW50T2Zmc2V0ID09IG1faGlnaEZpZGVsaXR5
TG9nU2l6ZSkKKyAgICAgICAgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyh0cnVlLCAiTG9nIEZ1bGwi
KTsKK30KKwordm9pZCBIaWdoRmlkZWxpdHlMb2c6OnByb2Nlc3NIaWdoRmlkZWxpdHlMb2coYm9v
bCBhc3luY2hyb25vdXNseSwgU3RyaW5nIHJlYXNvbikKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBv
bmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIGV4ZWN1dGlvbiB0aHJlYWQuCisgICAgaWYgKCFt
X2N1cnJlbnRPZmZzZXQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCInIik7CisKKyAgICBCeXRl
U3BpbkxvY2tlciogbG9ja2VyID0gbmV3IEJ5dGVTcGluTG9ja2VyKG1fbG9jayk7CisgICAgVGhy
ZWFkRGF0YSogZGF0YSA9IG5ldyBUaHJlYWREYXRhOworICAgIGRhdGEtPm1fcHJvY2Nlc3NMb2dU
b09mZnNldCA9IG1fY3VycmVudE9mZnNldDsKKyAgICBkYXRhLT5tX3Byb2Nlc3NMb2dQdHIgPSBt
X2xvZ1N0YXJ0UHRyOworICAgIGRhdGEtPm1fbG9ja2VyID0gbG9ja2VyOworCisgICAgbV9jdXJy
ZW50T2Zmc2V0ID0gMDsKKyAgICBMb2dFbnRyeSogdGVtcCA9IG1fbG9nU3RhcnRQdHI7CisgICAg
bV9sb2dTdGFydFB0ciA9IG1fbmV4dEJ1ZmZlcjsKKyAgICBtX25leHRCdWZmZXIgPSB0ZW1wOwor
ICAgIAorICAgIGlmIChhc3luY2hyb25vdXNseSkKKyAgICAgICAgY3JlYXRlVGhyZWFkKGFjdHVh
bGx5UHJvY2Vzc0xvZ1RocmVhZEZ1bmN0aW9uLCBkYXRhLCAiUHJvY2Vzc0hpZ2hGaWRlbGl0eUxv
ZyIpOworICAgIGVsc2UgCisgICAgICAgIGFjdHVhbGx5UHJvY2Vzc0xvZ1RocmVhZEZ1bmN0aW9u
KGRhdGEpOworfQorCit2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6YWN0dWFsbHlQcm9jZXNzTG9nVGhy
ZWFkRnVuY3Rpb24odm9pZCogYXJnKQoreworICAgIGRvdWJsZSBiZWZvcmUgID0gY3VycmVudFRp
bWVNUygpOworICAgIFRocmVhZERhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxUaHJlYWREYXRhKj4o
YXJnKTsKKyAgICBMb2dFbnRyeSogZW50cnkgPSBkYXRhLT5tX3Byb2Nlc3NMb2dQdHI7CisgICAg
c2l6ZV90IHByb2Nlc3NMb2dUb09mZnNldCA9IGRhdGEtPm1fcHJvY2Nlc3NMb2dUb09mZnNldDsg
CisgICAgc2l6ZV90IGkgPSAwOworICAgIHdoaWxlIChpIDwgcHJvY2Vzc0xvZ1RvT2Zmc2V0KSB7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZW50cnktPnN0cnVjdHVyZSA/IGVudHJ5
LT5zdHJ1Y3R1cmUgOiBudWxscHRyOworICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNo
YXBlOyAKKyAgICAgICAgaWYgKHN0cnVjdHVyZSkKKyAgICAgICAgICAgIHNoYXBlID0gc3RydWN0
dXJlLT50b1N0cnVjdHVyZVNoYXBlKCk7CisgICAgICAgIGlmIChlbnRyeS0+bG9jYXRpb24tPm1f
Z2xvYmFsVHlwZVNldCkKKyAgICAgICAgICAgIGVudHJ5LT5sb2NhdGlvbi0+bV9nbG9iYWxUeXBl
U2V0LT5hZGRUeXBlRm9yVmFsdWUoZW50cnktPnZhbHVlLCBzaGFwZSk7CisgICAgICAgIGVudHJ5
LT5sb2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQtPmFkZFR5cGVGb3JWYWx1ZShlbnRyeS0+
dmFsdWUsIHNoYXBlKTsKKyAgICAgICAgZW50cnkrKzsKKyAgICAgICAgaSsrOworICAgIH0KKwor
ICAgIGRlbGV0ZSBkYXRhLT5tX2xvY2tlcjsKKyAgICBkZWxldGUgZGF0YTsKKyAgICBkb3VibGUg
YWZ0ZXIgPSBjdXJyZW50VGltZU1TKCk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFM
b2dGKCJQcm9jZXNzaW5nIHRoZSBsb2cgdG9vazogJyVmJyBtc1xuIiwgYWZ0ZXIgLSBiZWZvcmUp
OworfQorCit9IC8vbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlMb2cuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSGlnaEZpZGVsaXR5TG9nX2gKKyNkZWZpbmUgSGlnaEZpZGVsaXR5TG9nX2gK
KworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXIuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlIDx3dGYvQnl0ZVNwaW5M
b2NrLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUeXBlTG9jYXRpb247CisKK2NsYXNz
IEhpZ2hGaWRlbGl0eUxvZyB7CisKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgTG9nRW50cnkgeworICAg
ICAgICBwdWJsaWM6CisgICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgIFR5cGVMb2NhdGlv
biogbG9jYXRpb247IAorICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICB9OworCisg
ICAgSGlnaEZpZGVsaXR5TG9nKCkKKyAgICAgICAgOiBtX2xvZ1N0YXJ0UHRyKDApCisgICAgewor
ICAgICAgICBpbml0aWFsaXplSGlnaEZpZGVsaXR5TG9nKCk7CisgICAgfQorCisgICAgfkhpZ2hG
aWRlbGl0eUxvZygpOworCisgICAgdm9pZCByZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlv
bihKU1ZhbHVlIHYsIFR5cGVMb2NhdGlvbiopOworICAgIHZvaWQgcHJvY2Vzc0hpZ2hGaWRlbGl0
eUxvZyhib29sIGFzeW5jaHJvbm91c2x5ID0gZmFsc2UsIFN0cmluZyA9ICIiKTsKKworcHJpdmF0
ZToKKyAgICB2b2lkIGluaXRpYWxpemVIaWdoRmlkZWxpdHlMb2coKTsKKyAgICBzdGF0aWMgdm9p
ZCBhY3R1YWxseVByb2Nlc3NMb2dUaHJlYWRGdW5jdGlvbih2b2lkKik7CisKKyAgICB1bnNpZ25l
ZCBtX2hpZ2hGaWRlbGl0eUxvZ1NpemU7CisgICAgc2l6ZV90IG1fY3VycmVudE9mZnNldDsKKyAg
ICBMb2dFbnRyeSogbV9sb2dTdGFydFB0cjsKKyAgICBMb2dFbnRyeSogbV9uZXh0QnVmZmVyOwor
CisgICAgQnl0ZVNwaW5Mb2NrIG1fbG9jazsKKworICAgIHN0cnVjdCBUaHJlYWREYXRhIHsKKyAg
ICAgICAgcHVibGljOgorICAgICAgICBMb2dFbnRyeSogbV9wcm9jZXNzTG9nUHRyOworICAgICAg
ICBzaXplX3QgbV9wcm9jY2Vzc0xvZ1RvT2Zmc2V0OworICAgICAgICBCeXRlU3BpbkxvY2tlciog
bV9sb2NrZXI7CisgICAgfTsKK307CisKK30gLy9uYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvL0hp
Z2hGaWRlbGl0eUxvZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgiCisKKyNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
KworU3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGb3JWYXJpYWJsZUlu
UmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kTGluZSAsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUs
IGludHB0cl90IHNvdXJjZUlEKQoreworICAgIFN0cmluZyBnbG9iYWwgPSBnZXRHbG9iYWxUeXBl
c0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRD
b2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQpOworICAgIGlmICghZ2xvYmFsLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGdsb2JhbDsKKyAgICAKKyAgICByZXR1cm4gZ2V0TG9jYWxUeXBl
c0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRD
b2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQpOworfQorCitXVEY6OlN0cmluZyBIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXI6OmdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2ln
bmVkIHN0YXJ0TGluZSwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgV1RGOjpT
dHJpbmcmLCBpbnRwdHJfdCBzb3VyY2VJRCkKK3sKKyAgICBhdXRvIGl0ZXJMb2NhdGlvbk1hcCA9
IG1fZ2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwLmZpbmQoZ2V0TG9jYXRpb25CYXNlZEhhc2go
c291cmNlSUQsIHN0YXJ0TGluZSkpOworICAgIGlmIChpdGVyTG9jYXRpb25NYXAgPT0gbV9nbG9i
YWxMb2NhdGlvblRvR2xvYmFsSURNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiAiIjsKKworICAg
IGF1dG8gaXRlcklETWFwID0gbV9nbG9iYWxJRE1hcC5maW5kKGl0ZXJMb2NhdGlvbk1hcC0+c2Vj
b25kKTsKKyAgICBpZiAoaXRlcklETWFwID09IG1fZ2xvYmFsSURNYXAuZW5kKCkpCisgICAgICAg
IHJldHVybiAiIjsKKworICAgIHJldHVybiBpdGVySURNYXAtPnNlY29uZC0+c2VlblR5cGVzKCk7
Cit9CisKK1dURjo6U3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYWxUeXBl
c0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkICwgdW5zaWdu
ZWQgLCB1bnNpZ25lZCAsIGNvbnN0IFdURjo6U3RyaW5nJiAsIGludHB0cl90IHNvdXJjZUlEKQor
eworICAgIGF1dG8gaXRlciA9IG1fZ2xvYmFsTG9jYXRpb25NYXAuZmluZChnZXRMb2NhdGlvbkJh
c2VkSGFzaChzb3VyY2VJRCwgc3RhcnRMaW5lKSk7CisgICAgYXV0byBlbmQgPSBtX2dsb2JhbExv
Y2F0aW9uTWFwLmVuZCgpOworICAgIGlmIChpdGVyID09IGVuZCkKKyAgICAgICAgcmV0dXJuICAi
IjsKKworICAgIHJldHVybiBpdGVyLT5zZWNvbmQtPnNlZW5UeXBlcygpOworfQorCit2b2lkIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBs
b2NhdGlvbikKK3sKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZ0YoIlJlZ2lzdGVy
aW5nIGxvY2F0aW9uOjogbGluZToldSwgY29sdW1uOiV1XG4iLCBsb2NhdGlvbi0+bV9saW5lLCBs
b2NhdGlvbi0+bV9jb2x1bW4pOworCisgICAgTG9jYXRpb25LZXkga2V5KGdldExvY2F0aW9uQmFz
ZWRIYXNoKGxvY2F0aW9uLT5tX3NvdXJjZUlELCBsb2NhdGlvbi0+bV9saW5lKSk7CisKKyAgICBp
ZiAobG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCAhPSBIaWdoRmlkZWxpdHlOb0dsb2JhbElE
RXhpc3RzKSB7IAorICAgICAgICAvLyBCdWlsZCB0aGUgbWFwcGluZyByZWxhdGlvbnNoaXBzIE1h
cDE6a2V5PT5nbG9iYWxJZCwgTWFwMjpnbG9iYWxJRD0+VHlwZVNldCAKKyAgICAgICAgbV9nbG9i
YWxMb2NhdGlvblRvR2xvYmFsSURNYXBba2V5XSA9IGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxl
SUQ7CisgICAgICAgIG1fZ2xvYmFsSURNYXBbbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRF0g
PSBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0OworICAgIH0KKworICAgIG1fZ2xvYmFsTG9jYXRp
b25NYXBba2V5XSA9IGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldDsKK30KKworTG9jYXRp
b25LZXkgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRMb2NhdGlvbkJhc2VkSGFzaChpbnRw
dHJfdCBpZCwgdW5zaWduZWQgbGluZSkKK3sKKyAgICByZXR1cm4gTG9jYXRpb25LZXkoaWQsIGxp
bmUsIDEpOworfQorCit9IC8vbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXJfaAorI2RlZmluZSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXJfaAorCisjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWV0aG9kLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUeXBlTG9jYXRp
b247CisKK3N0cnVjdCBMb2NhdGlvbktleSB7CisKK3B1YmxpYzoKKyAgICBMb2NhdGlvbktleShp
bnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKSAKKyAgICAg
ICAgOiBtX3NvdXJjZUlEKHNvdXJjZUlEKQorICAgICAgICAsIG1fbGluZShsaW5lKQorICAgICAg
ICAsIG1fY29sdW1uKGNvbHVtbikKKworICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xpbmUgKyBtX3NvdXJjZUlEOworICAg
IH0KKworICAgIC8vIEZJWE1FOiBGb3Igbm93LCB0aGlzIGlzIGEgaGFjay4gV2UgZG8gdGhlIGZv
bGxvd2luZzogTWFwOiJJRDpMaW5lIiA9PiBUeXBlU2V0LiBPYnZpb3VzbHksIHRoaXMgYXNzdW1l
cyBhbGwgYXNzaWdubWVudHMgYXJlIG9uIGRpc2NyZXRlIGxpbmVzLCB3aGljaCBpcyBhbiBpbmNv
cnJlY3QgYXNzdW1wdGlvbi4KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTG9jYXRpb25LZXkm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc291cmNlSUQgPT0gb3RoZXIu
bV9zb3VyY2VJRAorICAgICAgICAgICAgICAgJiYgbV9saW5lID09IG90aGVyLm1fbGluZTsKKyAg
ICB9CisKKyAgICBpbnRwdHJfdCBtX3NvdXJjZUlEOworICAgIHVuc2lnbmVkIG1fbGluZTsKKyAg
ICB1bnNpZ25lZCBtX2NvbHVtbjsKK307CisKK2NsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
ciB7CisKK3B1YmxpYzoKKyAgICBTdHJpbmcgZ2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5z
aWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGluZSwg
dW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qg
c291cmNlSUQpOworICAgIFN0cmluZyBnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1
bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5l
LCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJf
dCBzb3VyY2VJRCk7CisgICAgU3RyaW5nIGdldExvY2FsVHlwZXNGb3JWYXJpYWJsZUluUmFuZ2Uo
dW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGlu
ZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRy
X3Qgc291cmNlSUQpOworICAgIHZvaWQgaW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKik7
CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBMb2NhdGlvbktleSBnZXRMb2NhdGlvbkJhc2Vk
SGFzaChpbnRwdHJfdCwgdW5zaWduZWQpOworCisgICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9t
YXA8TG9jYXRpb25LZXksIFJlZlB0cjxUeXBlU2V0PiwgSGFzaE1ldGhvZDxMb2NhdGlvbktleT4+
IEdsb2JhbExvY2F0aW9uTWFwOyAKKyAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxpbnQ2
NF90LCBSZWZQdHI8VHlwZVNldD4+IEdsb2JhbElETWFwOyAKKyAgICB0eXBlZGVmIHN0ZDo6dW5v
cmRlcmVkX21hcDxMb2NhdGlvbktleSwgaW50NjRfdCwgSGFzaE1ldGhvZDxMb2NhdGlvbktleT4+
IEdsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcDsKKworICAgIEdsb2JhbElETWFwIG1fZ2xvYmFs
SURNYXA7CisgICAgR2xvYmFsTG9jYXRpb25NYXAgbV9nbG9iYWxMb2NhdGlvbk1hcDsKKyAgICBH
bG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXAgbV9nbG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXA7
Cit9OworCit9IC8vbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy9IaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2
aXNpb24gMTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNyArMjcxLDkgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBv
cHRpb25TdHJpbmc7CiAgICAgdihib29sLCBkaXNhYmxlR0MsIGZhbHNlKSBcCiAgICAgdih1bnNp
Z25lZCwgZ2NNYXhIZWFwU2l6ZSwgMCkgXAogICAgIHYoYm9vbCwgcmVjb3JkR0NQYXVzZVRpbWVz
LCBmYWxzZSkgXAotICAgIHYoYm9vbCwgbG9nSGVhcFN0YXRpc3RpY3NBdEV4aXQsIGZhbHNlKQor
ICAgIHYoYm9vbCwgbG9nSGVhcFN0YXRpc3RpY3NBdEV4aXQsIGZhbHNlKSBcCisgICAgdihib29s
LCBwcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5LCBmYWxzZSkKKyAgICAKIAogY2xhc3MgT3B0
aW9ucyB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTIsNiArMTA1MiwzOSBA
QCBib29sIFN0cnVjdHVyZTo6cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlCiAgICAgfQogfQogCisK
K1Bhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZTo6dG9TdHJ1Y3R1cmVTaGFwZSgp
Cit7CisgICAgVmVjdG9yPFN0cnVjdHVyZSosIDg+IHN0cnVjdHVyZXM7CisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmU7CisgICAgUHJvcGVydHlUYWJsZSogdGFibGU7CisgICAgUmVmUHRyPFN0cnVj
dHVyZVNoYXBlPiBzaGFwZSA9IFN0cnVjdHVyZVNoYXBlOjpjcmVhdGUoKTsKKworICAgIGZpbmRT
dHJ1Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKHN0cnVjdHVyZXMsIHN0cnVjdHVyZSwg
dGFibGUpOworICAgIAorICAgIGlmICh0YWJsZSkgeworICAgICAgICBQcm9wZXJ0eVRhYmxlOjpp
dGVyYXRvciBpdGVyID0gdGFibGUtPmJlZ2luKCk7CisgICAgICAgIFByb3BlcnR5VGFibGU6Oml0
ZXJhdG9yIGVuZCA9IHRhYmxlLT5lbmQoKTsKKworICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7
ICsraXRlcikKKyAgICAgICAgICAgIHNoYXBlLT5hZGRQcm9wZXJ0eShpdGVyLT5rZXkpOworICAg
ICAgICAKKyAgICAgICAgc3RydWN0dXJlLT5tX2xvY2sudW5sb2NrKCk7CisgICAgfQorICAgIAor
ICAgIGZvciAodW5zaWduZWQgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKKyAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBzaGFwZS0+YWRkUHJvcGVydHkoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLmdldCgpKTsK
KyAgICB9CisKKyAgICBzaGFwZS0+bWFya0FzRmluYWwoKTsKKworICAgIHJldHVybiBzaGFwZS5y
ZWxlYXNlKCk7Cit9CisKIHZvaWQgU3RydWN0dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiB7CiAgICAgb3V0LnByaW50KFJhd1BvaW50ZXIodGhpcyksICI6WyIsIGNsYXNzSW5mbygp
LT5jbGFzc05hbWUsICIsIHsiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNzAzODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzkwLDYgKzM5MCw4IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0Owog
ICAgIH0KKworICAgIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHRvU3RydWN0dXJlU2hhcGUo
KTsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1
bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2aXNpb24g
MTcwMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDExIEBAIFN5bWJvbFRhYmxlOjpTeW1ib2xU
YWJsZShWTSYgdm0pCiAgICAgLCBtX2NhcHR1cmVFbmQoMCkKICAgICAsIG1fZnVuY3Rpb25FbnRl
cmVkT25jZShDbGVhcldhdGNocG9pbnQpCiB7CisgICAgaWYgKHZtLmlzUHJvZmlsaW5nVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgbV91bmlxdWVJRE1hcCA9IHN0ZDo6bWFrZV91
bmlxdWU8VW5pcXVlSURNYXA+KCk7CisgICAgICAgIG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwID0g
c3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlclRvVmFyaWFibGVNYXA+KCk7CisgICAgICAgIG1fdW5p
cXVlVHlwZVNldE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8VW5pcXVlVHlwZVNldE1hcD4oKTsKKyAg
ICB9CiB9CiAKIFN5bWJvbFRhYmxlOjp+U3ltYm9sVGFibGUoKSB7IH0KQEAgLTE1Nyw5ICsxNjIs
NzIgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZUNhcHR1cmVkTgogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBwYXJhbWV0ZXJDb3VudCgpOyBpLS07KQogICAgICAgICAgICAgcmVz
dWx0LT5tX3Nsb3dBcmd1bWVudHNbaV0gPSBtX3Nsb3dBcmd1bWVudHNbaV07CiAgICAgfQorCisg
ICAgaWYgKG1fdW5pcXVlSURNYXAgJiYgcmVzdWx0LT5tX3VuaXF1ZUlETWFwKSB7CisKKyAgICAg
ICAgeworICAgICAgICAgICAgYXV0byBpdGVyID0gbV91bmlxdWVJRE1hcC0+YmVnaW4oKTsKKyAg
ICAgICAgICAgIGF1dG8gZW5kID0gbV91bmlxdWVJRE1hcC0+ZW5kKCk7CisgICAgICAgICAgICBm
b3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fdW5p
cXVlSURNYXAtPnNldChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5i
ZWdpbigpOworICAgICAgICAgICAgYXV0byBlbmQgPSBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcC0+
ZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAg
ICAgICAgICByZXN1bHQtPm1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5zZXQoaXRlci0+a2V5LCBp
dGVyLT52YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGl0
ZXIgPSBtX3VuaXF1ZVR5cGVTZXRNYXAtPmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9
IG1fdW5pcXVlVHlwZVNldE1hcC0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBl
bmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fdW5pcXVlVHlwZVNldE1hcC0+
c2V0KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOworICAgICAgICB9CisgICAgfQorCiAgICAgCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAoraW50NjRfdCBTeW1ib2xUYWJsZTo6dW5pcXVlSURGb3JW
YXJpYWJsZShjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5LCBWTSYg
dm0pCit7CisgICAgYXV0byBpdGVyID0gbV91bmlxdWVJRE1hcC0+ZmluZChrZXkpOworICAgIGF1
dG8gZW5kID0gbV91bmlxdWVJRE1hcC0+ZW5kKCk7CisgICAgQVNTRVJUX1VOVVNFRChlbmQsIGl0
ZXIgIT0gZW5kKTsKKworICAgIGludDY0X3QmIGlkID0gaXRlci0+dmFsdWU7CisgICAgaWYgKGlk
ID09IEhpZ2hGaWRlbGl0eU5lZWRzVW5pcXVlSURHZW5lcmF0aW9uKSB7CisgICAgICAgIGlkID0g
dm0uZ2V0TmV4dFVuaXF1ZVZhcmlhYmxlSUQoKTsKKyAgICAgICAgbV91bmlxdWVUeXBlU2V0TWFw
LT5zZXQoa2V5LCBUeXBlU2V0OjpjcmVhdGUoKSk7IC8vbWFrZSBhIG5ldyBnbG9iYWwgdHlwZXNl
dCBmb3IgdGhlIElECisgICAgfQorICAgICAgICAgCisgICAgcmV0dXJuIGlkOworfQorCitpbnQ2
NF90IFN5bWJvbFRhYmxlOjp1bmlxdWVJREZvclJlZ2lzdGVyKGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImIGxvY2tlciwgaW50IHJlZ2lzdGVySW5kZXgsIFZNJiB2bSkKK3sKKyAgICBhdXRvIGl0
ZXIgPSBtX3JlZ2lzdGVyVG9WYXJpYWJsZU1hcC0+ZmluZChyZWdpc3RlckluZGV4KTsKKyAgICBh
dXRvIGVuZCA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5lbmQoKTsKKyAgICBBU1NFUlRfVU5V
U0VEKGVuZCwgaXRlciAhPSBlbmQpOworICAgIHJldHVybiB1bmlxdWVJREZvclZhcmlhYmxlKGxv
Y2tlciwgaXRlci0+dmFsdWUuZ2V0KCksIHZtKTsKK30KKworUmVmUHRyPFR5cGVTZXQ+IFN5bWJv
bFRhYmxlOjpnbG9iYWxUeXBlU2V0Rm9yUmVnaXN0ZXIoY29uc3QgQ29uY3VycmVudEpJVExvY2tl
ciYgbG9ja2VyLCBpbnQgcmVnaXN0ZXJJbmRleCwgVk0mIHZtKQoreworICAgIHVuaXF1ZUlERm9y
UmVnaXN0ZXIobG9ja2VyLCByZWdpc3RlckluZGV4LCB2bSk7IC8vZW5zdXJlIGl0J3MgY3JlYXRl
ZAorICAgIGF1dG8gaXRlciA9IG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5maW5kKHJlZ2lzdGVy
SW5kZXgpOworICAgIGF1dG8gZW5kID0gbV9yZWdpc3RlclRvVmFyaWFibGVNYXAtPmVuZCgpOwor
ICAgIEFTU0VSVF9VTlVTRUQoZW5kLCBpdGVyICE9IGVuZCk7CisgICAgcmV0dXJuIGdsb2JhbFR5
cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGl0ZXItPnZhbHVlLmdldCgpLCB2bSk7Cit9CisKK1Jl
ZlB0cjxUeXBlU2V0PiBTeW1ib2xUYWJsZTo6Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGNvbnN0
IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgU3RyaW5nSW1wbCoga2V5LCBWTSYgdm0pCit7
CisgICAgdW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGtleSwgdm0pOworICAgIHJldHVybiBt
X3VuaXF1ZVR5cGVTZXRNYXAtPmZpbmQoa2V5KS0+dmFsdWU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmgJKHJldmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUg
IkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJU
eXBlU2V0LmgiCiAjaW5jbHVkZSAiVmFyaWFibGVXYXRjaHBvaW50U2V0LmgiCiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CkBAIC0zMzYsNiArMzM3LDkgQEAg
cHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFN0cmluZ0ltcGw+LCBTeW1ib2xUYWJsZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwg
SGFzaFRyYWl0czxSZWZQdHI8U3RyaW5nSW1wbD4+LCBTeW1ib2xUYWJsZUluZGV4SGFzaFRyYWl0
cz4gTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludDY0X3Q+
IFVuaXF1ZUlETWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIFJl
ZlB0cjxUeXBlU2V0Pj4gVW5pcXVlVHlwZVNldE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50
LCBSZWZQdHI8U3RyaW5nSW1wbD4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IFJlZ2lzdGVyVG9WYXJpYWJsZU1hcDsKIAogICAgIHN0
YXRpYyBTeW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKICAgICB7CkBAIC00MTMsNiArNDE3LDEy
IEBAIHB1YmxpYzoKICAgICAKICAgICBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgQ29uY3VycmVu
dEpJVExvY2tlciYsIFN0cmluZ0ltcGwqIGtleSwgY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgZW50
cnkpCiAgICAgeworICAgICAgICBpZiAobV91bmlxdWVJRE1hcCkgeworICAgICAgICAgICAgLy8g
VXNlIGEgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHdlIG5lZWQgdG8gcHJvZHVjZSBhIHVuaXF1ZSBJ
RC4gQmVjYXVzZSBWTSBpcyBpbiBjaGFyZ2Ugb2YgY3JlYXRpbmcgdW5pcXVlSURzLCAKKyAgICAg
ICAgICAgIC8vIHdoZW4gdW5pcXVlSUQoKSBpcyBjYWxsZWQsIHdlIGNoZWNrIHRoaXMgZmxhZyB0
byBzZWUgaWYgdW5pcXVlSUQgY3JlYXRpb24gaXMgbmVjZXNzYXJ5LgorICAgICAgICAgICAgbV91
bmlxdWVJRE1hcC0+c2V0KGtleSwgSGlnaEZpZGVsaXR5TmVlZHNVbmlxdWVJREdlbmVyYXRpb24p
OyAKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJUb1ZhcmlhYmxlTWFwLT5zZXQoZW50cnkuZ2V0SW5k
ZXgoKSwga2V5KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGtleSwgZW50
cnkpOwogICAgIH0KICAgICAKQEAgLTQyNCw2ICs0MzQsMTAgQEAgcHVibGljOgogICAgIAogICAg
IE1hcDo6QWRkUmVzdWx0IHNldChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1w
bCoga2V5LCBjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSkKICAgICB7CisgICAgICAgIGlm
IChtX3VuaXF1ZUlETWFwKSB7CisgICAgICAgICAgICBtX3VuaXF1ZUlETWFwLT5zZXQoa2V5LCBI
aWdoRmlkZWxpdHlOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7IAorICAgICAgICAgICAgbV9yZWdp
c3RlclRvVmFyaWFibGVNYXAtPnNldChlbnRyeS5nZXRJbmRleCgpLCBrZXkpOworICAgICAgICB9
CiAgICAgICAgIHJldHVybiBtX21hcC5zZXQoa2V5LCBlbnRyeSk7CiAgICAgfQogICAgIApAQCAt
NDQ0LDYgKzQ1OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjb250YWlucyhsb2NrZXIs
IGtleSk7CiAgICAgfQogICAgIAorICAgIGludDY0X3QgdW5pcXVlSURGb3JWYXJpYWJsZShjb25z
dCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5LCBWTSYgdm0pOworICAgIGlu
dDY0X3QgdW5pcXVlSURGb3JSZWdpc3Rlcihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2Nr
ZXIsIGludCByZWdpc3RlckluZGV4LCBWTSYgdm0pOworICAgIFJlZlB0cjxUeXBlU2V0PiBnbG9i
YWxUeXBlU2V0Rm9yUmVnaXN0ZXIoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBp
bnQgcmVnaXN0ZXJJbmRleCwgVk0mIHZtKTsKKyAgICBSZWZQdHI8VHlwZVNldD4gZ2xvYmFsVHlw
ZVNldEZvclZhcmlhYmxlKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgU3RyaW5n
SW1wbCoga2V5LCBWTSYgdm0pOworCiAgICAgYm9vbCB1c2VzTm9uU3RyaWN0RXZhbCgpIHsgcmV0
dXJuIG1fdXNlc05vblN0cmljdEV2YWw7IH0KICAgICB2b2lkIHNldFVzZXNOb25TdHJpY3RFdmFs
KGJvb2wgdXNlc05vblN0cmljdEV2YWwpIHsgbV91c2VzTm9uU3RyaWN0RXZhbCA9IHVzZXNOb25T
dHJpY3RFdmFsOyB9CiAKQEAgLTQ5NCw3ICs1MTMsMTAgQEAgcHJpdmF0ZToKICAgICB+U3ltYm9s
VGFibGUoKTsKIAogICAgIE1hcCBtX21hcDsKLSAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VW5p
cXVlSURNYXA+IG1fdW5pcXVlSURNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyVG9W
YXJpYWJsZU1hcD4gbV9yZWdpc3RlclRvVmFyaWFibGVNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFVuaXF1ZVR5cGVTZXRNYXA+IG1fdW5pcXVlVHlwZVNldE1hcDsKKwogICAgIGludCBtX3BhcmFt
ZXRlckNvdW50SW5jbHVkaW5nVGhpczsKICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWw7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVHlw
ZVNldC5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitUeXBlU2V0OjpUeXBl
U2V0KCkKKyAgICA6IG1fc2VlblR5cGVzKFR5cGVOb3RoaW5nKQorICAgICwgbV9zdHJ1Y3R1cmVI
aXN0b3J5KG5ldyBWZWN0b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4pCisgICAgLCBtX21pZ2h0
SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkoZmFsc2UpCit7Cit9CisKK1J1bnRpbWVU
eXBlIFR5cGVTZXQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFsdWUoSlNWYWx1ZSB2KQoreworICAgIFJ1
bnRpbWVUeXBlIHJldDsKKyAgICBpZiAodi5pc0Z1bmN0aW9uKCkpCisgICAgICAgIHJldCA9IFR5
cGVGdW5jdGlvbjsKKyAgICBlbHNlIGlmICh2LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldCA9
IFR5cGVVbmRlZmluZWQ7CisgICAgZWxzZSBpZiAodi5pc051bGwoKSkKKyAgICAgICAgcmV0ID0g
VHlwZU51bGw7CisgICAgZWxzZSBpZiAodi5pc0Jvb2xlYW4oKSkKKyAgICAgICAgcmV0ID0gVHlw
ZUJvb2xlYW47CisgICAgZWxzZSBpZiAodi5pc01hY2hpbmVJbnQoKSkKKyAgICAgICAgcmV0ID0g
VHlwZU1hY2hpbmVJbnQ7CisgICAgZWxzZSBpZiAodi5pc051bWJlcigpKQorICAgICAgICByZXQg
PSBUeXBlTnVtYmVyOworICAgIGVsc2UgaWYgKHYuaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0ID0g
VHlwZVN0cmluZzsKKyAgICBlbHNlIGlmICh2LmlzUHJpbWl0aXZlKCkpCisgICAgICAgIHJldCA9
IFR5cGVQcmltaXRpdmU7CisgICAgZWxzZSBpZiAodi5pc09iamVjdCgpKQorICAgICAgICByZXQg
PSBUeXBlT2JqZWN0OworICAgIGVsc2UKKyAgICAgICAgQ1JBU0goKTsKKworICAgIHJldHVybiBy
ZXQ7Cit9CisKK3ZvaWQgVHlwZVNldDo6YWRkVHlwZUZvclZhbHVlKEpTVmFsdWUgdiwgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gc2hhcGUpIAoreworICAgIFJ1bnRpbWVUeXBlIHQgPSBnZXRS
dW50aW1lVHlwZUZvclZhbHVlKHYpOworICAgIG1fc2VlblR5cGVzID0gbV9zZWVuVHlwZXMgfCB0
OworCisgICAgaWYgKHNoYXBlKSB7CisgICAgICAgIG1fc3RydWN0dXJlSGlzdG9yeS0+YXBwZW5k
KHNoYXBlKTsKKyAgICAgICAgbV9taWdodEhhdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5
ID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgVHlwZVNldDo6cmVtb3ZlRHVwbGljYXRlc0luU3Ry
dWN0dXJlSGlzdG9yeSgpIAoreworICAgIFZlY3RvcjxSZWZQdHI8U3RydWN0dXJlU2hhcGU+Piog
bmV3SGlzdG9yeSA9IG5ldyBWZWN0b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj47CisgICAgSGFz
aE1hcDxTdHJpbmcsIGJvb2w+IGNvbnRhaW5lcjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fc3RydWN0dXJlSGlzdG9yeS0+c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgUmVmUHRyPFN0cnVj
dHVyZVNoYXBlPiBhID0gbV9zdHJ1Y3R1cmVIaXN0b3J5LT5hdChpKTsKKyAgICAgICAgU3RyaW5n
IGhhc2ggPSBhLT5wcm9wZXJ0eUhhc2goKTsKKyAgICAgICAgYXV0byBpdGVyID0gY29udGFpbmVy
LmZpbmQoaGFzaCk7CisgICAgICAgIGlmIChpdGVyID09IGNvbnRhaW5lci5lbmQoKSkgeworICAg
ICAgICAgICAgY29udGFpbmVyLmFkZChoYXNoLCB0cnVlKTsKKyAgICAgICAgICAgIG5ld0hpc3Rv
cnktPmFwcGVuZChhKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRlbGV0ZSBtX3N0cnVjdHVy
ZUhpc3Rvcnk7CisgICAgbV9zdHJ1Y3R1cmVIaXN0b3J5ID0gbmV3SGlzdG9yeTsKKyAgICBtX21p
Z2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkgPSBmYWxzZTsKK30KKworU3RyaW5n
IFR5cGVTZXQ6OnNlZW5UeXBlcygpIAoreworICAgIGlmIChtX3NlZW5UeXBlcyA9PSBUeXBlTm90
aGluZykKKyAgICAgICAgcmV0dXJuICIoVW5yZWFjaGVkIFN0YXRlbWVudCkiOworCisgICAgaWYg
KG1fbWlnaHRIYXZlRHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeSkKKyAgICAgICAgcmVtb3Zl
RHVwbGljYXRlc0luU3RydWN0dXJlSGlzdG9yeSgpOworCisgICAgU3RyaW5nQnVpbGRlciBzZWVu
OworCisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZUZ1bmN0aW9uKQorICAgICAgICAgc2Vlbi5h
cHBlbmQoIkZ1bmN0aW9uICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVVbmRlZmluZWQp
CisgICAgICAgICBzZWVuLmFwcGVuZCgiVW5kZWZpbmVkICIpOworICAgIGlmIChtX3NlZW5UeXBl
cyAmIFR5cGVOdWxsKQorICAgICAgICAgc2Vlbi5hcHBlbmQoIk51bGwgIik7CisgICAgaWYgKG1f
c2VlblR5cGVzICYgVHlwZUJvb2xlYW4pCisgICAgICAgICBzZWVuLmFwcGVuZCgiQm9vbGVhbiAi
KTsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTWFjaGluZUludCkKKyAgICAgICAgIHNlZW4u
YXBwZW5kKCJNYWNoaW5lSW50ICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdW1iZXIp
CisgICAgICAgICBzZWVuLmFwcGVuZCgiTnVtYmVyICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAm
IFR5cGVTdHJpbmcpCisgICAgICAgICBzZWVuLmFwcGVuZCgiU3RyaW5nICIpOworICAgIGlmICht
X3NlZW5UeXBlcyAmIFR5cGVQcmltaXRpdmUpCisgICAgICAgICBzZWVuLmFwcGVuZCgiUHJpbWl0
aXZlICIpOworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVPYmplY3QpCisgICAgICAgICBzZWVu
LmFwcGVuZCgiT2JqZWN0ICIpOworCisgICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS0+c2l6ZSgp
KSAKKyAgICAgICAgc2Vlbi5hcHBlbmQoIlxuU3RydWN0dXJlczpbICIpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LT5zaXplKCk7IGkrKykgeworICAgICAg
ICBzZWVuLmFwcGVuZChtX3N0cnVjdHVyZUhpc3RvcnktPmF0KGkpLT5zdHJpbmdSZXByZXNlbnRh
dGlvbigpKTsKKyAgICAgICAgc2Vlbi5hcHBlbmQoIiAiKTsKKyAgICB9CisgICAgaWYgKG1fc3Ry
dWN0dXJlSGlzdG9yeS0+c2l6ZSgpKQorICAgICAgICBzZWVuLmFwcGVuZCgiXSIpOworCisgICAg
aWYgKG1fc3RydWN0dXJlSGlzdG9yeS0+c2l6ZSgpKSB7CisgICAgICAgIHNlZW4uYXBwZW5kKCJc
bkxVQjogIik7CisgICAgICAgIHNlZW4uYXBwZW5kKFN0cnVjdHVyZVNoYXBlOjpsZWFzdFVwcGVy
Qm91bmQobV9zdHJ1Y3R1cmVIaXN0b3J5KSk7CisgICAgfQorCisgICAgcmV0dXJuIHNlZW4udG9T
dHJpbmcoKTsKK30KKwordm9pZCBUeXBlU2V0OjpkdW1wU2VlblR5cGVzKCkKK3sKKyAgICBkYXRh
TG9nKHNlZW5UeXBlcygpLCAiXG4iKTsKK30KKworU3RydWN0dXJlU2hhcGU6OlN0cnVjdHVyZVNo
YXBlKCkKKyAgICA6IG1fcHJvcGVydHlIYXNoKG51bGxwdHIpCisgICAgLCBtX2ZpbmFsKGZhbHNl
KQoreworfQorCit2b2lkIFN0cnVjdHVyZVNoYXBlOjptYXJrQXNGaW5hbCgpCit7CisgICAgQVNT
RVJUKCFtX2ZpbmFsKTsKKyAgICBtX2ZpbmFsID0gdHJ1ZTsKK30KKwordm9pZCBTdHJ1Y3R1cmVT
aGFwZTo6YWRkUHJvcGVydHkoUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpCit7CisgICAgQVNTRVJU
KCFtX2ZpbmFsKTsKKyAgICBtX2ZpZWxkcy5zZXQoaW1wbCwgdHJ1ZSk7Cit9CisKK1N0cmluZyBT
dHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNoKCkgCit7CisgICAgQVNTRVJUKG1fZmluYWwpOwor
ICAgIGlmIChtX3Byb3BlcnR5SGFzaCkKKyAgICAgICAgcmV0dXJuICptX3Byb3BlcnR5SGFzaDsK
KworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgiOiIpOwor
ICAgIGZvciAoYXV0byBpdGVyID0gbV9maWVsZHMuYmVnaW4oKSwgZW5kID0gbV9maWVsZHMuZW5k
KCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgU3RyaW5nIHByb3BlcnR5ID0gU3Ry
aW5nKGl0ZXItPmtleSk7CisgICAgICAgIHByb3BlcnR5LnJlcGxhY2UoIjoiLCAiXFw6Iik7IC8v
IEVuc3VyZSB0aGF0IGhhc2goeyJmb286IiwgImJhciJ9KSAhPSBoYXNoKHsiZm9vIiwgIjpiYXIi
fSkgYmVjYXVzZSB3ZSdyZSB1c2luZyBjb2xvbnMgYXMgYSBzZXBhcmF0b3IgYW5kIGNvbG9ucyBh
cmUgbGVnYWwgY2hhcmFjdGVycyBpbiBmaWVsZCBuYW1lcyBpbiBKUy4KKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQocHJvcGVydHkpOworICAgIH0KKworICAgIG1fcHJvcGVydHlIYXNoID0gc3RkOjpt
YWtlX3VuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgcmV0dXJuICptX3By
b3BlcnR5SGFzaDsKK30KKworU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpsZWFzdFVwcGVyQm91bmQo
VmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+KiBzaGFwZXMpCit7CisgICAgaWYgKCFzaGFw
ZXMtPnNpemUoKSkKKyAgICAgICAgcmV0dXJuICIiOworCisgICAgU3RyaW5nQnVpbGRlciBsdWI7
CisgICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBvcmlnaW4gPSBzaGFwZXMtPmF0KDApOworICAg
IGx1Yi5hcHBlbmQoInsiKTsKKyAgICBmb3IgKGF1dG8gaXRlciA9IG9yaWdpbi0+bV9maWVsZHMu
YmVnaW4oKSwgZW5kID0gb3JpZ2luLT5tX2ZpZWxkcy5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikgeworICAgICAgICBib29sIHNob3VsZEFkZCA9IHRydWU7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAxLCBzaXplID0gc2hhcGVzLT5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAg
ICAgIC8vIElmIGFsbCBvdGhlciBTaGFwZXMgaGF2ZSB0aGUgc2FtZSBmaWVsZCBhcyBvcmlnaW4s
IGFkZCBpdCB0byB0aGUgbGVhc3QgdXBwZXIgYm91bmQuCisgICAgICAgICAgICBpZiAoIXNoYXBl
cy0+YXQoaSktPm1fZmllbGRzLmNvbnRhaW5zKGl0ZXItPmtleSkpIHsKKyAgICAgICAgICAgICAg
ICBzaG91bGRBZGQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBpZiAoc2hvdWxkQWRkKQorICAgICAgICAgICAgbHViLmFw
cGVuZChTdHJpbmcoaXRlci0+a2V5LmdldCgpKSArIFN0cmluZygiLCAiKSk7CisgICAgfQorCisg
ICAgaWYgKGx1Yi5sZW5ndGgoKSA+PSAzKQorICAgICAgICBsdWIucmVzaXplKGx1Yi5sZW5ndGgo
KSAtIDIpOyAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nICcsICcKKworICAgIGx1Yi5hcHBlbmQoIn0i
KTsKKyAgICAKKyAgICByZXR1cm4gbHViLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBTdHJ1Y3R1
cmVTaGFwZTo6c3RyaW5nUmVwcmVzZW50YXRpb24oKQoreworICAgIFN0cmluZ0J1aWxkZXIgcmVw
cmVzZW50YXRpb247CisgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKCJ7Iik7CisgICAgZm9yIChh
dXRvIGl0ZXIgPSBtX2ZpZWxkcy5iZWdpbigpLCBlbmQgPSBtX2ZpZWxkcy5lbmQoKTsgaXRlciAh
PSBlbmQ7ICsraXRlcikgeworICAgICAgICBTdHJpbmcgcHJvcChpdGVyLT5rZXkuZ2V0KCkpOwor
ICAgICAgICByZXByZXNlbnRhdGlvbi5hcHBlbmQocHJvcCk7CisgICAgICAgIHJlcHJlc2VudGF0
aW9uLmFwcGVuZCgiLCAiKTsKKyAgICB9CisKKyAgICBpZiAocmVwcmVzZW50YXRpb24ubGVuZ3Ro
KCkgPj0gMykKKyAgICAgICAgcmVwcmVzZW50YXRpb24ucmVzaXplKHJlcHJlc2VudGF0aW9uLmxl
bmd0aCgpIC0gMik7CisKKyAgICByZXByZXNlbnRhdGlvbi5hcHBlbmQoIn0iKTsKKworICAgIHJl
dHVybiByZXByZXNlbnRhdGlvbi50b1N0cmluZygpOworfQorCit9IC8vbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBUeXBlU2V0X2gKKyNkZWZpbmUgVHlwZVNldF9oCisKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNWYWx1ZTsKKworZW51bSBSdW50aW1lVHlwZSB7Cisg
ICAgVHlwZU5vdGhpbmcgICAgICAgICAgICA9IDB4MCwKKyAgICBUeXBlRnVuY3Rpb24gICAgICAg
ICAgID0gMHgxLAorICAgIFR5cGVVbmRlZmluZWQgICAgICAgICAgPSAweDIsCisgICAgVHlwZU51
bGwgICAgICAgICAgICAgICA9IDB4NCwKKyAgICBUeXBlQm9vbGVhbiAgICAgICAgICAgID0gMHg4
LAorICAgIFR5cGVNYWNoaW5lSW50ICAgICAgICAgPSAweDEwLAorICAgIFR5cGVOdW1iZXIgICAg
ICAgICAgICAgPSAweDIwLAorICAgIFR5cGVTdHJpbmcgICAgICAgICAgICAgPSAweDQwLAorICAg
IFR5cGVQcmltaXRpdmUgICAgICAgICAgPSAweDgwLAorICAgIFR5cGVPYmplY3QgICAgICAgICAg
ICAgPSAweDEwMAorfTsKKworY2xhc3MgU3RydWN0dXJlU2hhcGUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdHJ1Y3R1cmVTaGFwZT4geworICAgIGZyaWVuZCBjbGFzcyBUeXBlU2V0OworCitwdWJsaWM6
CisgICAgU3RydWN0dXJlU2hhcGUoKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZVNoYXBlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3RydWN0dXJlU2hhcGUpOyB9
CisgICAgU3RyaW5nIHByb3BlcnR5SGFzaCgpOworICAgIHZvaWQgbWFya0FzRmluYWwoKTsKKyAg
ICB2b2lkIGFkZFByb3BlcnR5KFJlZlB0cjxTdHJpbmdJbXBsPik7CisgICAgc3RhdGljIFN0cmlu
ZyBsZWFzdFVwcGVyQm91bmQoVmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+Kik7CisgICAg
U3RyaW5nIHN0cmluZ1JlcHJlc2VudGF0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxS
ZWZQdHI8U3RyaW5nSW1wbD4sIGJvb2w+IG1fZmllbGRzOyAgICAgICAgIAorICAgIHN0ZDo6dW5p
cXVlX3B0cjxTdHJpbmc+IG1fcHJvcGVydHlIYXNoOworICAgIGJvb2wgbV9maW5hbDsKK307CisK
K2NsYXNzIFR5cGVTZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxUeXBlU2V0PiB7CisKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlU2V0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgVHlwZVNldCk7IH0KKyAgICBUeXBlU2V0KCk7CisgICAgdm9pZCBhZGRUeXBlRm9yVmFs
dWUoSlNWYWx1ZSB2LCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPik7CisgICAgc3RhdGljIFJ1
bnRpbWVUeXBlIGdldFJ1bnRpbWVUeXBlRm9yVmFsdWUoSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIHNlZW5UeXBlcygpOworCitwcml2YXRlOgorICAgIHVpbnQzMl90IG1f
c2VlblR5cGVzOworICAgIHZvaWQgZHVtcFNlZW5UeXBlcygpOworICAgIFZlY3RvcjxSZWZQdHI8
U3RydWN0dXJlU2hhcGU+PiogbV9zdHJ1Y3R1cmVIaXN0b3J5OworICAgIGJvb2wgbV9taWdodEhh
dmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5OworICAgIHZvaWQgcmVtb3ZlRHVwbGljYXRl
c0luU3RydWN0dXJlSGlzdG9yeSgpOworCit9OworCit9IC8vbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy9UeXBlU2V0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJl
dmlzaW9uIDE3MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQAogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKKyNp
bmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKKyNpbmNsdWRlICJIaWdoRmlkZWxp
dHlMb2cuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgpAQCAtODgsNiArOTAs
NyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFk
RGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICNpbmNsdWRlICJD
b25zZXJ2YXRpdmVSb290cy5oIgpAQCAtMjM2LDYgKzIzOSw3IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fY29kZUNhY2hlKENvZGVDYWNoZTo6Y3Jl
YXRlKCkpCiAgICAgLCBtX2VuYWJsZWRQcm9maWxlcihudWxscHRyKQogICAgICwgbV9idWlsdGlu
RXhlY3V0YWJsZXMoQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9u
ZXh0VW5pcXVlVmFyaWFibGVJRCgxKQogewogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJl
dGVyKCp0aGlzKTsKICAgICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFj
aygpOwpAQCAtMzI3LDYgKzMzMSwxMiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGlzIGxhc3QsIGFzIGEgZnJlZSB3YXkgb2Yg
YXNzZXJ0aW5nIHRoYXQgVk0gaW5pdGlhbGl6YXRpb24gaXRzZWxmCiAgICAgLy8gd29uJ3QgdXNl
IHRoaXMuCiAgICAgbV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVU
eXBlZEFycmF5Q29udHJvbGxlcigpKTsKKworICAgIC8vIEZJWE1FOiBjb25kaXRpb25hbGx5IGFs
bG9jYXRlIHRoaXMgc3R1ZmYgYmFzZWQgb24gd2hldGhlciBvciBub3QgdGhlIGluc3BlY3RvciBp
cyBydW5uaW5nIE9SIHRoaXMgZmxhZyBpcyBlbmFibGVkIChub3QganVzdCBpZiB0aGUgZmxhZyBp
cyBlbmFibGVkKS4KKyAgICBpZiAoT3B0aW9uczo6cHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0
eSgpKSB7CisgICAgICAgIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI+KCk7CisgICAgICAgIG1faGlnaEZpZGVsaXR5
TG9nID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdoRmlkZWxpdHlMb2c+KCk7CisgICAgfQogfQogCiBW
TTo6flZNKCkKQEAgLTkxOSw2ICs5MjksNDYgQEAgdm9pZCBWTTo6c2V0RW5hYmxlZFByb2ZpbGVy
KExlZ2FjeVByb2ZpbAogICAgIH0KIH0KIAorU3RyaW5nIFZNOjpnZXRUeXBlc0ZvclZhcmlhYmxl
SW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1l
LCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEQXNTdHJpbmcpCit7CisgICAgaWYgKCFpc1Byb2ZpbGlu
Z1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICByZXR1cm4gIihOb3QgUHJvZmlsaW5n
KSI7CisKKyAgICBib29sIG9rYXk7CisgICAgaW50cHRyX3Qgc291cmNlSUQgPSBzb3VyY2VJREFz
U3RyaW5nLnRvSW50UHRyU3RyaWN0KCZva2F5KTsKKyAgICBpZiAoIW9rYXkpCisgICAgICAgIENS
QVNIKCk7CisKKyAgICB1cGRhdGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZVN0YXRlKCk7CisgICAg
cmV0dXJuIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLT5nZXRUeXBlc0ZvclZhcmlhYmxlSW5S
YW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxl
TmFtZSwgc291cmNlSUQpOworfQorCit2b2lkIFZNOjp1cGRhdGVIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsZVN0YXRlKCkKK3sKKyAgICBpZiAoIWlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGhpZ2hGaWRlbGl0eUxvZygpLT5wcm9jZXNzSGln
aEZpZGVsaXR5TG9nKGZhbHNlLCAiVk0gVXBkYXRlIik7Cit9CisKK3ZvaWQgVk06OmR1bXBIaWdo
RmlkZWxpdHlQcm9maWxpbmdUeXBlcygpCit7CisgICAgaWYgKCFpc1Byb2ZpbGluZ1R5cGVzV2l0
aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVIaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZVN0YXRlKCk7CisgICAgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKiBwcm9m
aWxlciA9IG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmdldCgpOworICAgIGZvciAoQmFnPFR5
cGVMb2NhdGlvbj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2xvY2F0aW9uSW5mby5iZWdpbigpOyAhIWl0
ZXI7ICsraXRlcikgeworICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gKml0ZXI7Cisg
ICAgICAgIGRhdGFMb2dGKCJbTGluZSwgQ29sdW1uXTo6WyV1LCAldV0gIiwgbG9jYXRpb24tPm1f
bGluZSwgbG9jYXRpb24tPm1fY29sdW1uKTsKKyAgICAgICAgZGF0YUxvZygiXG5cdFx0I0xvY2Fs
I1xuXHRcdCIsCisgICAgICAgICAgICAgICAgcHJvZmlsZXItPmdldExvY2FsVHlwZXNGb3JWYXJp
YWJsZUluUmFuZ2UobG9jYXRpb24tPm1fbGluZSwgbG9jYXRpb24tPm1fY29sdW1uLCBsb2NhdGlv
bi0+bV9saW5lLCBsb2NhdGlvbi0+bV9jb2x1bW4sICIiLCBsb2NhdGlvbi0+bV9zb3VyY2VJRCku
cmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksCisgICAgICAgICAgICAgICAgIlxuXHRcdCNHbG9iYWwj
XG5cdFx0IiwKKyAgICAgICAgICAgICAgICBwcm9maWxlci0+Z2V0R2xvYmFsVHlwZXNGb3JWYXJp
YWJsZUluUmFuZ2UobG9jYXRpb24tPm1fbGluZSwgbG9jYXRpb24tPm1fY29sdW1uLCBsb2NhdGlv
bi0+bV9saW5lLCBsb2NhdGlvbi0+bV9jb2x1bW4sICIiLCBsb2NhdGlvbi0+bV9zb3VyY2VJRCku
cmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksCisgICAgICAgICAgICAgICAgIlxuIik7CisgICAgfQor
fQorCiB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSogdm0pCiB7CiAgICAgbG9nU2FuaXRpemVT
dGFjayh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE3
MDM4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDkgKzQ2LDExIEBACiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGh1
bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogI2luY2x1ZGUgIldh
dGNocG9pbnQuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCisjaW5jbHVkZSA8d3RmL0JhZy5o
PgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9E
YXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC03NCw2ICs3Niw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogICAgIGNsYXNzIEV4
ZWNTdGF0ZTsKICAgICBjbGFzcyBIYW5kbGVTdGFjazsKKyAgICBjbGFzcyBIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXI7CisgICAgY2xhc3MgSGlnaEZpZGVsaXR5TG9nOwogICAgIGNsYXNzIElkZW50
aWZpZXI7CiAgICAgY2xhc3MgSW50ZXJwcmV0ZXI7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CkBAIC04NCw2ICs4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1
dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7Cisg
ICAgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VQcm92aWRlcjsKICAg
ICBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlOwogICAgIHN0cnVjdCBTdGFja0ZyYW1lOwpAQCAt
OTYsNiArMTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgVW5saW5rZWRFdmFsQ29k
ZUJsb2NrOwogICAgIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNz
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKKyAgICBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiAg
ICAgY2xhc3MgVk1FbnRyeVNjb3BlOwogICAgIGNsYXNzIFdhdGNocG9pbnQ7CiAgICAgY2xhc3Mg
V2F0Y2hwb2ludFNldDsKQEAgLTUxMCw2ICs1MTYsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIAogICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVjdXRhYmxlcygpIHsg
cmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKKyAgICAgICAgYm9vbCBpc1By
b2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpIHsgcmV0dXJuICEhbV9oaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZXI7IH0KKyAgICAgICAgU3RyaW5nIGdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdl
KHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExp
bmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0
IFN0cmluZyYgc291cmNlSUQpOworICAgICAgICBIaWdoRmlkZWxpdHlMb2cqIGhpZ2hGaWRlbGl0
eUxvZygpIHsgcmV0dXJuIG1faGlnaEZpZGVsaXR5TG9nLmdldCgpOyB9CisgICAgICAgIEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlciogaGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKCkgeyByZXR1cm4g
bV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCB1cGRhdGVI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZVN0YXRlKCk7CisgICAgICAgIFR5cGVMb2NhdGlvbiogbmV4
dExvY2F0aW9uKCkgeyByZXR1cm4gbV9sb2NhdGlvbkluZm8uYWRkKCk7IH0gLy9UT0RPOiBwb3Nz
aWJsZSBvcHRtaXphdGlvbjogd2hlbiBjb2RlYmxvY2tzIGRpZSwgcmVwb3J0IHdoaWNoIGxvY2F0
aW9ucyBhcmUgbm8gbG9uZ2VyIGJlaW5nIGNoYW5nZWQgc28gd2UgZG9uJ3Qgd2FsayBvdmVyIHRo
ZW0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wSGlnaEZpZGVsaXR5UHJvZmls
aW5nVHlwZXMoKTsKKyAgICAgICAgaW50NjRfdCBnZXROZXh0VW5pcXVlVmFyaWFibGVJRCgpIHsg
cmV0dXJuIG1fbmV4dFVuaXF1ZVZhcmlhYmxlSUQrKzsgfQorCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNs
YXNzIENsZWFyRXhjZXB0aW9uU2NvcGU7CkBAIC01NTgsNiArNTczLDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5FeGVjdXRh
YmxlczsKICAgICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3Rh
Y2s7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+IG1faW1w
dXJlUHJvcGVydHlXYXRjaHBvaW50U2V0czsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlcj4gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxIaWdoRmlkZWxpdHlMb2c+IG1faGlnaEZpZGVsaXR5TG9nOworICAg
ICAgICBpbnQ2NF90IG1fbmV4dFVuaXF1ZVZhcmlhYmxlSUQ7CisgICAgICAgIEJhZzxUeXBlTG9j
YXRpb24+IG1fbG9jYXRpb25JbmZvOwogICAgIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElP
TikK
</data>
<flag name="review"
          id="258336"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234049</attachid>
            <date>2014-06-28 10:08:37 -0700</date>
            <delta_ts>2014-06-30 18:40:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>46142</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxNzA1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxMiwxNCArMTkxMiwxMyBAQCBDb2RlQmxvY2s6
OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAKICAgICAgICAgICAgIGlmIChwY1swXS51
Lm9wY29kZSA9PSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIGZvcm1hdCBvZiB0aGlzIGluc3RydWN0aW9uIGlzOiBwdXRfdG9fc2NvcGVfd2l0
aF9wcm9maWxlIHNjb3BlLCBpZCwgdmFsdWUsIFJlc29sdmVNb2RlQW5kVHlwZSwgU3RydWN0dXJl
LCBPcGVyYW5kLCBUeXBlTG9jYXRpb24qCi0gICAgICAgICAgICAgICAgVHlwZUxvY2F0aW9uKiBs
b2NhdGlvbiA9IHZtKCktPm5leHRMb2NhdGlvbigpOwogICAgICAgICAgICAgICAgIHNpemVfdCBp
bnN0cnVjdGlvbk9mZnNldCA9IGkgKyBvcExlbmd0aCAtIDE7Ci0gICAgICAgICAgICAgICAgaW50
IGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0OyAKLSAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsaW5lID0gMCwgY29sdW1uID0gMDsKLSAgICAgICAgICAgICAgICBleHByZXNzaW9uUmFuZ2VG
b3JCeXRlY29kZU9mZnNldChpbnN0cnVjdGlvbk9mZnNldCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7Ci0KLSAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9s
aW5lID0gbGluZTsKLSAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9jb2x1bW4gPSBjb2x1bW47
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZGl2b3RTdGFydCwgZGl2b3RFbmQ7CisgICAgICAg
ICAgICAgICAgYm9vbCBzaG91bGRBbmFseXplID0gYXNzaWdubWVudEV4cHJlc3Npb25SYW5nZUZv
ckJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7
CisgICAgICAgICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHZtKCktPm5leHRMb2Nh
dGlvbigpOworICAgICAgICAgICAgICAgIC8vcHJpbnRmKCJvcF9wcm9maWxlX3R5cGVzX3dpdGhf
aGlnaF9maWRlbGl0eSBzdGFydERpdm90OiV1IGVuZERpdm90OiV1XG4iLCBkaXZvdFN0YXJ0LCBk
aXZvdEVuZCk7CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fZGl2b3RTdGFydCA9IGRpdm90
U3RhcnQ7CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fZGl2b3RFbmQgPSBkaXZvdEVuZDsK
ICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9zb3VyY2VJRCA9IG1fb3duZXJFeGVjdXRhYmxl
LT5zb3VyY2VJRCgpOwogCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBvdGhlciB2
YWx1ZXMgZm9yIG9wLnR5cGUgaGVyZSwgYW5kIGFsc28gY29uc2lkZXIgd2hhdCB0byBkbyB3aGVu
IHdlIGNhbid0IHN0YXRpY2FsbHkgZGV0ZXJtaW5lIHRoZSBnbG9iYWxJRApAQCAtMTkzNiw3ICsx
OTM1LDggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAg
ICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxW
YXJpYWJsZUlEID0gSGlnaEZpZGVsaXR5Tm9HbG9iYWxJREV4aXN0czsKIAotICAgICAgICAgICAg
ICAgIHZtKCktPmhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcigpLT5pbnNlcnROZXdMb2NhdGlvbihs
b2NhdGlvbik7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEFuYWx5emUpCisgICAgICAgICAg
ICAgICAgICAgIHZtKCktPmhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcigpLT5pbnNlcnROZXdMb2Nh
dGlvbihsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA3XS51Lmxv
Y2F0aW9uID0gbG9jYXRpb247CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAg
LTE5NDQsMTMgKzE5NDQsMTMgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJs
ZSogbwogCiAgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6
IHsKIAorICAgICAgICAgICAgc2l6ZV90IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9wTGVuZ3Ro
IC0gMTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGRpdm90U3RhcnQsIGRpdm90RW5kOworICAgICAg
ICAgICAgYm9vbCBzaG91bGRBbmFseXplID0gYXNzaWdubWVudEV4cHJlc3Npb25SYW5nZUZvckJ5
dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKHBjWzFdLnUub3BlcmFu
ZCk7CiAgICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtX3N5bWJvbFRhYmxl
LmdldCgpOwogICAgICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHZtKCktPm5leHRM
b2NhdGlvbigpOwotICAgICAgICAgICAgc2l6ZV90IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9w
TGVuZ3RoIC0gMTsKLSAgICAgICAgICAgIGludCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dDsgCi0gICAgICAgICAgICB1bnNpZ25lZCBsaW5lID0gMCwgY29sdW1uID0gMDsKLSAgICAgICAg
ICAgIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKKyAgICAgICAgICAg
IC8vcHJpbnRmKCJvcF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eSBzdGFydERpdm90
OiV1IGVuZERpdm90OiV1XG4iLCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAKICAgICAgICAgICAg
IGludCBoYXNHbG9iYWxJREZsYWcgPSBwY1szXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpZiAo
aGFzR2xvYmFsSURGbGFnKSB7CkBAIC0xOTU5LDEzICsxOTU5LDEzIEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9n
bG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JSZWdpc3Rlcihsb2Nr
ZXIsIHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKSwgKnZtKCkpOwogICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRl
bGl0eU5vR2xvYmFsSURFeGlzdHM7Ci0gICAgICAgICAgICAKIAotICAgICAgICAgICAgbG9jYXRp
b24tPm1fbGluZSA9IGxpbmU7Ci0gICAgICAgICAgICBsb2NhdGlvbi0+bV9jb2x1bW4gPSBjb2x1
bW47CisgICAgICAgICAgICBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0ID0gZGl2b3RTdGFydDsKKyAg
ICAgICAgICAgIGxvY2F0aW9uLT5tX2Rpdm90RW5kID0gZGl2b3RFbmQ7CiAgICAgICAgICAgICBs
b2NhdGlvbi0+bV9zb3VyY2VJRCA9IG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpOwogCi0g
ICAgICAgICAgICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+aW5zZXJ0TmV3TG9j
YXRpb24obG9jYXRpb24pOworICAgICAgICAgICAgaWYgKHNob3VsZEFuYWx5emUpCisgICAgICAg
ICAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKCktPmluc2VydE5ld0xvY2F0
aW9uKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgMl0udS5sb2NhdGlv
biA9IGxvY2F0aW9uOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI3ODgsNiAr
Mjc4OCwxMSBAQCB2b2lkIENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvCiAgICAg
bGluZSArPSBtX293bmVyRXhlY3V0YWJsZS0+bGluZU5vKCk7CiB9CiAKK2Jvb2wgQ29kZUJsb2Nr
Ojphc3NpZ25tZW50RXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIHVuc2lnbmVkJiBzdGFydERpdm90LCB1bnNpZ25lZCYgZW5kRGl2b3QpCit7
CisgICAgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5hc3NpZ25tZW50RXhwcmVzc2lvbkluZm9Gb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCwgc3RhcnREaXZvdCwgZW5kRGl2b3QpOworfQor
CiBib29sIENvZGVCbG9jazo6aGFzT3BEZWJ1Z0ZvckxpbmVBbmRDb2x1bW4odW5zaWduZWQgbGlu
ZSwgdW5zaWduZWQgY29sdW1uKQogewogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IHZt
KCktPmludGVycHJldGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkocmV2aXNpb24gMTcwNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNiArMTkwLDcgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KTsKICAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZz
ZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKTsKKyAgICBib29sIGFzc2lnbm1l
bnRFeHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgdW5zaWduZWQmIHN0YXJ0RGl2b3QsIHVuc2lnbmVkJiBlbmREaXZvdCk7CiAKICAgICB2b2lk
IGdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHViSW5mb01hcCYg
cmVzdWx0KTsKICAgICB2b2lkIGdldFN0dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UeXBlTG9jYXRpb24uaAko
cmV2aXNpb24gMTcwNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVM
b2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFR5cGVM
b2NhdGlvbl9oCiAKICNpbmNsdWRlICJUeXBlU2V0LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ2LDggKzQ3LDggQEAgcHVibGljOgogCiAg
ICAgaW50NjRfdCBtX2dsb2JhbFZhcmlhYmxlSUQ7CiAgICAgaW50cHRyX3QgbV9zb3VyY2VJRDsK
LSAgICB1bnNpZ25lZCBtX2xpbmU7Ci0gICAgdW5zaWduZWQgbV9jb2x1bW47CisgICAgdW5zaWdu
ZWQgbV9kaXZvdFN0YXJ0OworICAgIHVuc2lnbmVkIG1fZGl2b3RFbmQ7CiAgICAgUmVmUHRyPFR5
cGVTZXQ+IG1faW5zdHJ1Y3Rpb25UeXBlU2V0OwogICAgIFJlZlB0cjxUeXBlU2V0PiBtX2dsb2Jh
bFR5cGVTZXQ7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNzA1MzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MDUsNiArNDA1LDMyIEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZEV4cHJl
c3Npb25JbmYKICAgICBtX2V4cHJlc3Npb25JbmZvLmFwcGVuZChpbmZvKTsKIH0KIAorYm9vbCBV
bmxpbmtlZENvZGVCbG9jazo6YXNzaWdubWVudEV4cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkJiBzdGFydERpdm90LCB1bnNpZ25l
ZCYgZW5kRGl2b3QpCit7CisgICAgLy9wcmludGYoIlVubGlua2VkQ29kZUJsb2NrIGFzc2lnbm1l
bnRFeHByZXNzaW9uSW5mb0ZvckJ5dGVjb2RlT2Zmc2V0OiV1XG4iLCBieXRlY29kZU9mZnNldCk7
CisgICAgYXV0byBpdGVyID0gbV9hc3NpZ25tZW50RXhwcmVzc2lvbkluZm9NYXAuZmluZChieXRl
Y29kZU9mZnNldCk7CisgICAgaWYgKGl0ZXIgPT0gbV9hc3NpZ25tZW50RXhwcmVzc2lvbkluZm9N
YXAuZW5kKCkpIHsKKyAgICAgICAgcHJpbnRmKCJEb24ndCBoYXZlIGFzc2lnbm1lbnQgaW5mbyBm
b3Igb2Zmc2V0OiV1XG4iLCBieXRlY29kZU9mZnNldCk7CisgICAgICAgIHN0YXJ0RGl2b3QgPSBV
SU5UX01BWDsKKyAgICAgICAgZW5kRGl2b3QgPSBVSU5UX01BWDsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICAvL0FTU0VSVChpdGVyICE9IG1fYXNzaWdubWVudEV4cHJlc3Npb25J
bmZvTWFwLmVuZCgpKTsKKyAgICBBc3NpZ25tZW50RXhwcmVzc2lvbkluZm9SYW5nZSYgcmFuZ2Ug
PSBpdGVyLT52YWx1ZTsKKyAgICBzdGFydERpdm90ID0gcmFuZ2UubV9zdGFydERpdm90OworICAg
IGVuZERpdm90ID0gcmFuZ2UubV9lbmREaXZvdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBVbmxpbmtlZENvZGVCbG9jazo6YWRkQXNzaWdubWVudEV4cHJlc3Npb25JbmZvKHVuc2lnbmVk
IGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFydERpdm90LCB1bnNpZ25lZCBlbmREaXZv
dCkKK3sKKyAgICAvL3ByaW50ZigiVW5saW5rZWRDb2RlQmxvY2sgYWRkQXNzaWdubWVudEV4cHJl
c3Npb25JbmZvOiV1XG4iLCBpbnN0cnVjdGlvbk9mZnNldCk7CisgICAgQXNzaWdubWVudEV4cHJl
c3Npb25JbmZvUmFuZ2UgcmFuZ2U7CisgICAgcmFuZ2UubV9zdGFydERpdm90ID0gc3RhcnREaXZv
dDsKKyAgICByYW5nZS5tX2VuZERpdm90ID0gZW5kRGl2b3Q7CisgICAgbV9hc3NpZ25tZW50RXhw
cmVzc2lvbkluZm9NYXAuc2V0KGluc3RydWN0aW9uT2Zmc2V0LCByYW5nZSk7ICAKK30KKwogdm9p
ZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKj4oY2VsbCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAkocmV2aXNpb24gMTcwNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Myw2ICsyNzMsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhZGRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9m
ZnNldCwgaW50IGRpdm90LAogICAgICAgICBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQs
IHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbik7CiAKKyAgICB2b2lkIGFkZEFzc2lnbm1l
bnRFeHByZXNzaW9uSW5mbyh1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCwgdW5zaWduZWQgc3Rh
cnREaXZvdCwgdW5zaWduZWQgZW5kRGl2b3QpOworCiAgICAgYm9vbCBoYXNFeHByZXNzaW9uSW5m
bygpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbkluZm8uc2l6ZSgpOyB9CiAKICAgICAvLyBTcGVjaWFs
IHJlZ2lzdGVycwpAQCAtNDY1LDYgKzQ2Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4cHJlc3Np
b25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRp
dm90LAogICAgICAgICBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQm
IGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pOwogCisgICAgYm9vbCBhc3NpZ25tZW50RXhwcmVzc2lv
bkluZm9Gb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQm
IHN0YXJ0RGl2b3QsIHVuc2lnbmVkJiBlbmREaXZvdCk7CisKICAgICB2b2lkIHJlY29yZFBhcnNl
KENvZGVGZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcywgdW5zaWdu
ZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsaW5lQ291bnQsIHVuc2lnbmVkIGVuZENvbHVtbikKICAg
ICB7CiAgICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKQEAgLTU3Niw2ICs1ODAsMTIgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBPd25QdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CiAgICAg
VmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm8+IG1fZXhwcmVzc2lvbkluZm87CisgICAgc3RydWN0
IEFzc2lnbm1lbnRFeHByZXNzaW9uSW5mb1JhbmdlIHsKKyAgICAgICAgcHVibGljOgorICAgICAg
ICAgICAgdW5zaWduZWQgbV9zdGFydERpdm90OworICAgICAgICAgICAgdW5zaWduZWQgbV9lbmRE
aXZvdDsKKyAgICB9OworICAgIEhhc2hNYXA8dW5zaWduZWQsIEFzc2lnbm1lbnRFeHByZXNzaW9u
SW5mb1JhbmdlPiBtX2Fzc2lnbm1lbnRFeHByZXNzaW9uSW5mb01hcDsKIAogcHJvdGVjdGVkOgog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTcwNTMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNjQsNiArMTI2NCw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0RnIKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKKyAgICAv
LyBGSVhNRTogU2hvdWxkL1Nob3VsZG4ndCBJIHByb2ZpbGU/IElmIHllcywgaG93PworICAgIC8v
aWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgLy8gICAgZW1pdFBy
b2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZHN0LCBmYWxzZSk7CiAgICAgcmV0dXJuIGRzdDsK
IH0KIApAQCAtMTM1MSw5ICsxMzU0LDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRCeQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CiAKLSAgICBpZiAoaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxp
dHkoKSkKLSAgICAgICAgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodmFsdWUsIGZh
bHNlKTsKLQogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTQ1MSw5ICsxNDUxLDYgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFycmF5
UHJvZmlsZSk7CiAKLSAgICBpZiAoaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkK
LSAgICAgICAgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodmFsdWUsIGZhbHNlKTsK
LQogICAgIHJldHVybiB2YWx1ZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTcw
NTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNiArMzE2LDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRFeHByZXNzaW9uSW5mbyhpbnN0cnVj
dGlvbk9mZnNldCwgZGl2b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNv
bHVtbik7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGVtaXRBc3NpZ25tZW50RXhwcmVzc2lv
bkluZm8oY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0RGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBlbmREaXZvdCkKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQgPSBz
dGFydERpdm90Lm9mZnNldCArIDE7IC8vIFJhbmdlcyBhcmUgaW5jbHVzaXZlIG9mIHRoZWlyIGVu
ZHBvaW50cywgYW5kIDEgaW5kZXhlZC4KKyAgICAgICAgICAgIHVuc2lnbmVkIGVuZCA9IGVuZERp
dm90Lm9mZnNldDsgLy8gRW5kIFJhbmdlcyBhbHJlYWR5IGdvIG9uZSBwYXN0IHRoZSBpbmNsdXNp
dmUgcmFuZ2UsIHNvIG5vIG5lZWQgdG8gdG8gKyAxIC0gMS4KKyAgICAgICAgICAgIHVuc2lnbmVk
IGluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpIC0gMTsKKyAgICAgICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRBc3NpZ25tZW50RXhwcmVzc2lvbkluZm8oaW5zdHJ1Y3Rpb25P
ZmZzZXQsIHN0YXJ0LCBlbmQpOworICAgICAgICB9CisKICAgICAgICAgQUxXQVlTX0lOTElORSBi
b29sIGxlZnRIYW5kU2lkZU5lZWRzQ29weShib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGJvb2wg
cmlnaHRJc1B1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAobV9jb2RlVHlwZSAh
PSBGdW5jdGlvbkNvZGUgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSB8fCBy
aWdodEhhc0Fzc2lnbm1lbnRzKSAmJiAhcmlnaHRJc1B1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lv
biAxNzA1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3NCw3ICszNzQsMTMgQEAgUmVnaXN0ZXJJRCog
QnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9zdWJzY3JpcHRI
YXNBc3NpZ25tZW50cywgbV9zdWJzY3JpcHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWdp
c3RlcklEKiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5KTsKKyAgICBSZWdpc3RlcklE
KiBmaW5hbERlc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOworICAgIFJlZ2lz
dGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZmluYWxEZXN0LCBiYXNlLmdldCgp
LCBwcm9wZXJ0eSk7CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hG
aWRlbGl0eSgpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hG
aWRlbGl0eShmaW5hbERlc3QsIGZhbHNlKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRBc3NpZ25t
ZW50RXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9CisgICAg
cmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERvdEFj
Y2Vzc29yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzk0LDcgKzQw
MCwxMyBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kCiBub25Bcmd1
bWVudHNQYXRoOgogICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9i
YXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLCBtX2lkZW50KTsKKyAgICBSZWdpc3Rl
cklEKiBmaW5hbERlc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOworICAgIFJl
Z2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QsIGJhc2UsIG1f
aWRlbnQpOworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxp
dHkoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxp
dHkoZmluYWxEZXN0LCBmYWxzZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0QXNzaWdubWVudEV4
cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgfQorICAgIHJldHVy
biByZXQ7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcmd1bWVudExp
c3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NzMsNyArNDg1LDEyIEBA
IFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEIKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1
bmMuZ2V0KCkpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1f
YXJncyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJu
VmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50
cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBSZWdpc3RlcklEKiBy
ZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZp
ZGVsaXR5KCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZp
ZGVsaXR5KHJldHVyblZhbHVlLmdldCgpLCBmYWxzZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
QXNzaWdubWVudEV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
fQorICAgIHJldHVybiByZXQ7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCkBAIC00ODksNyArNTA2LDEzIEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlOjplbWkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAvLyBUaGlzIHBhc3NlcyBOb0V4cGVj
dGVkRnVuY3Rpb24gYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBpZiB0aGUgZnVuY3Rpb24gaXMgaW4g
YQogICAgICAgICAvLyBsb2NhbCB2YXJpYWJsZSwgdGhlbiBpdCdzIG5vdCBvbmUgb2Ygb3VyIGJ1
aWx0LWluIGNvbnN0cnVjdG9ycy4KLSAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChy
ZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworCisgICAgICAgIFJl
Z2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVu
Yy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5n
VHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShyZXR1cm5WYWx1ZS5nZXQoKSwgZmFsc2UpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRBc3NpZ25tZW50RXhwcmVzc2lvbkluZm8oZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OwogICAgIH0K
IAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OwpAQCAtNTAwLDcgKzUyMywxMiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9k
ZTo6ZW1pCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RT
dGFydCgpLCBuZXdEaXZvdCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRG
cm9tU2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVu
dCwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVy
blZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJl
dCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgZXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVs
aXR5KCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVs
aXR5KHJldHVyblZhbHVlLmdldCgpLCBmYWxzZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0QXNz
aWdubWVudEV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgfQor
ICAgIHJldHVybiByZXQ7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC01MTQsNyArNTQyLDEyIEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2Rl
OjplbWkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKICAgICBDYWxsQXJndW1lbnRzIGNh
bGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGdlbmVyYXRvci5lbWl0TW92ZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5W
YWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJh
dG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHJldHVyblZhbHVlLmdldCgpLCBm
YWxzZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0QXNzaWdubWVudEV4cHJlc3Npb25JbmZvKGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgfQorICAgIHJldHVybiByZXQ7CiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkNhbGxEb3ROb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyNyw3ICs1NjAsMTIgQEAgUmVnaXN0
ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dAogICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFy
dCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5j
dGlvbi5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7Ci0gICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENh
bGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
aWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShyZXR1cm5WYWx1
ZS5nZXQoKSwgZmFsc2UpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEFzc2lnbm1lbnRFeHByZXNz
aW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KKyAgICByZXR1cm4gcmV0
OwogfQogCiBzdGF0aWMgUmVnaXN0ZXJJRCogZ2V0QXJndW1lbnRCeVZhbChCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHksIFJlZ2lzdGVySUQqIGRzdCwgSlNUZXh0UG9zaXRpb24gZGl2b3QsIEpTVGV4dFBvc2l0aW9u
IGRpdm90U3RhcnQsIEpTVGV4dFBvc2l0aW9uIGRpdm90RW5kKQpAQCAtNzQ3LDkgKzc4NSw5IEBA
IFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXQKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0VG9OdW1iZXIodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBEc3RTcmMuZ2V0KCksIGxvY2FsUmVnKTsKICAgICAg
ICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHRlbXBEc3RTcmMuZ2V0KCksIG1fb3BlcmF0
b3IpOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hG
aWRlbGl0eSgpKQotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TW92ZShsb2NhbFJlZywgdGVtcERzdFNyYy5nZXQoKSk7CisgICAgICAgICAgICBpZiAo
Z2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRBc3NpZ25tZW50RXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIHJldHVybiB0ZW1wRHN0LmdldCgpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0KSwgbG9jYWxSZWcsIG1fb3BlcmF0b3IpOwpAQCAtNzYwLDYg
Kzc5OCw5IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXQKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCBpZGVudCwgVGhyb3dJZk5vdEZvdW5k
KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdl
bmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1f
b3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgaWRl
bnQsIHZhbHVlLmdldCgpLCBUaHJvd0lmTm90Rm91bmQpOworICAgIGlmIChnZW5lcmF0b3IuaXNQ
cm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRB
c3NpZ25tZW50RXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKwogICAg
IHJldHVybiBvbGRWYWx1ZS5nZXQoKTsKIH0KIApAQCAtNzgxLDYgKzgyMiwxMCBAQCBSZWdpc3Rl
cklEKiBQb3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQoQnl0CiAgICAgUmVnaXN0ZXJJRCogb2xkVmFs
dWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVy
YXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlLmdldCgp
KTsKKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
IHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZh
bHVlLmdldCgpLCBmYWxzZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0QXNzaWdubWVudEV4cHJl
c3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgfQogICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIG9sZFZhbHVlKTsKIH0KIApA
QCAtODAxLDYgKzg0NiwxMCBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRl
Y29kCiAgICAgUmVnaXN0ZXJJRCogb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRv
ciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRv
cik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBp
ZGVudCwgdmFsdWUuZ2V0KCkpOworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dp
dGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dp
dGhIaWdoRmlkZWxpdHkodmFsdWUuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRBc3NpZ25tZW50RXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICB9CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwg
b2xkVmFsdWUpOwogfQogCkBAIC05MjEsOSArOTcwLDkgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9k
ZTo6ZW1pdFJlc29sdmUoQnl0ZQogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBE
c3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdE1vdmUodGVtcERzdC5nZXQoKSwgbG9jYWxSZWcpOwogICAgICAgICAgICAgZW1pdElu
Y09yRGVjKGdlbmVyYXRvciwgdGVtcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7Ci0gICAgICAgICAg
ICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2Fs
UmVnLCB0ZW1wRHN0LmdldCgpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxp
bmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEFzc2lnbm1lbnRFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwg
dGVtcERzdC5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRv
ciwgbG9jYWxSZWcsIG1fb3BlcmF0b3IpOwpAQCAtOTM1LDYgKzk4NCw4IEBAIFJlZ2lzdGVySUQq
IFByZWZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dGUKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFs
dWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHNjb3BlLmdldCgpLCBpZGVudCwgVGhyb3dJZk5vdEZvdW5kKTsKICAgICBlbWl0SW5jT3JEZWMo
Z2VuZXJhdG9yLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRUb1Njb3BlKHNjb3BlLmdldCgpLCBpZGVudCwgdmFsdWUuZ2V0KCksIFRocm93SWZOb3RGb3Vu
ZCk7CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgp
KQorICAgICAgICBnZW5lcmF0b3IuZW1pdEFzc2lnbm1lbnRFeHByZXNzaW9uSW5mbyhkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRp
b25JZk5lZWRlZChkc3QsIHZhbHVlLmdldCgpKTsKIH0KIApAQCAtOTU0LDYgKzEwMDUsMTAgQEAg
UmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdEJyYWNrZXQoQnl0ZQogICAgIGVtaXRJbmNPckRl
YyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUpOworICAg
IGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodmFsdWUsIGZh
bHNlKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRBc3NpZ25tZW50RXhwcmVzc2lvbkluZm8oZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3Zl
VG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiB9CiAKQEAgLTk3Miw2
ICsxMDI3LDEwIEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGUKICAg
ICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVudCwgdmFsdWUpOwor
ICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgewor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodmFsdWUs
IGZhbHNlKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRBc3NpZ25tZW50RXhwcmVzc2lvbkluZm8o
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9CiAgICAgcmV0dXJuIGdlbmVyYXRvci5t
b3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiB9CiAKQEAgLTE0
MjQsOSArMTQ4Myw5IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEIK
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUocmVzdWx0LmdldCgpLCBs
b2NhbC5nZXQoKSk7CiAgICAgICAgICAgICBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJh
dG9yLCByZXN1bHQuZ2V0KCksIHJlc3VsdC5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3Bl
cmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2Ny
aXB0b3IoKSkpOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0
aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8obmV3RGl2b3QsIGRpdm90U3RhcnQoKSwgbmV3RGl2b3QpOwogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGxvY2FsLmdldCgpLCByZXN1bHQuZ2V0KCkpOworICAgICAgICAgICAg
aWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0QXNzaWdubWVudEV4cHJlc3Npb25JbmZvKGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rl
c3RpbmF0aW9uSWZOZWVkZWQoZHN0LCByZXN1bHQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtMTQzOCw3ICsxNDk3LDEwIEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9k
ZTo6ZW1pdEIKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIG1faWRlbnQpOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIG1faWRlbnQsIFRocm93SWZOb3RGb3VuZCk7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVu
dChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkp
LCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5
cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSksIHRoaXMpOwot
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIG1faWRlbnQs
IHJlc3VsdC5nZXQoKSwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBn
ZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIG1faWRlbnQsIHJlc3VsdC5nZXQo
KSwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgIGdlbmVyYXRvci5lbWl0QXNzaWdubWVudEV4cHJl
c3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgcmV0dXJuIHJldDsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnblJlc29sdmVOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNDUzLDkgKzE1MTUsOSBAQCBS
ZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjCiAgICAgICAgIGlmIChsb2Nh
bC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVs
aXR5KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRHN0ID0gZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KHRlbXBEc3QuZ2V0KCksIG1fcmlnaHQpOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1By
b2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5nZXQoKSwgdGVtcERzdC5nZXQo
KSk7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZp
ZGVsaXR5KCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRBc3NpZ25tZW50RXhwcmVz
c2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwog
ICAgICAgICB9CiAgICAgICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShsb2NhbC5nZXQoKSwgbV9yaWdodCk7CkBAIC0xNDY5LDcgKzE1MzEsMTAgQEAgUmVnaXN0ZXJJ
RCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlYwogICAgICAgICBkc3QgPSAwOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3JpZ2h0
KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29w
ZS5nZXQoKSwgbV9pZGVudCwgcmVzdWx0LmdldCgpLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkg
PyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgUmVnaXN0ZXJJ
RCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCBtX2lkZW50LCBy
ZXN1bHQuZ2V0KCksIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93SWZOb3RGb3VuZCA6
IERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlw
ZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgIGdlbmVyYXRvci5lbWl0QXNzaWdubWVudEV4
cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgcmV0dXJuIHJldDsK
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkRvdE5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0ODIsNiArMTU0NywxMCBAQCBS
ZWdpc3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUoCiAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
IFJlZ2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpID8gcmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0KTsKKyAgICBpZiAo
Z2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KGZvcndhcmRSZXN1bHQs
IGZhbHNlKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRBc3NpZ25tZW50RXhwcmVzc2lvbkluZm8o
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9CiAgICAgcmV0dXJuIGdlbmVyYXRvci5t
b3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgZm9yd2FyZFJlc3VsdCk7CiB9CiAKQEAgLTE0
OTYsNyArMTU2NSwxMiBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVj
CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50
KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSks
IHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlw
ZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lk
ZW50LCB1cGRhdGVkVmFsdWUpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0
UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCB1cGRhdGVkVmFsdWUpOworICAgIGlmIChnZW5l
cmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodXBkYXRlZFZhbHVlLCBmYWxz
ZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0QXNzaWdubWVudEV4cHJlc3Npb25JbmZvKGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgfQorICAgIHJldHVybiByZXQ7CiB9CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBc3NpZ25FcnJvck5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE1MTgsNiArMTU5MiwxMCBAQCBSZWdpc3RlcklE
KiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVy
SUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpID8g
cmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlW
YWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOworICAgIGlmIChn
ZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZm9yd2FyZFJlc3VsdCwg
ZmFsc2UpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEFzc2lnbm1lbnRFeHByZXNzaW9uSW5mbyhk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLm1v
dmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKIH0KIApAQCAtMTUz
NCw2ICsxNjEyLDEwIEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEIK
IAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHBy
b3BlcnR5LmdldCgpLCB1cGRhdGVkVmFsdWUpOworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxp
bmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodXBkYXRlZFZhbHVlLCBmYWxzZSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0QXNzaWdubWVudEV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgfQogCiAgICAgcmV0dXJuIHVwZGF0ZWRWYWx1ZTsKIH0KQEAgLTIzNDksNiAr
MjQzMSwyMSBAQCB2b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lCiAKIHZv
aWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqKQogeworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgbGVuZ3Ro
ID0gbV9wYXJhbWV0ZXJzLT5zaXplKCk7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAg
QVNTRVJUKG1fcGFyYW1ldGVycy0+YXQoaSktPmlzQmluZGluZ05vZGUoKSk7CisgICAgICAgICAg
ICBpZiAoIW1fcGFyYW1ldGVycy0+YXQoaSktPmlzQmluZGluZ05vZGUoKSkKKyAgICAgICAgICAg
ICAgICBwcmludGYoIk5PVCBCSU5ESU5HIE5PREVcbiIpOworICAgICAgICAgICAgQmluZGluZ05v
ZGUqIHBhcmFtZXRlciA9IHN0YXRpY19jYXN0PEJpbmRpbmdOb2RlKj4obV9wYXJhbWV0ZXJzLT5h
dChpKSk7CisgICAgICAgICAgICAvL3ByaW50ZigiUGFyYW1ldGVyOiVzIGF0OiV1IHRvOiV1Iiwg
cGFyYW1ldGVyLT5ib3VuZFByb3BlcnR5KCkuYXNjaWkoKS5kYXRhKCksIHBhcmFtZXRlci0+ZGl2
b3RTdGFydCgpLm9mZnNldCwgcGFyYW1ldGVyLT5kaXZvdEVuZCgpLm9mZnNldCk7CisgICAgICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2VuZXJhdG9yLnN5bWJvbFRhYmxlKCkuZ2V0
KHBhcmFtZXRlci0+Ym91bmRQcm9wZXJ0eSgpLmltcGwoKSk7CisgICAgICAgICAgICAvL3ByaW50
ZigiIGJlbG9uZyB0byByZWdpc3RlcjolZFxuIiwgZW50cnkuZ2V0SW5kZXgoKSk7CisgICAgICAg
ICAgICBSZWdpc3RlcklEKiByZWcgPSBuZXcgUmVnaXN0ZXJJRChlbnRyeS5nZXRJbmRleCgpKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShy
ZWcsIGZhbHNlKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0QXNzaWdubWVudEV4cHJlc3Np
b25JbmZvKHBhcmFtZXRlci0+ZGl2b3RTdGFydCgpLCBwYXJhbWV0ZXItPmRpdm90RW5kKCkpOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJD
YWxsRnJhbWUsIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGluZVN0YXJ0
T2Zmc2V0KCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwCShyZXZpc2lvbiAxNzA1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEs
MTAgKzE5MSwxMCBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cnVuKEVycm9yU3RyCiB7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZUZvclZhcmlh
YmxlSW5UZXh0UmFuZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGluX3ZhcmlhYmxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBpbl9pZCwgaW50IGluX3N0YXJ0TGluZSwgaW50IGluX3N0YXJ0Q29s
dW1uLCBpbnQgaW5fZW5kTGluZSwgaW50IGluX2VuZENvbHVtbiwgU3RyaW5nKiBvdXRfdHlwZXMp
IAordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVB
dE9mZnNldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5fdmFyaWFibGVOYW1lLCBjb25z
dCBTdHJpbmcmIGluX2lkLCBpbnQgaW5fZGl2b3QsIFN0cmluZyogb3V0X3R5cGVzKSAKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxWTSgpOwotICAgIFN0cmluZyB0eXBlcyh2bS5nZXRUeXBlc0ZvclZh
cmlhYmxlSW5SYW5nZShpbl9zdGFydExpbmUsIGluX3N0YXJ0Q29sdW1uLCBpbl9lbmRMaW5lLCBp
bl9lbmRDb2x1bW4sIGluX3ZhcmlhYmxlTmFtZSwgaW5faWQpKTsKKyAgICBTdHJpbmcgdHlwZXMo
dm0uZ2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0KGluX2Rpdm90LCBpbl92YXJpYWJsZU5hbWUs
IGluX2lkKSk7CiAgICAgKm91dF90eXBlcyA9IHR5cGVzOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuaAkocmV2aXNpb24gMTcwNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3du
UHJvcGVydGllcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRp
ZXMpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKSBvdmVycmlkZSBmaW5hbDsK
ICAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgaW5fdmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGluX2lkLCBpbnQg
aW5fc3RhcnRMaW5lLCBpbnQgaW5fc3RhcnRDb2x1bW4sIGludCBpbl9lbmRMaW5lLCBpbnQgaW5f
ZW5kQ29sdW1uLCBTdHJpbmcqIG91dF90eXBlcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVBdE9mZnNldChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgaW5fdmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGluX2lkLCBpbnQgaW5fZGl2b3Qs
IFN0cmluZyogb3V0X3R5cGVzKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0U2NyaXB0RGVidWdT
ZXJ2ZXIoU2NyaXB0RGVidWdTZXJ2ZXIqIHNjcmlwdERlYnVnU2VydmVyKSB7IG1fc2NyaXB0RGVi
dWdTZXJ2ZXIgPSBzY3JpcHREZWJ1Z1NlcnZlcjsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgkocmV2aXNp
b24gMTcwNTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9S
dW50aW1lLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxNCArMTk4LDExIEBACiAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgcmVwb3J0aW5nIG9mIGV4ZWN1dGlvbiBjb250
ZXh0cyBjcmVhdGlvbi4iCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgICJuYW1l
IjogImdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZSIsCisgICAgICAgICAgICAi
bmFtZSI6ICJnZXRSdW50aW1lVHlwZUZvclZhcmlhYmxlQXRPZmZzZXQiLAogICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2YXJpYWJsZU5hbWUi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVmFyaWFibGUgd2Ugd2FudCB0eXBl
IGluZnJvbWF0aW9uIGZvci4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzb3VyY2VJ
RCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJzb3VyY2VJRCB1bmlxdWVseSBp
ZGVudGlmeWluZyBhIHNjcmlwdCIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXJ0
TGluZSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAic3RhcnQgbGluZSBmb3Ig
dmFyaWFibGUgbmFtZSIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXJ0Q29sdW1u
IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJzdGFydCBjb2x1bW4gZm9yIHZh
cmlhYmxlIG5hbWUiIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRMaW5lIiwgInR5
cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJlbmQgbGluZSBmb3IgdmFyaWFibGUgbmFt
ZSIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuZENvbHVtbiIsICJ0eXBlIjogImlu
dGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiZW5kIGNvbHVtbiBmb3IgdmFyaWFibGUgbmFtZSIgfQor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGl2b3QiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRl
c2NyaXB0aW9uIjogImNoYXJhY3RlciBvZmZzZXQgZm9yIGFzc2lnbm1lbnQgcmFuZ2UiIH0KICAg
ICAgICAgICAgIF0sCiAgICAgICAgICAgICAicmV0dXJucyI6IFsKICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInR5cGVzIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlR5cGVz
IGZvciByZXF1ZXN0ZWQgdmFyaWFibGUuIiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAJKHJl
dmlzaW9uIDE3MDUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDUyICszMiw2OCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi1T
dHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5n
ZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRM
aW5lICwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50
cHRyX3Qgc291cmNlSUQpCitTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRUeXBl
c0ZvclZhcmlhYmxlSW5BdE9mZnNldCh1bnNpZ25lZCBkaXZvdCwgY29uc3QgU3RyaW5nJiB2YXJp
YWJsZU5hbWUsIGludHB0cl90IHNvdXJjZUlEKQogewotICAgIFN0cmluZyBnbG9iYWwgPSBnZXRH
bG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRM
aW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQpOworICAgIFN0cmluZyBnbG9i
YWwgPSBnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXQoZGl2b3QsIHZhcmlhYmxlTmFt
ZSwgc291cmNlSUQpOwogICAgIGlmICghZ2xvYmFsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGdsb2JhbDsKICAgICAKLSAgICByZXR1cm4gZ2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5n
ZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFt
ZSwgc291cmNlSUQpOworICAgIHJldHVybiBnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVBdE9mZnNl
dChkaXZvdCwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7CiB9CiAKLVdURjo6U3RyaW5nIEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5z
aWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBXVEY6
OlN0cmluZyYsIGludHB0cl90IHNvdXJjZUlEKQorU3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlcjo6Z2V0R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0KHVuc2lnbmVkIGRpdm90LCBj
b25zdCBTdHJpbmcmICwgaW50cHRyX3Qgc291cmNlSUQpCiB7Ci0gICAgYXV0byBpdGVyTG9jYXRp
b25NYXAgPSBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcC5maW5kKGdldExvY2F0aW9uQmFz
ZWRIYXNoKHNvdXJjZUlELCBzdGFydExpbmUpKTsKLSAgICBpZiAoaXRlckxvY2F0aW9uTWFwID09
IG1fZ2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gIiI7
CisgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IGZpbmRMb2NhdGlvbihkaXZvdCwgc291cmNl
SUQpOworICAgIGlmICghbG9jYXRpb24pCisgICAgICAgIHJldHVybiAgIiI7CiAKLSAgICBhdXRv
IGl0ZXJJRE1hcCA9IG1fZ2xvYmFsSURNYXAuZmluZChpdGVyTG9jYXRpb25NYXAtPnNlY29uZCk7
Ci0gICAgaWYgKGl0ZXJJRE1hcCA9PSBtX2dsb2JhbElETWFwLmVuZCgpKQorICAgIGlmIChsb2Nh
dGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID09IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHMp
CiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIHJldHVybiBpdGVySURNYXAtPnNlY29uZC0+c2Vl
blR5cGVzKCk7CisgICAgcmV0dXJuIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPnNlZW5UeXBl
cygpOwogfQogCi1XVEY6OlN0cmluZyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldExvY2Fs
VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCAsIHVu
c2lnbmVkICwgdW5zaWduZWQgLCBjb25zdCBXVEY6OlN0cmluZyYgLCBpbnRwdHJfdCBzb3VyY2VJ
RCkKK1N0cmluZyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldExvY2FsVHlwZXNGb3JWYXJp
YWJsZUF0T2Zmc2V0KHVuc2lnbmVkIGRpdm90LCBjb25zdCBTdHJpbmcmICwgaW50cHRyX3Qgc291
cmNlSUQpCiB7Ci0gICAgYXV0byBpdGVyID0gbV9nbG9iYWxMb2NhdGlvbk1hcC5maW5kKGdldExv
Y2F0aW9uQmFzZWRIYXNoKHNvdXJjZUlELCBzdGFydExpbmUpKTsKLSAgICBhdXRvIGVuZCA9IG1f
Z2xvYmFsTG9jYXRpb25NYXAuZW5kKCk7Ci0gICAgaWYgKGl0ZXIgPT0gZW5kKQorICAgIFR5cGVM
b2NhdGlvbiogbG9jYXRpb24gPSBmaW5kTG9jYXRpb24oZGl2b3QsIHNvdXJjZUlEKTsKKyAgICBp
ZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1cm4gICIiOwogCi0gICAgcmV0dXJuIGl0ZXItPnNl
Y29uZC0+c2VlblR5cGVzKCk7CisgICAgcmV0dXJuIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlw
ZVNldC0+c2VlblR5cGVzKCk7CiB9CiAKIHZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpp
bnNlcnROZXdMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQogewogICAgIGlmICh2ZXJi
b3NlKQotICAgICAgICBkYXRhTG9nRigiUmVnaXN0ZXJpbmcgbG9jYXRpb246OiBsaW5lOiV1LCBj
b2x1bW46JXVcbiIsIGxvY2F0aW9uLT5tX2xpbmUsIGxvY2F0aW9uLT5tX2NvbHVtbik7CisgICAg
ICAgIGRhdGFMb2dGKCJSZWdpc3RlcmluZyBsb2NhdGlvbjo6IGRpdm90U3RhcnQ6JXUsIGRpdm90
RW5kOiV1XG4iLCBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0LCBsb2NhdGlvbi0+bV9kaXZvdEVuZCk7
CisKKyAgICBpZiAoIW1fYnVja2V0TWFwLmNvbnRhaW5zKGxvY2F0aW9uLT5tX3NvdXJjZUlEKSkg
eworICAgICAgICBWZWN0b3I8VHlwZUxvY2F0aW9uKj4gYnVja2V0OworICAgICAgICBtX2J1Y2tl
dE1hcC5zZXQobG9jYXRpb24tPm1fc291cmNlSUQsIGJ1Y2tldCk7CisgICAgfQogCi0gICAgTG9j
YXRpb25LZXkga2V5KGdldExvY2F0aW9uQmFzZWRIYXNoKGxvY2F0aW9uLT5tX3NvdXJjZUlELCBs
b2NhdGlvbi0+bV9saW5lKSk7CisgICAgVmVjdG9yPFR5cGVMb2NhdGlvbio+JiBidWNrZXQgPSBt
X2J1Y2tldE1hcC5maW5kKGxvY2F0aW9uLT5tX3NvdXJjZUlEKS0+dmFsdWU7CisgICAgYnVja2V0
LmFwcGVuZChsb2NhdGlvbik7Cit9CisKK1R5cGVMb2NhdGlvbiogSGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyOjpmaW5kTG9jYXRpb24odW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlEKQor
eworICAgIEFTU0VSVChtX2J1Y2tldE1hcC5jb250YWlucyhzb3VyY2VJRCkpOyAKIAotICAgIGlm
IChsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEICE9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURF
eGlzdHMpIHsgCi0gICAgICAgIC8vIEJ1aWxkIHRoZSBtYXBwaW5nIHJlbGF0aW9uc2hpcHMgTWFw
MTprZXk9Pmdsb2JhbElkLCBNYXAyOmdsb2JhbElEPT5UeXBlU2V0IAotICAgICAgICBtX2dsb2Jh
bExvY2F0aW9uVG9HbG9iYWxJRE1hcFtrZXldID0gbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJ
RDsKLSAgICAgICAgbV9nbG9iYWxJRE1hcFtsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEXSA9
IGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQ7CisgICAgVmVjdG9yPFR5cGVMb2NhdGlvbio+JiBi
dWNrZXQgPSBtX2J1Y2tldE1hcC5maW5kKHNvdXJjZUlEKS0+dmFsdWU7CisgICAgdW5zaWduZWQg
ZGlzdGFuY2UgPSBVSU5UX01BWDsgLy8gQmVjYXVzZSBhc3NpZ25tZW50cyBtYXkgYmUgbmVzdGVk
LCBtYWtlIHN1cmUgd2UgZmluZCB0aGUgY2xvc2VzdCBlbmNsb3NpbmcgYXNzaWdubWVudCB0byB0
aGlzIGNoYXJhY3RlciBvZmZzZXQuCisgICAgVHlwZUxvY2F0aW9uKiBiZXN0TWF0Y2ggPSBudWxs
cHRyOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gYnVja2V0LnNpemUoKTsgaSA8IHNp
emU7IGkrKykgeworICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gYnVja2V0LmF0KGkp
OworICAgICAgICBpZiAobG9jYXRpb24tPm1fZGl2b3RTdGFydCA8PSBkaXZvdCAmJiBkaXZvdCA8
PSBsb2NhdGlvbi0+bV9kaXZvdEVuZCAmJiBsb2NhdGlvbi0+bV9kaXZvdEVuZCAtIGxvY2F0aW9u
LT5tX2Rpdm90U3RhcnQgPD0gZGlzdGFuY2UpIHsKKyAgICAgICAgICAgIGRpc3RhbmNlID0gbG9j
YXRpb24tPm1fZGl2b3RFbmQgLSBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0OworICAgICAgICAgICAg
YmVzdE1hdGNoID0gbG9jYXRpb247CisgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2dsb2JhbExv
Y2F0aW9uTWFwW2tleV0gPSBsb2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQ7CisgICAgLy8g
RklYTUU6IHRoaXMgc2hvdWxkIGhvbGQuIERvZXNuJ3QgY3VycmVudGx5IGIvYyB3ZSBpZ25vcmUg
c29tZSBFdmFsL1dpdGNoL1ZhckluamVjdGlvbiB2YXJpYWJsZSBhc3NpZ25tZW50cy4KKyAgICAv
L0FTU0VSVChiZXN0TWF0Y2gpOyAKKyAgICByZXR1cm4gYmVzdE1hdGNoOwogfQogCiBMb2NhdGlv
bktleSBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldExvY2F0aW9uQmFzZWRIYXNoKGludHB0
cl90IGlkLCB1bnNpZ25lZCBsaW5lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmgJKHJldmlzaW9uIDE3
MDUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1ldGhvZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTM5LDQ5ICs0MCw1MCBAQCBjbGFzcyBUeXBlTG9jYXRpb247CiBzdHJ1Y3QgTG9j
YXRpb25LZXkgewogCiBwdWJsaWM6Ci0gICAgTG9jYXRpb25LZXkoaW50cHRyX3Qgc291cmNlSUQs
IHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbikgCisgICAgTG9jYXRpb25LZXkoaW50cHRy
X3Qgc291cmNlSUQsIHVuc2lnbmVkIGRpdm90U3RhcnQsIHVuc2lnbmVkIGRpdm90RW5kKSAKICAg
ICAgICAgOiBtX3NvdXJjZUlEKHNvdXJjZUlEKQotICAgICAgICAsIG1fbGluZShsaW5lKQotICAg
ICAgICAsIG1fY29sdW1uKGNvbHVtbikKKyAgICAgICAgLCBtX2Rpdm90U3RhcnQoZGl2b3RTdGFy
dCkKKyAgICAgICAgLCBtX2Rpdm90RW5kKGRpdm90RW5kKQogCiAgICAgewogICAgIH0KIAogICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGluZSArIG1f
c291cmNlSUQ7CisgICAgICAgIHJldHVybiBtX2Rpdm90U3RhcnQgKyBtX2Rpdm90RW5kICsgbV9z
b3VyY2VJRCA7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEZvciBub3csIHRoaXMgaXMgYSBoYWNr
LiBXZSBkbyB0aGUgZm9sbG93aW5nOiBNYXA6IklEOkxpbmUiID0+IFR5cGVTZXQuIE9idmlvdXNs
eSwgdGhpcyBhc3N1bWVzIGFsbCBhc3NpZ25tZW50cyBhcmUgb24gZGlzY3JldGUgbGluZXMsIHdo
aWNoIGlzIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uLgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBMb2NhdGlvbktleSYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9zb3Vy
Y2VJRCA9PSBvdGhlci5tX3NvdXJjZUlECi0gICAgICAgICAgICAgICAmJiBtX2xpbmUgPT0gb3Ro
ZXIubV9saW5lOworICAgICAgICAgICAgICAgJiYgbV9kaXZvdFN0YXJ0ID09IG90aGVyLm1fZGl2
b3RTdGFydAorICAgICAgICAgICAgICAgJiYgbV9kaXZvdEVuZCA9PSBvdGhlci5tX2Rpdm90RW5k
OwogICAgIH0KIAogICAgIGludHB0cl90IG1fc291cmNlSUQ7Ci0gICAgdW5zaWduZWQgbV9saW5l
OwotICAgIHVuc2lnbmVkIG1fY29sdW1uOworICAgIHVuc2lnbmVkIG1fZGl2b3RTdGFydDsKKyAg
ICB1bnNpZ25lZCBtX2Rpdm90RW5kOwogfTsKIAogY2xhc3MgSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyIHsKIAogcHVibGljOgotICAgIFN0cmluZyBnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1
bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5l
LCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJf
dCBzb3VyY2VJRCk7Ci0gICAgU3RyaW5nIGdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdl
KHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExp
bmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGludHB0
cl90IHNvdXJjZUlEKTsKLSAgICBTdHJpbmcgZ2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5n
ZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRM
aW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCk7CisgICAgU3RyaW5nIGdldFR5cGVzRm9yVmFyaWFibGVJbkF0T2Zmc2V0
KHVuc2lnbmVkIGRpdm90LCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291
cmNlSUQpOworICAgIFN0cmluZyBnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXQodW5z
aWduZWQgZGl2b3QsIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCk7CisgICAgU3RyaW5nIGdldExvY2FsVHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0KHVuc2lnbmVk
IGRpdm90LCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpOwog
ICAgIHZvaWQgaW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKik7CiAgICAgCiBwcml2YXRl
OgorICAgIFR5cGVMb2NhdGlvbiogZmluZExvY2F0aW9uKHVuc2lnbmVkIGRpdm90LCBpbnRwdHJf
dCBzb3VyY2VJRCk7CiAgICAgc3RhdGljIExvY2F0aW9uS2V5IGdldExvY2F0aW9uQmFzZWRIYXNo
KGludHB0cl90LCB1bnNpZ25lZCk7CiAKLSAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxM
b2NhdGlvbktleSwgUmVmUHRyPFR5cGVTZXQ+LCBIYXNoTWV0aG9kPExvY2F0aW9uS2V5Pj4gR2xv
YmFsTG9jYXRpb25NYXA7IAotICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPGludDY0X3Qs
IFJlZlB0cjxUeXBlU2V0Pj4gR2xvYmFsSURNYXA7IAotICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVy
ZWRfbWFwPExvY2F0aW9uS2V5LCBpbnQ2NF90LCBIYXNoTWV0aG9kPExvY2F0aW9uS2V5Pj4gR2xv
YmFsTG9jYXRpb25Ub0dsb2JhbElETWFwOwotCi0gICAgR2xvYmFsSURNYXAgbV9nbG9iYWxJRE1h
cDsKLSAgICBHbG9iYWxMb2NhdGlvbk1hcCBtX2dsb2JhbExvY2F0aW9uTWFwOwotICAgIEdsb2Jh
bExvY2F0aW9uVG9HbG9iYWxJRE1hcCBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcDsKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIFZlY3RvcjxUeXBlTG9jYXRpb24qPj4gU291cmNl
SURUb0xvY2F0aW9uQnVja2V0TWFwOworICAgIC8vdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8
TG9jYXRpb25LZXksIFJlZlB0cjxUeXBlU2V0PiwgSGFzaE1ldGhvZDxMb2NhdGlvbktleT4+IEds
b2JhbExvY2F0aW9uTWFwOyAKKyAgICAvL3R5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPGludDY0
X3QsIFJlZlB0cjxUeXBlU2V0Pj4gR2xvYmFsSURNYXA7IAorICAgIC8vdHlwZWRlZiBzdGQ6OnVu
b3JkZXJlZF9tYXA8TG9jYXRpb25LZXksIGludDY0X3QsIEhhc2hNZXRob2Q8TG9jYXRpb25LZXk+
PiBHbG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXA7CisgICAgCisgICAgU291cmNlSURUb0xvY2F0
aW9uQnVja2V0TWFwIG1fYnVja2V0TWFwOwogfTsKIAogfSAvL25hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxNzA1
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYwLDYgKzI2MCw3IEBAIHN0YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVu
dE9wdGlvbnMoKQogICAgIHdoaWxlICgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oT3B0aW9uczo6dGhy
ZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSkgPDwgKE9wdGlvbnM6OnJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyTWF4KCkgKyAxKSkgPD0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKQogICAgICAgICBPcHRpb25zOjpyZW9w
dGltaXphdGlvblJldHJ5Q291bnRlck1heCgpKys7CiAKKyAgICBPcHRpb25zOjpwcm9maWxlVHlw
ZXNXaXRoSGlnaEZpZGVsaXR5KCkgPSB0cnVlOwogICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50
NjRfdD4oT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSkgPDwg
T3B0aW9uczo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgoKSkgPiAwKTsKICAgICBBU1NF
UlQoKHN0YXRpY19jYXN0PGludDY0X3Q+KE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0
ZXJMb25nV2FybVVwKCkpIDw8IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4
KCkpIDw9IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZp
c2lvbiAxNzA1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkyOCw3ICs5MjgsNyBAQCB2b2lkIFZNOjpzZXRFbmFibGVkUHJvZmls
ZXIoTGVnYWN5UHJvZmlsCiAgICAgfQogfQogCi1TdHJpbmcgVk06OmdldFR5cGVzRm9yVmFyaWFi
bGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2ln
bmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5h
bWUsIGNvbnN0IFN0cmluZyYgc291cmNlSURBc1N0cmluZykKK1N0cmluZyBWTTo6Z2V0VHlwZXNG
b3JWYXJpYWJsZUF0T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCwgY29uc3QgU3RyaW5nJiB2YXJpYWJs
ZU5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlSURBc1N0cmluZykKIHsKICAgICBpZiAoIWlzUHJv
ZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCiAgICAgICAgIHJldHVybiAiKE5vdCBQcm9m
aWxpbmcpIjsKQEAgLTkzOSw3ICs5MzksNyBAQCBTdHJpbmcgVk06OmdldFR5cGVzRm9yVmFyaWFi
bGVJblJhbmdlKHVuCiAgICAgICAgIENSQVNIKCk7CiAKICAgICB1cGRhdGVIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsZVN0YXRlKCk7Ci0gICAgcmV0dXJuIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
LT5nZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRM
aW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQpOworICAgIHJldHVybiBtX2hp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci0+Z2V0VHlwZXNGb3JWYXJpYWJsZUluQXRPZmZzZXQob2Zm
c2V0LCB2YXJpYWJsZU5hbWUsIHNvdXJjZUlEKTsKIH0KIAogdm9pZCBWTTo6dXBkYXRlSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVTdGF0ZSgpCkBAIC05NTksMTEgKzk1OSwxMSBAQCB2b2lkIFZNOjpk
dW1wSGlnaEZpZGVsaXR5UHJvZmlsaW5nVHlwZXMoCiAgICAgSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyKiBwcm9maWxlciA9IG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmdldCgpOwogICAgIGZv
ciAoQmFnPFR5cGVMb2NhdGlvbj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2xvY2F0aW9uSW5mby5iZWdp
bigpOyAhIWl0ZXI7ICsraXRlcikgewogICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0g
Kml0ZXI7Ci0gICAgICAgIGRhdGFMb2dGKCJbTGluZSwgQ29sdW1uXTo6WyV1LCAldV0gIiwgbG9j
YXRpb24tPm1fbGluZSwgbG9jYXRpb24tPm1fY29sdW1uKTsKKyAgICAgICAgZGF0YUxvZ0YoIltT
dGFydCwgRW5kXTo6WyV1LCAldV0gIiwgbG9jYXRpb24tPm1fZGl2b3RTdGFydCwgbG9jYXRpb24t
Pm1fZGl2b3RFbmQpOwogICAgICAgICBkYXRhTG9nKCJcblx0XHQjTG9jYWwjXG5cdFx0IiwKLSAg
ICAgICAgICAgICAgICBwcm9maWxlci0+Z2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShs
b2NhdGlvbi0+bV9saW5lLCBsb2NhdGlvbi0+bV9jb2x1bW4sIGxvY2F0aW9uLT5tX2xpbmUsIGxv
Y2F0aW9uLT5tX2NvbHVtbiwgIiIsIGxvY2F0aW9uLT5tX3NvdXJjZUlEKS5yZXBsYWNlKCJcbiIs
ICJcblx0XHQiKSwKKyAgICAgICAgICAgICAgICBwcm9maWxlci0+Z2V0TG9jYWxUeXBlc0ZvclZh
cmlhYmxlQXRPZmZzZXQobG9jYXRpb24tPm1fZGl2b3RTdGFydCwgIiIsIGxvY2F0aW9uLT5tX3Nv
dXJjZUlEKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwKICAgICAgICAgICAgICAgICAiXG5cdFx0
I0dsb2JhbCNcblx0XHQiLAotICAgICAgICAgICAgICAgIHByb2ZpbGVyLT5nZXRHbG9iYWxUeXBl
c0ZvclZhcmlhYmxlSW5SYW5nZShsb2NhdGlvbi0+bV9saW5lLCBsb2NhdGlvbi0+bV9jb2x1bW4s
IGxvY2F0aW9uLT5tX2xpbmUsIGxvY2F0aW9uLT5tX2NvbHVtbiwgIiIsIGxvY2F0aW9uLT5tX3Nv
dXJjZUlEKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwKKyAgICAgICAgICAgICAgICBwcm9maWxl
ci0+Z2V0R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0KGxvY2F0aW9uLT5tX2Rpdm90U3Rh
cnQsICIiLCBsb2NhdGlvbi0+bV9zb3VyY2VJRCkucmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksCiAg
ICAgICAgICAgICAgICAgIlxuIik7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCShyZXZpc2lvbiAxNzA1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTYsNyArNTE2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyBy
ZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAogICAgICAgICBib29sIGlzUHJv
ZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkgeyByZXR1cm4gISFtX2hpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlcjsgfQotICAgICAgICBTdHJpbmcgZ2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2Uo
dW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kTGlu
ZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VJRCk7CisgICAgICAgIFN0cmluZyBnZXRUeXBlc0ZvclZhcmlhYmxlQXRP
ZmZzZXQodW5zaWduZWQgZGl2b3QsIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBjb25zdCBT
dHJpbmcmIHNvdXJjZUlEKTsKICAgICAgICAgSGlnaEZpZGVsaXR5TG9nKiBoaWdoRmlkZWxpdHlM
b2coKSB7IHJldHVybiBtX2hpZ2hGaWRlbGl0eUxvZy5nZXQoKTsgfQogICAgICAgICBIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIqIGhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcigpIHsgcmV0dXJuIG1f
aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmdldCgpOyB9CiAgICAgICAgIHZvaWQgdXBkYXRlSGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVTdGF0ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234137</attachid>
            <date>2014-06-30 18:40:52 -0700</date>
            <delta_ts>2014-07-01 20:34:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>57015</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwNjI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBA
CisyMDE0LTA2LTMwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGRlYnVnZ2VyIHNob3VsZCBiZSBhYmxlIHRvIHNob3cgdmFyaWFibGUg
dHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
MzM5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
cmUgb3BlcmF0aW9ucyBhcmUgbm93IGJlaW5nIHJlY29yZGVkIGJ5IHRoZSBwcm9maWxlX3R5cGVz
X3dpdGhfaGlnaF9maWRlbGl0eSAKKyAgICAgICAgb3Bjb2RlLiBTcGVjaWZpY2FsbHk6IGZ1bmN0
aW9uIHBhcmFtZXRlcnMsIGZ1bmN0aW9uIHJldHVybiB2YWx1ZXMsCisgICAgICAgIGZ1bmN0aW9u
ICd0aGlzJyB2YWx1ZSwgZ2V0X2J5X2lkLCBnZXRfYnlfdmFsdWUsIGZ1bmN0aW9uIHJldHVybiB2
YWx1ZXMKKyAgICAgICAgYXQgdGhlIGNhbGwgc2l0ZS4gQWRkZWQgbW9yZSBmbGFncyB0byB0aGUg
cHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkKKyAgICAgICAgb3Bjb2RlIHNvIG1vcmUg
Zm9jdXNlZCB0YXNrcyBjYW4gdGFrZSBwbGFjZSB3aGVuIHRoZSBpbnN0cnVjdGlvbiBpcworICAg
ICAgICBiZWluZyBsaW5rZWQgaW4gQ29kZUJsb2NrLiBSZS13b3JrZWQgdGhlIHR5cGUgcHJvZmls
ZXIgdG8gc2VhcmNoIAorICAgICAgICB0aHJvdWdoIGNoYXJhY3RlciBvZmZzZXQgcmFuZ2VzIHdo
ZW4gYXNrZWQgZm9yIHRoZSB0eXBlIG9mIGFuIGV4cHJlc3Npb24KKyAgICAgICAgYXQgYSBnaXZl
biBvZmZzZXQuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmV0dXJuU3RhdGVtZW50VHlwZVNldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVFeHByZXNzaW9uSW5mb0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFkZEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
RXhwcmVzc2lvbkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZhbCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QnJhY2tldEFjY2Vzc29y
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG90QWNjZXNzb3JOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6UG9zdGZp
eE5vZGU6OmVtaXRCcmFja2V0KToKKyAgICAgICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXREb3Qp
OgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OlByZWZpeE5vZGU6OmVtaXRCcmFja2V0KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1p
dERvdCk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJl
YWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25CcmFj
a2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeUJyYWNrZXRO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpGdW5jRGVjbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVBdE9mZnNl
dCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGlt
ZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9w
cm90b2NvbC9SdW50aW1lLmpzb246CisgICAgICAgICogcnVudGltZS9IaWdoRmlkZWxpdHlMb2cu
Y3BwOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6OnByb2Nlc3NIaWdoRmlkZWxpdHlM
b2cpOgorICAgICAgICAqIHJ1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxl
SW5BdE9mZnNldCk6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0
R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyOjpnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVBdE9mZnNldCk6CisgICAg
ICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9jYXRpb24pOgor
ICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmZpbmRMb2NhdGlvbik6Cisg
ICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGb3JWYXJpYWJs
ZUluUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXI6OmdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVJ
blJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVy
OjpnZXRMb2NhdGlvbkJhc2VkSGFzaCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9IaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIuaDoKKyAgICAgICAgKEpTQzo6TG9jYXRpb25LZXk6OkxvY2F0
aW9uS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TG9jYXRpb25LZXk6Omhhc2gpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpMb2NhdGlvbktleTo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpnZXRUeXBlc0ZvclZh
cmlhYmxlQXRPZmZzZXQpOgorICAgICAgICAoSlNDOjpWTTo6ZHVtcEhpZ2hGaWRlbGl0eVByb2Zp
bGluZ1R5cGVzKToKKyAgICAgICAgKEpTQzo6Vk06OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTQtMDYtMzAgIE1hcmsg
SGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2RlQmxvY2s6
OnN0cm9uZ2x5VmlzaXRXZWFrUmVmZXJlbmNlcyBzaG91bGQgbWFyayBERkc6OkNvbW1vbkRhdGE6
OndlYWtTdHJ1Y3R1cmVSZWZlcmVuY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTcwNjEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NjUs
NiArMTY2NSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAg
ICAsIG1fb3NyRXhpdENvdW50ZXIoMCkKICAgICAsIG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
KDApCiAgICAgLCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKDApCisgICAgLCBtX3JldHVy
blN0YXRlbWVudFR5cGVTZXQobnVsbHB0cikKICNpZiBFTkFCTEUoSklUKQogICAgICwgbV9jYXBh
YmlsaXR5TGV2ZWxTdGF0ZShERkc6OkNhcGFiaWxpdHlMZXZlbE5vdFNldCkKICNlbmRpZgpAQCAt
MTkzNywxOCArMTkzOCwxNiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxl
KiBvCiAKICAgICAgICAgICAgIGlmIChwY1swXS51Lm9wY29kZSA9PSBvcF9wdXRfdG9fc2NvcGVf
d2l0aF9wcm9maWxlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGlzIGlu
c3RydWN0aW9uIGlzOiBwdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlIHNjb3BlLCBpZCwgdmFsdWUs
IFJlc29sdmVNb2RlQW5kVHlwZSwgU3RydWN0dXJlLCBPcGVyYW5kLCBUeXBlTG9jYXRpb24qCi0g
ICAgICAgICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHZtKCktPm5leHRMb2NhdGlv
bigpOwogICAgICAgICAgICAgICAgIHNpemVfdCBpbnN0cnVjdGlvbk9mZnNldCA9IGkgKyBvcExl
bmd0aCAtIDE7Ci0gICAgICAgICAgICAgICAgaW50IGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0OyAKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW5lID0gMCwgY29sdW1uID0gMDsKLSAg
ICAgICAgICAgICAgICBleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChpbnN0cnVjdGlv
bk9mZnNldCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7Ci0K
LSAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9saW5lID0gbGluZTsKLSAgICAgICAgICAgICAg
ICBsb2NhdGlvbi0+bV9jb2x1bW4gPSBjb2x1bW47CisgICAgICAgICAgICAgICAgdW5zaWduZWQg
ZGl2b3RTdGFydCwgZGl2b3RFbmQ7CisgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRBbmFseXpl
ID0gbV91bmxpbmtlZENvZGUtPmhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvbkluZm9G
b3JCeXRlY29kZU9mZnNldChpbnN0cnVjdGlvbk9mZnNldCwgZGl2b3RTdGFydCwgZGl2b3RFbmQp
OworICAgICAgICAgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSB2bSgpLT5uZXh0TG9j
YXRpb24oKTsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0ID0gZGl2b3RT
dGFydDsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9kaXZvdEVuZCA9IGRpdm90RW5kOwog
ICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX3NvdXJjZUlEID0gbV9vd25lckV4ZWN1dGFibGUt
PnNvdXJjZUlEKCk7CiAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogaGFuZGxlIG90aGVyIHZh
bHVlcyBmb3Igb3AudHlwZSBoZXJlLCBhbmQgYWxzbyBjb25zaWRlciB3aGF0IHRvIGRvIHdoZW4g
d2UgY2FuJ3Qgc3RhdGljYWxseSBkZXRlcm1pbmUgdGhlIGdsb2JhbElECi0gICAgICAgICAgICAg
ICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gMDsKKyAgICAgICAgICAgICAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIGlmIChvcC50eXBl
ID09IENsb3N1cmVWYXIpIAogICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZSA9IG9wLmFj
dGl2YXRpb24tPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3AudHlw
ZSA9PSBHbG9iYWxWYXIpCkBAIC0xOTYxLDcgKzE5NjAsOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxpdHlOb0ds
b2JhbElERXhpc3RzOwogCi0gICAgICAgICAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyKCktPmluc2VydE5ld0xvY2F0aW9uKGxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBp
ZiAoc2hvdWxkQW5hbHl6ZSkKKyAgICAgICAgICAgICAgICAgICAgdm0oKS0+aGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyKCktPmluc2VydE5ld0xvY2F0aW9uKGxvY2F0aW9uKTsKICAgICAgICAgICAg
ICAgICBpbnN0cnVjdGlvbnNbaSArIDddLnUubG9jYXRpb24gPSBsb2NhdGlvbjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk2OSwzMyArMTk2OSw1MCBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAKICAgICAgICAgY2FzZSBvcF9wcm9m
aWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eTogewogCisgICAgICAgICAgICBzaXplX3QgaW5z
dHJ1Y3Rpb25PZmZzZXQgPSBpICsgb3BMZW5ndGggLSAxOworICAgICAgICAgICAgdW5zaWduZWQg
ZGl2b3RTdGFydCwgZGl2b3RFbmQ7CisgICAgICAgICAgICBib29sIHNob3VsZEFuYWx5emUgPSBt
X3VubGlua2VkQ29kZS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVFeHByZXNzaW9uSW5mb0ZvckJ5
dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKHBjWzFdLnUub3BlcmFu
ZCk7CiAgICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtX3N5bWJvbFRhYmxl
LmdldCgpOwogICAgICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHZtKCktPm5leHRM
b2NhdGlvbigpOwotICAgICAgICAgICAgc2l6ZV90IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9w
TGVuZ3RoIC0gMTsKLSAgICAgICAgICAgIGludCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dDsgCi0gICAgICAgICAgICB1bnNpZ25lZCBsaW5lID0gMCwgY29sdW1uID0gMDsKLSAgICAgICAg
ICAgIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uT2Zmc2V0LCBk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKKyAgICAgICAgICAg
IGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQgPSBkaXZvdFN0YXJ0OworICAgICAgICAgICAgbG9jYXRp
b24tPm1fZGl2b3RFbmQgPSBkaXZvdEVuZDsKKyAgICAgICAgICAgIGxvY2F0aW9uLT5tX3NvdXJj
ZUlEID0gbV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCk7CiAKLSAgICAgICAgICAgIGludCBo
YXNHbG9iYWxJREZsYWcgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpZiAoaGFzR2xv
YmFsSURGbGFnKSB7CisgICAgICAgICAgICBQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5Qnl0
ZWNvZGVGbGFnIGZsYWcgPSBzdGF0aWNfY2FzdDxQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5
Qnl0ZWNvZGVGbGFnPihwY1szXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgc3dpdGNoIChmbGFn
KSB7CisgICAgICAgICAgICBjYXNlIFByb2ZpbGVUeXBlc0J5dGVjb2RlSGFzR2xvYmFsSUQ6IHsK
ICAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+
bV9sb2NrKTsKICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID0g
c3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yUmVnaXN0ZXIobG9ja2VyLCB2aXJ0dWFsUmVnaXN0ZXIu
b2Zmc2V0KCksICp2bSgpKTsKICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxUeXBl
U2V0ID0gc3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JSZWdpc3Rlcihsb2NrZXIsIHZpcnR1
YWxSZWdpc3Rlci5vZmZzZXQoKSwgKnZtKCkpOwotICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFByb2ZpbGVU
eXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRDogCisgICAgICAgICAgICBjYXNlIFByb2Zp
bGVUeXBlc0J5dGVjb2RlRnVuY3Rpb25Bcmd1bWVudDoKKyAgICAgICAgICAgIGNhc2UgUHJvZmls
ZVR5cGVzQnl0ZWNvZGVGdW5jdGlvblRoaXNPYmplY3Q6IHsKICAgICAgICAgICAgICAgICBsb2Nh
dGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID0gSGlnaEZpZGVsaXR5Tm9HbG9iYWxJREV4aXN0czsK
LSAgICAgICAgICAgIAotCi0gICAgICAgICAgICBsb2NhdGlvbi0+bV9saW5lID0gbGluZTsKLSAg
ICAgICAgICAgIGxvY2F0aW9uLT5tX2NvbHVtbiA9IGNvbHVtbjsKLSAgICAgICAgICAgIGxvY2F0
aW9uLT5tX3NvdXJjZUlEID0gbV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFByb2ZpbGVU
eXBlc0J5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQ6IHsKKyAgICAgICAgICAgICAgICBs
b2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ID0gcmV0dXJuU3RhdGVtZW50VHlwZVNldCgpOworICAg
ICAgICAgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxpdHlS
ZXR1cm5TdGF0ZW1lbnQ7CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fZGl2b3RGb3JGdW5j
dGlvbk9mZnNldElmUmV0dXJuU3RhdGVtZW50ID0gbV9zb3VyY2VPZmZzZXQ7IAorICAgICAgICAg
ICAgICAgIGlmICghc2hvdWxkQW5hbHl6ZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBCZWNh
dXNlIHNvbWUgcmV0dXJuIHN0YXRlbWVudHMgYXJlIGFkZGVkIGltcGxpY2l0bHkgKHRvIHJldHVy
biB1bmRlZmluZWQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uKSwgYW5kIHRoZXNlIG5vZGVzIGRv
bid0IGVtaXQgZXhwcmVzc2lvbiByYW5nZXMsIGdpdmUgdGhlbSBzb21lIHJhbmdlLgorICAgICAg
ICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIHRoaXMgZGl2b3QgaXMgb24gdGhlIG9wZW4gYnJh
Y2Ugb2YgdGhlIGZ1bmN0aW9uLiAKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fZGl2
b3RTdGFydCA9IGxvY2F0aW9uLT5tX2Rpdm90RW5kID0gbG9jYXRpb24tPm1fZGl2b3RGb3JGdW5j
dGlvbk9mZnNldElmUmV0dXJuU3RhdGVtZW50OworICAgICAgICAgICAgICAgICAgICBzaG91bGRB
bmFseXplID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZtKCktPmhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlcigpLT5pbnNlcnROZXdMb2NhdGlvbihsb2NhdGlvbik7CisgICAg
ICAgICAgICBpZiAoc2hvdWxkQW5hbHl6ZSkKKyAgICAgICAgICAgICAgICB2bSgpLT5oaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIoKS0+aW5zZXJ0TmV3TG9jYXRpb24obG9jYXRpb24pOwogICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyAyXS51LmxvY2F0aW9uID0gbG9jYXRpb247CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCi0KICAgICAgICAgY2FzZSBvcF9jYXB0dXJlZF9tb3Y6
CiAgICAgICAgIGNhc2Ugb3BfbmV3X2NhcHR1cmVkX2Z1bmM6IHsKICAgICAgICAgICAgIGlmIChw
Y1szXS51LmluZGV4ID09IFVJTlRfTUFYKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNzA2MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0
LDcgQEAKICNpbmNsdWRlICJQcm9maWxlckpldHRpc29uUmVhc29uLmgiCiAjaW5jbHVkZSAiUmVn
RXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKKyNpbmNsdWRlICJU
eXBlU2V0LmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFsaXplci5oIgogI2luY2x1ZGUg
IlZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAtOTQyLDYg
Kzk0MywxMyBAQCBwdWJsaWM6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGVuZFZh
bGlkYXRpb25EaWRGYWlsKCk7CiAKICAgICBib29sIGlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCk7
IC8vIFdpbGwgb25seSByZXR1cm4gdmFsaWQgcmVzdWx0cyB3aGVuIGNhbGxlZCBkdXJpbmcgR0Mu
IEFzc3VtZXMgdGhhdCB5b3UndmUgYWxyZWFkeSBlc3RhYmxpc2hlZCB0aGF0IHRoZSBvd25lciBl
eGVjdXRhYmxlIGlzIGxpdmUuCisgICAgUmVmUHRyPFR5cGVTZXQ+IHJldHVyblN0YXRlbWVudFR5
cGVTZXQoKSAKKyAgICB7CisgICAgICAgIGlmICghbV9yZXR1cm5TdGF0ZW1lbnRUeXBlU2V0KQor
ICAgICAgICAgICAgbV9yZXR1cm5TdGF0ZW1lbnRUeXBlU2V0ID0gVHlwZVNldDo6Y3JlYXRlKCk7
CisKKyAgICAgICAgcmV0dXJuIG1fcmV0dXJuU3RhdGVtZW50VHlwZVNldDsKKyAgICB9CiAKIAog
cHJvdGVjdGVkOgpAQCAtMTA5NCw2ICsxMTAyLDggQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IG1fbGl2ZW5lc3NBbmFseXNpczsKIAor
ICAgIFJlZlB0cjxUeXBlU2V0PiBtX3JldHVyblN0YXRlbWVudFR5cGVTZXQ7CisKICAgICBzdHJ1
Y3QgUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlv
bi5oCShyZXZpc2lvbiAxNzA2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VHlwZUxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogZW51bSBIaWdoRmlkZWxpdHlHbG9iYWxJREZsYWdzIHsKICAgICBIaWdoRmlk
ZWxpdHlOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbiA9IC0xLAotICAgIEhpZ2hGaWRlbGl0eU5vR2xv
YmFsSURFeGlzdHMgPSAtMgorICAgIEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHMgPSAtMiwK
KyAgICBIaWdoRmlkZWxpdHlSZXR1cm5TdGF0ZW1lbnQgPSAtMwogfTsKIAogY2xhc3MgVHlwZUxv
Y2F0aW9uIHsKLSAgICAgICAgICAgICAgICAgICAgICAgCiBwdWJsaWM6CiAgICAgVHlwZUxvY2F0
aW9uKCkgCiAgICAgICAgIDogbV9pbnN0cnVjdGlvblR5cGVTZXQoVHlwZVNldDo6Y3JlYXRlKCkp
CkBAIC00Niw4ICs0Niw5IEBAIHB1YmxpYzoKIAogICAgIGludDY0X3QgbV9nbG9iYWxWYXJpYWJs
ZUlEOwogICAgIGludHB0cl90IG1fc291cmNlSUQ7Ci0gICAgdW5zaWduZWQgbV9saW5lOwotICAg
IHVuc2lnbmVkIG1fY29sdW1uOworICAgIHVuc2lnbmVkIG1fZGl2b3RTdGFydDsKKyAgICB1bnNp
Z25lZCBtX2Rpdm90RW5kOworICAgIHVuc2lnbmVkIG1fZGl2b3RGb3JGdW5jdGlvbk9mZnNldElm
UmV0dXJuU3RhdGVtZW50OwogICAgIFJlZlB0cjxUeXBlU2V0PiBtX2luc3RydWN0aW9uVHlwZVNl
dDsKICAgICBSZWZQdHI8VHlwZVNldD4gbV9nbG9iYWxUeXBlU2V0OwogfTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMTcwNjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA1LDYgKzQwNSwzMiBAQCB2
b2lkIFVubGlua2VkQ29kZUJsb2NrOjphZGRFeHByZXNzaW9uSW5mCiAgICAgbV9leHByZXNzaW9u
SW5mby5hcHBlbmQoaW5mbyk7CiB9CiAKK2Jvb2wgVW5saW5rZWRDb2RlQmxvY2s6OmhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvbkluZm9Gb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgdW5zaWduZWQmIHN0YXJ0RGl2b3QsIHVuc2lnbmVkJiBlbmREaXZvdCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgYXV0byBpdGVy
ID0gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUluZm9NYXAuZmluZChieXRlY29kZU9mZnNldCk7
CisgICAgaWYgKGl0ZXIgPT0gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUluZm9NYXAuZW5kKCkp
IHsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nRigiRG9uJ3QgaGF2
ZSBhc3NpZ25tZW50IGluZm8gZm9yIG9mZnNldDoldVxuIiwgYnl0ZWNvZGVPZmZzZXQpOworICAg
ICAgICBzdGFydERpdm90ID0gVUlOVF9NQVg7CisgICAgICAgIGVuZERpdm90ID0gVUlOVF9NQVg7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVFeHByZXNzaW9uUmFuZ2UmIHJhbmdlID0gaXRlci0+dmFsdWU7CisgICAgc3RhcnRE
aXZvdCA9IHJhbmdlLm1fc3RhcnREaXZvdDsKKyAgICBlbmREaXZvdCA9IHJhbmdlLm1fZW5kRGl2
b3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvbkluZm8odW5zaWduZWQgaW5zdHJ1Y3Rpb25P
ZmZzZXQsIHVuc2lnbmVkIHN0YXJ0RGl2b3QsIHVuc2lnbmVkIGVuZERpdm90KQoreworICAgIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvblJhbmdlIHJhbmdlOworICAgIHJhbmdlLm1f
c3RhcnREaXZvdCA9IHN0YXJ0RGl2b3Q7CisgICAgcmFuZ2UubV9lbmREaXZvdCA9IGVuZERpdm90
OworICAgIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVJbmZvTWFwLnNldChpbnN0cnVjdGlvbk9m
ZnNldCwgcmFuZ2UpOyAgCit9CisKIHZvaWQgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkUHJvZ3Jh
bUNvZGVCbG9jayo+KGNlbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE3MDYxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzMsNiArMjczLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhwcmVzc2lvbklu
Zm8odW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQsIGludCBkaXZvdCwKICAgICAgICAgaW50IHN0
YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1bW4p
OwogCisgICAgdm9pZCBhZGRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvKHVu
c2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFydERpdm90LCB1bnNpZ25lZCBl
bmREaXZvdCk7CisKICAgICBib29sIGhhc0V4cHJlc3Npb25JbmZvKCkgeyByZXR1cm4gbV9leHBy
ZXNzaW9uSW5mby5zaXplKCk7IH0KIAogICAgIC8vIFNwZWNpYWwgcmVnaXN0ZXJzCkBAIC00NjUs
NiArNDY3LDggQEAgcHVibGljOgogICAgIHZvaWQgZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVP
ZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCYgZGl2b3QsCiAgICAgICAgIGludCYg
c3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNv
bHVtbik7CiAKKyAgICBib29sIGhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvbkluZm9G
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQmIHN0YXJ0
RGl2b3QsIHVuc2lnbmVkJiBlbmREaXZvdCk7CisKICAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcywgdW5zaWduZWQgZmly
c3RMaW5lLCB1bnNpZ25lZCBsaW5lQ291bnQsIHVuc2lnbmVkIGVuZENvbHVtbikKICAgICB7CiAg
ICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKQEAgLTU3Niw2ICs1ODAsMTIgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBPd25QdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CiAgICAgVmVjdG9y
PEV4cHJlc3Npb25SYW5nZUluZm8+IG1fZXhwcmVzc2lvbkluZm87CisgICAgc3RydWN0IEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvblJhbmdlIHsKKyAgICAgICAgcHVibGljOgorICAg
ICAgICAgICAgdW5zaWduZWQgbV9zdGFydERpdm90OworICAgICAgICAgICAgdW5zaWduZWQgbV9l
bmREaXZvdDsKKyAgICB9OworICAgIEhhc2hNYXA8dW5zaWduZWQsIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlRXhwcmVzc2lvblJhbmdlPiBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlSW5mb01hcDsK
IAogcHJvdGVjdGVkOgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTcwNjEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDUsNyArMTAwNSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TW92ZSgKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHdh
dGNoYWJsZVZhcmlhYmxlKGRzdC0+aW5kZXgoKSkpOwogCiAgICAgaWYgKCFkc3QtPmlzVGVtcG9y
YXJ5KCkgJiYgaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKLSAgICAgICAgZW1p
dFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZHN0LCB0cnVlKTsKKyAgICAgICAgZW1pdFBy
b2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZHN0LCBQcm9maWxlVHlwZXNCeXRlY29kZUhhc0ds
b2JhbElEKTsKIAogICAgIHJldHVybiBkc3Q7CiB9CkBAIC0xMTE2LDE2ICsxMTE2LDEyIEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWwKICAgICByZXR1cm4gZHN0Owog
fQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRl
bGl0eShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJvZmlsZSwgYm9vbCBoYXNHbG9iYWxJRCkKK3Zv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KFJl
Z2lzdGVySUQqIHJlZ2lzdGVyVG9Qcm9maWxlLCBQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5
Qnl0ZWNvZGVGbGFnIGZsYWcpCiB7CiAgICAgZW1pdE9wY29kZShvcF9wcm9maWxlX3R5cGVzX3dp
dGhfaGlnaF9maWRlbGl0eSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlZ2lzdGVyVG9Q
cm9maWxlLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7IC8vIHBsYWNl
aG9sZGVyIGZvciBUeXBlTG9jYXRpb24KLSAgICAvLyBUaGlzIGlzIGEgZmxhZyBpbmRpY2F0aW5n
IHdoZXRoZXIgd2Ugc2hvdWxkIHRyYWNrIHRoaXMgdmFsdWUgdG8gaXRzIGdsb2JhbElEIG9yIG5v
dC4KLSAgICBpZiAoaGFzR2xvYmFsSUQpCi0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgx
KTsKLSAgICBlbHNlCi0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7IC8vIFRoaXMgaXMgYSBwbGFjZWhvbGRlciBmb3IgdGhlIFR5
cGVMb2NhdGlvbiBvYmplY3QgcG9pbnRlci4KKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmxh
Zyk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3Rl
cklEKiBkc3QsIGJvb2wgYikKQEAgLTEzNTEsOSArMTM0Nyw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogCi0gICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KCkpCi0gICAgICAgIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVs
aXR5KHZhbHVlLCBmYWxzZSk7Ci0KICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTE0NTEsOSAr
MTQ0NCw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChhcnJheVByb2ZpbGUpOwogCi0gICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KCkpCi0gICAgICAgIGVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZh
bHVlLCBmYWxzZSk7Ci0KICAgICByZXR1cm4gdmFsdWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJ
KHJldmlzaW9uIDE3MDYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YTsKICAgICB9OwogCisgICAg
ZW51bSBQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5Qnl0ZWNvZGVGbGFnIHsgCisgICAgICAg
IFByb2ZpbGVUeXBlc0J5dGVjb2RlSGFzR2xvYmFsSUQsCisgICAgICAgIFByb2ZpbGVUeXBlc0J5
dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwKKyAgICAgICAgUHJvZmlsZVR5cGVzQnl0ZWNvZGVG
dW5jdGlvbkFyZ3VtZW50LAorICAgICAgICBQcm9maWxlVHlwZXNCeXRlY29kZUZ1bmN0aW9uVGhp
c09iamVjdCwKKyAgICAgICAgUHJvZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRl
bWVudCAgCisgICAgfTsKKwogICAgIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yIHsKICAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpAQCAtMzE2LDYgKzMyNCwxNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRkRXhwcmVz
c2lvbkluZm8oaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90T2Zmc2V0LCBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBlbWl0SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBzdGFydERpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kRGl2b3QpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RhcnREaXZvdC5vZmZzZXQgKyAxOyAvLyBS
YW5nZXMgYXJlIGluY2x1c2l2ZSBvZiB0aGVpciBlbmRwb2ludHMsIEFORCAxIGluZGV4ZWQuCisg
ICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBlbmREaXZvdC5vZmZzZXQ7IC8vIEVuZCBSYW5nZXMg
YWxyZWFkeSBnbyBvbmUgcGFzdCB0aGUgaW5jbHVzaXZlIHJhbmdlLCBzbyBubyBuZWVkIHRvIGRv
ICsgMSAtIDEuCisgICAgICAgICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCA9IGluc3Ry
dWN0aW9ucygpLnNpemUoKSAtIDE7CisgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRkSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVFeHByZXNzaW9uSW5mbyhpbnN0cnVjdGlvbk9mZnNldCwgc3RhcnQs
IGVuZCk7CisgICAgICAgIH0KKwogICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbGVmdEhhbmRT
aWRlTmVlZHNDb3B5KGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodElzUHVyZSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIChtX2NvZGVUeXBlICE9IEZ1bmN0aW9uQ29k
ZSB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpIHx8IHJpZ2h0SGFzQXNzaWdu
bWVudHMpICYmICFyaWdodElzUHVyZTsKQEAgLTMzMiw3ICszNDgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBlbWl0Tm9kZShuKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoUmVnaXN0ZXJJRCogZHN0LCBi
b29sKTsKKyAgICAgICAgdm9pZCBlbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShSZWdp
c3RlcklEKiBkc3QsIFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHlCeXRlY29kZUZsYWcpOwog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgYm9vbCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAJKHJldmlzaW9uIDE3MDYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDcgKzM3NCwx
MyBAQCBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9i
YXNlLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBtX3N1YnNjcmlwdC0+aXNQdXJlKGdlbmVy
YXRvcikpOwogICAgIFJlZ2lzdGVySUQqIHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1f
c3Vic2NyaXB0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlW
YWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkp
OworICAgIFJlZ2lzdGVySUQqIGZpbmFsRGVzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCk7CisgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChmaW5h
bERlc3QsIGJhc2UuZ2V0KCksIHByb3BlcnR5KTsKKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmls
aW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KGZpbmFsRGVzdCwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVE
b2VzTm90SGF2ZUdsb2JhbElEKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlU
eXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIERvdEFjY2Vzc29yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
Mzk0LDcgKzQwMCwxMyBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29k
CiBub25Bcmd1bWVudHNQYXRoOgogICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0
QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLCBtX2lkZW50KTsKKyAg
ICBSZWdpc3RlcklEKiBmaW5hbERlc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
OworICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3Qs
IGJhc2UsIG1faWRlbnQpOworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhI
aWdoRmlkZWxpdHkoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhI
aWdoRmlkZWxpdHkoZmluYWxEZXN0LCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xv
YmFsSUQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdF
eHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KKyAgICByZXR1
cm4gcmV0OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJndW1lbnRM
aXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDczLDcgKzQ4NSwxMiBA
QCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCCiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBm
dW5jLmdldCgpKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBt
X2FyZ3MpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVy
blZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgUmVnaXN0ZXJJRCog
cmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hG
aWRlbGl0eSgpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hG
aWRlbGl0eShyZXR1cm5WYWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2
ZUdsb2JhbElEKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmls
aW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9CisgICAg
cmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0
aW9uQ2FsbFJlc29sdmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAg
LTQ4OSw3ICs1MDYsMTIgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVt
aQogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIC8vIFRoaXMgcGFzc2VzIE5vRXhwZWN0ZWRGdW5j
dGlvbiBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGlmIHRoZSBmdW5jdGlvbiBpcyBpbiBhCiAgICAg
ICAgIC8vIGxvY2FsIHZhcmlhYmxlLCB0aGVuIGl0J3Mgbm90IG9uZSBvZiBvdXIgYnVpbHQtaW4g
Y29uc3RydWN0b3JzLgotICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZh
bHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIFJlZ2lzdGVySUQq
IHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwg
Tm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRo
SGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVz
V2l0aEhpZ2hGaWRlbGl0eShyZXR1cm5WYWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVE
b2VzTm90SGF2ZUdsb2JhbElEKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKQEAgLTUwMCw3ICs1MjIs
MTIgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaQogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8obmV3RGl2b3QsIGRpdm90U3RhcnQoKSwgbmV3RGl2b3Qp
OwogICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIG1faWRlbnQpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1bmMuZ2V0
KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQsIFRocm93SWZOb3RGb3Vu
ZCk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVu
Yy5nZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYg
KGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShyZXR1cm5WYWx1ZS5n
ZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElEKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUxNCw3ICs1NDEsMTIgQEAgUmVn
aXN0ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaQogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rp
b24uZ2V0KCkpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1f
YXJncyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGJhc2UuZ2V0KCkpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFs
dWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgUmVnaXN0ZXJJRCog
cmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhI
aWdoRmlkZWxpdHkoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhI
aWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05v
dEhhdmVHbG9iYWxJRCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgfQor
ICAgIHJldHVybiByZXQ7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBG
dW5jdGlvbkNhbGxEb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAg
LTUyNyw3ICs1NTksMTIgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5
dAogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBt
X2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRp
dm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwogICAgIGdl
bmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlvbi5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwgbV9pZGVudCk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5W
YWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBSZWdpc3RlcklE
KiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0
aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0
aEhpZ2hGaWRlbGl0eShyZXR1cm5WYWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2Vz
Tm90SGF2ZUdsb2JhbElEKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9
CisgICAgcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIFJlZ2lzdGVySUQqIGdldEFyZ3VtZW50QnlW
YWwoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIFJl
Z2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiBkc3QsIEpTVGV4dFBvc2l0aW9uIGRpdm90
LCBKU1RleHRQb3NpdGlvbiBkaXZvdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiBkaXZvdEVuZCkKQEAg
LTU5Nyw2ICs2MzQsMTAgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVt
aQogICAgICAgICB9CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAg
ICB9CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgp
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShy
ZXR1cm5WYWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElE
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVz
c2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlLmdldCgpOwogfQogCkBAIC03MDcsNiArNzQ4LDEwIEBAIFJlZ2lzdGVySUQqIEFw
cGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQorICAgIGlmIChnZW5lcmF0b3Iu
aXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuVmFsdWUuZ2V0KCksIFByb2Zp
bGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApA
QCAtNzQ3LDkgKzc5Miw5IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZShC
eXQKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VG9OdW1iZXIodGVtcERzdC5nZXQoKSwgbG9j
YWxSZWcpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHRlbXBEc3RTcmMuZ2V0KCks
IGxvY2FsUmVnKTsKICAgICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHRlbXBEc3RT
cmMuZ2V0KCksIG1fb3BlcmF0b3IpOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2Zp
bGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbFJlZywgdGVtcERzdFNyYy5nZXQoKSk7
CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVs
aXR5KCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAg
ICAgIHJldHVybiB0ZW1wRHN0LmdldCgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBlbWl0
UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
bG9jYWxSZWcsIG1fb3BlcmF0b3IpOwpAQCAtNzYwLDYgKzgwNSw5IEBAIFJlZ2lzdGVySUQqIFBv
c3RmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNj
b3BlLmdldCgpLCBpZGVudCwgVGhyb3dJZk5vdEZvdW5kKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRv
ci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpLCBUaHJvd0lm
Tm90Rm91bmQpOworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoKSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5n
RXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKwogICAgIHJldHVybiBv
bGRWYWx1ZS5nZXQoKTsKIH0KIApAQCAtNzgxLDYgKzgyOSwxMCBAQCBSZWdpc3RlcklEKiBQb3N0
Zml4Tm9kZTo6ZW1pdEJyYWNrZXQoQnl0CiAgICAgUmVnaXN0ZXJJRCogb2xkVmFsdWUgPSBlbWl0
UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2
YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICBp
ZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZhbHVlLmdldCgp
LCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rl
c3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CiAKQEAgLTgwMSw2ICs4NTMsMTAg
QEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZAogICAgIFJlZ2lzdGVy
SUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgp
KTsKKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkp
IHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZh
bHVlLmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5m
byhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9y
Lm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CiAKQEAgLTkyMSw5
ICs5NzcsOSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXRlCiAgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcERzdCA9IGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZSh0ZW1wRHN0LmdldCgp
LCBsb2NhbFJlZyk7CiAgICAgICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB0ZW1wRHN0
LmdldCgpLCBtX29wZXJhdG9yKTsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxp
bmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUobG9jYWxSZWcsIHRlbXBEc3QuZ2V0KCkpOworICAg
ICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgp
KQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGlu
Z0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCB0ZW1wRHN0Lmdl
dCgpKTsKICAgICAgICAgfQogICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCBsb2NhbFJl
ZywgbV9vcGVyYXRvcik7CkBAIC05MzUsNiArOTkxLDggQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9k
ZTo6ZW1pdFJlc29sdmUoQnl0ZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0
KCksIGlkZW50LCBUaHJvd0lmTm90Rm91bmQpOwogICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3Is
IHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUo
c2NvcGUuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQoKSwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBp
ZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAg
IGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGRzdCwgdmFsdWUuZ2V0KCkpOwogfQogCkBAIC05NTQsNiArMTAxMiwx
MCBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0QnJhY2tldChCeXRlCiAgICAgZW1pdElu
Y09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBn
ZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7
CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1
ZSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElEKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9E
ZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiB9CiAKQEAgLTk3Miw2ICsx
MDM0LDEwIEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGUKICAgICBl
bWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVudCwgdmFsdWUpOworICAg
IGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodmFsdWUsIFBy
b2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CisgICAgfQogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGlu
YXRpb25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkpOwogfQogCkBAIC0xNDI0LDkgKzE0OTAs
OSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHJlc3VsdC5nZXQoKSwgbG9jYWwuZ2V0KCkp
OwogICAgICAgICAgICAgZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgcmVzdWx0
LmdldCgpLCByZXN1bHQuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhS
ZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsK
LSAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxp
dHkoKSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rp
dm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
TW92ZShsb2NhbC5nZXQoKSwgcmVzdWx0LmdldCgpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0
b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3Zl
VG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0LmdldCgpKTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTE0MzgsNyArMTUwNCwxMCBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2
ZU5vZGU6OmVtaXRCCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lkZW50KTsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBUaHJvd0lmTm90Rm91
bmQpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBlbWl0UmVhZE1vZGlmeUFzc2ln
bm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdl
dCgpKSwgdmFsdWUuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1
bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpLCB0aGlz
KTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCBtX2lk
ZW50LCByZXN1bHQuZ2V0KCksIFRocm93SWZOb3RGb3VuZCk7CisgICAgUmVnaXN0ZXJJRCogcmV0
ID0gZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCBtX2lkZW50LCByZXN1bHQu
Z2V0KCksIFRocm93SWZOb3RGb3VuZCk7CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5
cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwor
ICAgIHJldHVybiByZXQ7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBB
c3NpZ25SZXNvbHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
MTQ1Myw5ICsxNTIyLDkgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRl
YwogICAgICAgICBpZiAobG9jYWwuaXNDYXB0dXJlZCgpIHx8IGdlbmVyYXRvci5pc1Byb2ZpbGlu
Z1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdGVtcERzdCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wRHN0LmdldCgpLCBtX3JpZ2h0KTsKLSAgICAgICAgICAg
IGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKLSAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUobG9jYWwu
Z2V0KCksIHRlbXBEc3QuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2Zp
bGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0
aW9uSWZOZWVkZWQoZHN0LCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBSZWdp
c3RlcklEKiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUobG9jYWwuZ2V0KCksIG1fcmlnaHQp
OwpAQCAtMTQ2OSw3ICsxNTM4LDEwIEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWMKICAgICAgICAgZHN0ID0gMDsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9yaWdodCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIG1faWRlbnQsIHJlc3Vs
dC5nZXQoKSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9O
b3RUaHJvd0lmTm90Rm91bmQpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0
UHV0VG9TY29wZShzY29wZS5nZXQoKSwgbV9pZGVudCwgcmVzdWx0LmdldCgpLCBnZW5lcmF0b3Iu
aXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCk7
CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQor
ICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9u
SW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIHJldHVybiByZXQ7CiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBc3NpZ25Eb3ROb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNDgyLDYgKzE1NTQsMTAgQEAgUmVnaXN0ZXJJ
RCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWdpc3Rl
cklEKiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/
IHJlc3VsdCA6IGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24ocmVzdWx0KSwgcmVzdWx0KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5
SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdCk7CisgICAgaWYgKGdlbmVyYXRv
ci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShmb3J3YXJkUmVzdWx0LCBQcm9maWxl
VHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9u
SWZOZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKIH0KIApAQCAtMTQ5Niw3ICsxNTcyLDEyIEBA
IFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWMKICAgICBSZWdpc3RlcklE
KiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCksIG1f
cmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgp
LCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1
ZSk7CisgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0
KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGlu
Z1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh1cGRhdGVkVmFsdWUsIFByb2ZpbGVUeXBlc0J5dGVjb2Rl
RG9lc05vdEhhdmVHbG9iYWxJRCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgfQorICAgIHJldHVybiByZXQ7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBBc3NpZ25FcnJvck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTE1MTgsNiArMTU5OSwxMCBAQCBSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1p
dEJ5dGVjCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0
ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpID8gcmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVU
b0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQpLCBy
ZXN1bHQpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHku
Z2V0KCksIGZvcndhcmRSZXN1bHQpOworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoZm9yd2FyZFJlc3VsdCwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2Vz
Tm90SGF2ZUdsb2JhbElEKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9
CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgZm9y
d2FyZFJlc3VsdCk7CiB9CiAKQEAgLTE1MzQsNiArMTYxOSwxMCBAQCBSZWdpc3RlcklEKiBSZWFk
TW9kaWZ5QnJhY2tldE5vZGU6OmVtaXRCCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdXBkYXRlZFZhbHVlKTsKKyAg
ICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHVwZGF0ZWRW
YWx1ZSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElEKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9CiAKICAgICByZXR1cm4gdXBkYXRlZFZhbHVl
OwogfQpAQCAtMjAyMiw2ICsyMTExLDEwIEBAIHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2UKICAgICAgICAgZHN0ID0gMDsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZXR1cm5SZWdpc3RlciA9IG1fdmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3ZhbHVl
KSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOworICAgIGlmIChnZW5l
cmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkocmV0dXJuUmVnaXN0ZXIuZ2V0
KCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KICAgICBpZiAoZ2VuZXJhdG9yLnNjb3Bl
RGVwdGgoKSkgewogICAgICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TW92ZShn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQb3BTY29wZXMoMCk7CkBAIC0yMzQ5LDYgKzI0NDIsMjAgQEAgdm9pZCBF
dmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZQogCiB2b2lkIEZ1bmN0aW9uQm9keU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KikKIHsKKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5
KCkpIHsKKyAgICAgICAgSlNUZXh0UG9zaXRpb24gc3RhcnQoLTEsIG1fc3RhcnRTdGFydE9mZnNl
dCwgLTEpOyAvLyBUaGlzIGRpdm90IGlzIGF0IHRoZSBvcGVuIGJyYWNlIG9mIHRoZSBmdW5jdGlv
bi4KKyAgICAgICAgSlNUZXh0UG9zaXRpb24gZW5kKC0xLCBtX3N0YXJ0U3RhcnRPZmZzZXQgKyAx
LCAtMSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0
eShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIFByb2ZpbGVUeXBlc0J5dGVjb2RlRnVuY3Rpb25U
aGlzT2JqZWN0KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmls
aW5nRXhwcmVzc2lvbkluZm8oc3RhcnQsIGVuZCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9wYXJhbWV0ZXJzLT5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgQVNTRVJUKG1f
cGFyYW1ldGVycy0+YXQoaSktPmlzQmluZGluZ05vZGUoKSk7CisgICAgICAgICAgICBCaW5kaW5n
Tm9kZSogcGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8QmluZGluZ05vZGUqPihtX3BhcmFtZXRlcnMt
PmF0KGkpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQgcmVnKENhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXQoaSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGln
aEZpZGVsaXR5KCZyZWcsIFByb2ZpbGVUeXBlc0J5dGVjb2RlRnVuY3Rpb25Bcmd1bWVudCk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNz
aW9uSW5mbyhwYXJhbWV0ZXItPmRpdm90U3RhcnQoKSwgcGFyYW1ldGVyLT5kaXZvdEVuZCgpKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVy
Q2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFy
dE9mZnNldCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKQEAgLTIzNjUsNiArMjQ3Miw4IEBAIHZvaWQgRnVuY3Rp
b25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGUKICAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1
cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAgICAgaWYgKCFyZXR1cm5Ob2Rl
KSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/
IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hG
aWRlbGl0eSgpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGln
aEZpZGVsaXR5KHIwLCBQcm9maWxlVHlwZXNCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50
KTsgLy8gRG8gbm90IGVtaXQgZXhwcmVzc2lvbiBpbmZvIGZvciB0aGlzIHByb2ZpbGUgYmVjYXVz
ZSBpdCdzIG5vdCBpbiB0aGUgdXNlcidzIHNvdXJjZSBjb2RlLgogICAgICAgICBBU1NFUlQoc3Rh
cnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwg
bGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAJKHJldmlzaW9uIDE3MDYxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSwxMCArMTkxLDEwIEBAIHZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpydW4oRXJyb3JTdHIKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgaW5fdmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGluX2lkLCBp
bnQgaW5fc3RhcnRMaW5lLCBpbnQgaW5fc3RhcnRDb2x1bW4sIGludCBpbl9lbmRMaW5lLCBpbnQg
aW5fZW5kQ29sdW1uLCBTdHJpbmcqIG91dF90eXBlcykgCit2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUF0T2Zmc2V0KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5faWQsIGludCBpbl9k
aXZvdCwgU3RyaW5nKiBvdXRfdHlwZXMpIAogewogICAgIFZNJiB2bSA9IGdsb2JhbFZNKCk7Ci0g
ICAgU3RyaW5nIHR5cGVzKHZtLmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKGluX3N0YXJ0TGlu
ZSwgaW5fc3RhcnRDb2x1bW4sIGluX2VuZExpbmUsIGluX2VuZENvbHVtbiwgaW5fdmFyaWFibGVO
YW1lLCBpbl9pZCkpOworICAgIFN0cmluZyB0eXBlcyh2bS5nZXRUeXBlc0ZvclZhcmlhYmxlQXRP
ZmZzZXQoaW5fZGl2b3QsIGluX3ZhcmlhYmxlTmFtZSwgaW5faWQpKTsKICAgICAqb3V0X3R5cGVz
ID0gdHlwZXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCShyZXZpc2lv
biAxNzA2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykgb3ZlcnJpZGUgZmluYWw7CiAgICAg
dmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0R3JvdXApIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJy
b3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5cGVGb3JW
YXJpYWJsZUluVGV4dFJhbmdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJs
ZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5faWQsIGludCBpbl9zdGFydExpbmUsIGludCBpbl9zdGFy
dENvbHVtbiwgaW50IGluX2VuZExpbmUsIGludCBpbl9lbmRDb2x1bW4sIFN0cmluZyogb3V0X3R5
cGVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5cGVGb3JWYXJpYWJs
ZUF0T2Zmc2V0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNv
bnN0IFN0cmluZyYgaW5faWQsIGludCBpbl9kaXZvdCwgU3RyaW5nKiBvdXRfdHlwZXMpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBzZXRTY3JpcHREZWJ1Z1NlcnZlcihTY3JpcHREZWJ1Z1NlcnZlciog
c2NyaXB0RGVidWdTZXJ2ZXIpIHsgbV9zY3JpcHREZWJ1Z1NlcnZlciA9IHNjcmlwdERlYnVnU2Vy
dmVyOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
UnVudGltZS5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvUnVudGltZS5qc29uCShyZXZpc2lvbiAxNzA2MTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1J1bnRpbWUuanNvbgkod29ya2luZyBjb3B5
KQpAQCAtMTk4LDE0ICsxOTgsMTEgQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNh
YmxlcyByZXBvcnRpbmcgb2YgZXhlY3V0aW9uIGNvbnRleHRzIGNyZWF0aW9uLiIKICAgICAgICAg
fSwKICAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiZ2V0UnVudGltZVR5cGVGb3JWYXJp
YWJsZUluVGV4dFJhbmdlIiwKKyAgICAgICAgICAgICJuYW1lIjogImdldFJ1bnRpbWVUeXBlRm9y
VmFyaWFibGVBdE9mZnNldCIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInZhcmlhYmxlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJWYXJpYWJsZSB3ZSB3YW50IHR5cGUgaW5mcm9tYXRpb24gZm9yLiIgfSwKICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUlEIiwgInR5cGUiOiAic3RyaW5nIiwgImRl
c2NyaXB0aW9uIjogInNvdXJjZUlEIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGEgc2NyaXB0IiB9LAot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhcnRMaW5lIiwgInR5cGUiOiAiaW50ZWdlciIs
ICJkZXNjcmlwdGlvbiI6ICJzdGFydCBsaW5lIGZvciB2YXJpYWJsZSBuYW1lIiB9LAotICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic3RhcnRDb2x1bW4iLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRl
c2NyaXB0aW9uIjogInN0YXJ0IGNvbHVtbiBmb3IgdmFyaWFibGUgbmFtZSIgfSwKLSAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImVuZExpbmUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0
aW9uIjogImVuZCBsaW5lIGZvciB2YXJpYWJsZSBuYW1lIiB9LAotICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZW5kQ29sdW1uIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJl
bmQgY29sdW1uIGZvciB2YXJpYWJsZSBuYW1lIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJkaXZvdCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiY2hhcmFjdGVyIG9m
ZnNldCBmb3IgYXNzaWdubWVudCByYW5nZSIgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICJyZXR1cm5zIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZXMiLCAidHlwZSI6
ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVHlwZXMgZm9yIHJlcXVlc3RlZCB2YXJpYWJsZS4i
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVs
aXR5TG9nLmNwcAkocmV2aXNpb24gMTcwNjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsOSArODUsNyBA
QCB2b2lkIEhpZ2hGaWRlbGl0eUxvZzo6cHJvY2Vzc0hpZ2hGaWRlbGl0CiAgICAgZGF0YS0+bV9s
b2NrZXIgPSBsb2NrZXI7CiAKICAgICBtX2N1cnJlbnRPZmZzZXQgPSAwOwotICAgIExvZ0VudHJ5
KiB0ZW1wID0gbV9sb2dTdGFydFB0cjsKLSAgICBtX2xvZ1N0YXJ0UHRyID0gbV9uZXh0QnVmZmVy
OwotICAgIG1fbmV4dEJ1ZmZlciA9IHRlbXA7CisgICAgc3RkOjpzd2FwKG1fbG9nU3RhcnRQdHIs
IG1fbmV4dEJ1ZmZlcik7CiAgICAgCiAgICAgaWYgKGFzeW5jaHJvbm91c2x5KQogICAgICAgICBj
cmVhdGVUaHJlYWQoYWN0dWFsbHlQcm9jZXNzTG9nVGhyZWFkRnVuY3Rpb24sIGRhdGEsICJQcm9j
ZXNzSGlnaEZpZGVsaXR5TG9nIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAJKHJldmlzaW9u
IDE3MDYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDU3ICszMiw2NyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi1TdHJpbmcg
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNp
Z25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lICwg
dW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qg
c291cmNlSUQpCitTdHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRUeXBlc0ZvclZh
cmlhYmxlSW5BdE9mZnNldCh1bnNpZ25lZCBkaXZvdCwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5h
bWUsIGludHB0cl90IHNvdXJjZUlEKQogewotICAgIFN0cmluZyBnbG9iYWwgPSBnZXRHbG9iYWxU
eXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBl
bmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNlSUQpOworICAgIFN0cmluZyBnbG9iYWwgPSBn
ZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXQoZGl2b3QsIHZhcmlhYmxlTmFtZSwgc291
cmNlSUQpOwogICAgIGlmICghZ2xvYmFsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGdsb2Jh
bDsKICAgICAKLSAgICByZXR1cm4gZ2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFy
dExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291
cmNlSUQpOworICAgIHJldHVybiBnZXRMb2NhbFR5cGVzRm9yVmFyaWFibGVBdE9mZnNldChkaXZv
dCwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7CiB9CiAKLVdURjo6U3RyaW5nIEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlcjo6Z2V0R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQg
c3RhcnRMaW5lLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGludHB0cl90IHNvdXJjZUlEKQorU3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6
Z2V0R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0KHVuc2lnbmVkIGRpdm90LCBjb25zdCBT
dHJpbmcmICwgaW50cHRyX3Qgc291cmNlSUQpCiB7Ci0gICAgYXV0byBpdGVyTG9jYXRpb25NYXAg
PSBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcC5maW5kKGdldExvY2F0aW9uQmFzZWRIYXNo
KHNvdXJjZUlELCBzdGFydExpbmUpKTsKLSAgICBpZiAoaXRlckxvY2F0aW9uTWFwID09IG1fZ2xv
YmFsTG9jYXRpb25Ub0dsb2JhbElETWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAg
VHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IGZpbmRMb2NhdGlvbihkaXZvdCwgc291cmNlSUQpOwor
ICAgIGlmICghbG9jYXRpb24pCisgICAgICAgIHJldHVybiAgIiI7CiAKLSAgICBhdXRvIGl0ZXJJ
RE1hcCA9IG1fZ2xvYmFsSURNYXAuZmluZChpdGVyTG9jYXRpb25NYXAtPnNlY29uZCk7Ci0gICAg
aWYgKGl0ZXJJRE1hcCA9PSBtX2dsb2JhbElETWFwLmVuZCgpKQorICAgIGlmIChsb2NhdGlvbi0+
bV9nbG9iYWxWYXJpYWJsZUlEID09IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHMpCiAgICAg
ICAgIHJldHVybiAiIjsKIAotICAgIHJldHVybiBpdGVySURNYXAtPnNlY29uZC0+c2VlblR5cGVz
KCk7CisgICAgcmV0dXJuIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPnNlZW5UeXBlcygpOwog
fQogCi1XVEY6OlN0cmluZyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldExvY2FsVHlwZXNG
b3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCAsIHVuc2lnbmVk
ICwgdW5zaWduZWQgLCBjb25zdCBXVEY6OlN0cmluZyYgLCBpbnRwdHJfdCBzb3VyY2VJRCkKK1N0
cmluZyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldExvY2FsVHlwZXNGb3JWYXJpYWJsZUF0
T2Zmc2V0KHVuc2lnbmVkIGRpdm90LCBjb25zdCBTdHJpbmcmICwgaW50cHRyX3Qgc291cmNlSUQp
CiB7Ci0gICAgYXV0byBpdGVyID0gbV9nbG9iYWxMb2NhdGlvbk1hcC5maW5kKGdldExvY2F0aW9u
QmFzZWRIYXNoKHNvdXJjZUlELCBzdGFydExpbmUpKTsKLSAgICBhdXRvIGVuZCA9IG1fZ2xvYmFs
TG9jYXRpb25NYXAuZW5kKCk7Ci0gICAgaWYgKGl0ZXIgPT0gZW5kKQorICAgIFR5cGVMb2NhdGlv
biogbG9jYXRpb24gPSBmaW5kTG9jYXRpb24oZGl2b3QsIHNvdXJjZUlEKTsKKyAgICBpZiAoIWxv
Y2F0aW9uKQogICAgICAgICByZXR1cm4gICIiOwogCi0gICAgcmV0dXJuIGl0ZXItPnNlY29uZC0+
c2VlblR5cGVzKCk7CisgICAgcmV0dXJuIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldC0+
c2VlblR5cGVzKCk7CiB9CiAKIHZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjppbnNlcnRO
ZXdMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQogewogICAgIGlmICh2ZXJib3NlKQot
ICAgICAgICBkYXRhTG9nRigiUmVnaXN0ZXJpbmcgbG9jYXRpb246OiBsaW5lOiV1LCBjb2x1bW46
JXVcbiIsIGxvY2F0aW9uLT5tX2xpbmUsIGxvY2F0aW9uLT5tX2NvbHVtbik7Ci0KLSAgICBMb2Nh
dGlvbktleSBrZXkoZ2V0TG9jYXRpb25CYXNlZEhhc2gobG9jYXRpb24tPm1fc291cmNlSUQsIGxv
Y2F0aW9uLT5tX2xpbmUpKTsKKyAgICAgICAgZGF0YUxvZ0YoIlJlZ2lzdGVyaW5nIGxvY2F0aW9u
OjogZGl2b3RTdGFydDoldSwgZGl2b3RFbmQ6JXVcbiIsIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQs
IGxvY2F0aW9uLT5tX2Rpdm90RW5kKTsKIAotICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxWYXJp
YWJsZUlEICE9IEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHMpIHsgCi0gICAgICAgIC8vIEJ1
aWxkIHRoZSBtYXBwaW5nIHJlbGF0aW9uc2hpcHMgTWFwMTprZXk9Pmdsb2JhbElkLCBNYXAyOmds
b2JhbElEPT5UeXBlU2V0IAotICAgICAgICBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcFtr
ZXldID0gbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRDsKLSAgICAgICAgbV9nbG9iYWxJRE1h
cFtsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEXSA9IGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVT
ZXQ7CisgICAgaWYgKCFtX2J1Y2tldE1hcC5jb250YWlucyhsb2NhdGlvbi0+bV9zb3VyY2VJRCkp
IHsKKyAgICAgICAgVmVjdG9yPFR5cGVMb2NhdGlvbio+IGJ1Y2tldDsKKyAgICAgICAgbV9idWNr
ZXRNYXAuc2V0KGxvY2F0aW9uLT5tX3NvdXJjZUlELCBidWNrZXQpOwogICAgIH0KIAotICAgIG1f
Z2xvYmFsTG9jYXRpb25NYXBba2V5XSA9IGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldDsK
KyAgICBWZWN0b3I8VHlwZUxvY2F0aW9uKj4mIGJ1Y2tldCA9IG1fYnVja2V0TWFwLmZpbmQobG9j
YXRpb24tPm1fc291cmNlSUQpLT52YWx1ZTsKKyAgICBidWNrZXQuYXBwZW5kKGxvY2F0aW9uKTsK
IH0KIAotTG9jYXRpb25LZXkgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRMb2NhdGlvbkJh
c2VkSGFzaChpbnRwdHJfdCBpZCwgdW5zaWduZWQgbGluZSkKK1R5cGVMb2NhdGlvbiogSGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGVyOjpmaW5kTG9jYXRpb24odW5zaWduZWQgZGl2b3QsIGludHB0cl90
IHNvdXJjZUlEKQogewotICAgIHJldHVybiBMb2NhdGlvbktleShpZCwgbGluZSwgMSk7CisgICAg
QVNTRVJUKG1fYnVja2V0TWFwLmNvbnRhaW5zKHNvdXJjZUlEKSk7IAorCisgICAgVmVjdG9yPFR5
cGVMb2NhdGlvbio+JiBidWNrZXQgPSBtX2J1Y2tldE1hcC5maW5kKHNvdXJjZUlEKS0+dmFsdWU7
CisgICAgdW5zaWduZWQgZGlzdGFuY2UgPSBVSU5UX01BWDsgLy8gQmVjYXVzZSBhc3NpZ25tZW50
cyBtYXkgYmUgbmVzdGVkLCBtYWtlIHN1cmUgd2UgZmluZCB0aGUgY2xvc2VzdCBlbmNsb3Npbmcg
YXNzaWdubWVudCB0byB0aGlzIGNoYXJhY3RlciBvZmZzZXQuCisgICAgVHlwZUxvY2F0aW9uKiBi
ZXN0TWF0Y2ggPSBudWxscHRyOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gYnVja2V0
LnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9u
ID0gYnVja2V0LmF0KGkpOworICAgICAgICBpZiAobG9jYXRpb24tPm1fZGl2b3RTdGFydCA8PSBk
aXZvdCAmJiBkaXZvdCA8PSBsb2NhdGlvbi0+bV9kaXZvdEVuZCAmJiBsb2NhdGlvbi0+bV9kaXZv
dEVuZCAtIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQgPD0gZGlzdGFuY2UpIHsKKyAgICAgICAgICAg
IGRpc3RhbmNlID0gbG9jYXRpb24tPm1fZGl2b3RFbmQgLSBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0
OworICAgICAgICAgICAgYmVzdE1hdGNoID0gbG9jYXRpb247CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBGSVhNRTogQmVzdE1hdGNoIHNob3VsZCBuZXZlciBiZSBudWxsLiBUaGlzIGRvZXNu
J3QgaG9sZCBjdXJyZW50bHkgYmVjYXVzZSB3ZSBpZ25vcmUgc29tZSBFdmFsL1dpdGgvVmFySW5q
ZWN0aW9uIHZhcmlhYmxlIGFzc2lnbm1lbnRzLgorICAgIHJldHVybiBiZXN0TWF0Y2g7CiB9CiAK
IH0gLy9uYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9I
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAkocmV2aXNpb24gMTcwNjEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDU3ICszMSwyNSBAQAogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNZXRob2QuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBUeXBlTG9jYXRpb247CiAKLXN0cnVjdCBMb2NhdGlvbktleSB7Ci0KLXB1Ymxp
YzoKLSAgICBMb2NhdGlvbktleShpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZSwgdW5z
aWduZWQgY29sdW1uKSAKLSAgICAgICAgOiBtX3NvdXJjZUlEKHNvdXJjZUlEKQotICAgICAgICAs
IG1fbGluZShsaW5lKQotICAgICAgICAsIG1fY29sdW1uKGNvbHVtbikKLQotICAgIHsKLSAgICB9
Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2xp
bmUgKyBtX3NvdXJjZUlEOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBGb3Igbm93LCB0aGlzIGlz
IGEgaGFjay4gV2UgZG8gdGhlIGZvbGxvd2luZzogTWFwOiJJRDpMaW5lIiA9PiBUeXBlU2V0LiBP
YnZpb3VzbHksIHRoaXMgYXNzdW1lcyBhbGwgYXNzaWdubWVudHMgYXJlIG9uIGRpc2NyZXRlIGxp
bmVzLCB3aGljaCBpcyBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbi4KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgTG9jYXRpb25LZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fc291cmNlSUQgPT0gb3RoZXIubV9zb3VyY2VJRAotICAgICAgICAgICAgICAgJiYgbV9saW5l
ID09IG90aGVyLm1fbGluZTsKLSAgICB9Ci0KLSAgICBpbnRwdHJfdCBtX3NvdXJjZUlEOwotICAg
IHVuc2lnbmVkIG1fbGluZTsKLSAgICB1bnNpZ25lZCBtX2NvbHVtbjsKLX07Ci0KIGNsYXNzIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlciB7CiAKIHB1YmxpYzoKLSAgICBTdHJpbmcgZ2V0VHlwZXNG
b3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcmIHZh
cmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpOwotICAgIFN0cmluZyBnZXRHbG9iYWxUeXBl
c0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYg
dmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7Ci0gICAgU3RyaW5nIGdldExvY2FsVHlw
ZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcm
IHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpOworICAgIFN0cmluZyBnZXRUeXBlc0Zv
clZhcmlhYmxlSW5BdE9mZnNldCh1bnNpZ25lZCBkaXZvdCwgY29uc3QgU3RyaW5nJiB2YXJpYWJs
ZU5hbWUsIGludHB0cl90IHNvdXJjZUlEKTsKKyAgICBTdHJpbmcgZ2V0R2xvYmFsVHlwZXNGb3JW
YXJpYWJsZUF0T2Zmc2V0KHVuc2lnbmVkIGRpdm90LCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFt
ZSwgaW50cHRyX3Qgc291cmNlSUQpOworICAgIFN0cmluZyBnZXRMb2NhbFR5cGVzRm9yVmFyaWFi
bGVBdE9mZnNldCh1bnNpZ25lZCBkaXZvdCwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGlu
dHB0cl90IHNvdXJjZUlEKTsKICAgICB2b2lkIGluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlv
biopOwogICAgIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgTG9jYXRpb25LZXkgZ2V0TG9jYXRpb25C
YXNlZEhhc2goaW50cHRyX3QsIHVuc2lnbmVkKTsKKyAgICBUeXBlTG9jYXRpb24qIGZpbmRMb2Nh
dGlvbih1bnNpZ25lZCBkaXZvdCwgaW50cHRyX3Qgc291cmNlSUQpOwogCi0gICAgdHlwZWRlZiBz
dGQ6OnVub3JkZXJlZF9tYXA8TG9jYXRpb25LZXksIFJlZlB0cjxUeXBlU2V0PiwgSGFzaE1ldGhv
ZDxMb2NhdGlvbktleT4+IEdsb2JhbExvY2F0aW9uTWFwOyAKLSAgICB0eXBlZGVmIHN0ZDo6dW5v
cmRlcmVkX21hcDxpbnQ2NF90LCBSZWZQdHI8VHlwZVNldD4+IEdsb2JhbElETWFwOyAKLSAgICB0
eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxMb2NhdGlvbktleSwgaW50NjRfdCwgSGFzaE1ldGhv
ZDxMb2NhdGlvbktleT4+IEdsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcDsKLQotICAgIEdsb2Jh
bElETWFwIG1fZ2xvYmFsSURNYXA7Ci0gICAgR2xvYmFsTG9jYXRpb25NYXAgbV9nbG9iYWxMb2Nh
dGlvbk1hcDsKLSAgICBHbG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXAgbV9nbG9iYWxMb2NhdGlv
blRvR2xvYmFsSURNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludHB0cl90LCBWZWN0b3I8VHlw
ZUxvY2F0aW9uKj4+IFNvdXJjZUlEVG9Mb2NhdGlvbkJ1Y2tldE1hcDsKKyAgICBTb3VyY2VJRFRv
TG9jYXRpb25CdWNrZXRNYXAgbV9idWNrZXRNYXA7CiB9OwogCiB9IC8vbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTcwNjEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MjgsNyArOTI4LDcgQEAgdm9pZCBWTTo6c2V0RW5hYmxlZFByb2ZpbGVyKExlZ2FjeVByb2Zp
bAogICAgIH0KIH0KIAotU3RyaW5nIFZNOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNp
Z25lZCBzdGFydExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1
bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBjb25zdCBTdHJp
bmcmIHNvdXJjZUlEQXNTdHJpbmcpCitTdHJpbmcgVk06OmdldFR5cGVzRm9yVmFyaWFibGVBdE9m
ZnNldCh1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBjb25zdCBT
dHJpbmcmIHNvdXJjZUlEQXNTdHJpbmcpCiB7CiAgICAgaWYgKCFpc1Byb2ZpbGluZ1R5cGVzV2l0
aEhpZ2hGaWRlbGl0eSgpKQogICAgICAgICByZXR1cm4gIihOb3QgUHJvZmlsaW5nKSI7CkBAIC05
MzksNyArOTM5LDcgQEAgU3RyaW5nIFZNOjpnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bgog
ICAgICAgICBDUkFTSCgpOwogCiAgICAgdXBkYXRlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVTdGF0
ZSgpOwotICAgIHJldHVybiBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci0+Z2V0VHlwZXNGb3JW
YXJpYWJsZUluUmFuZ2Uoc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1u
LCB2YXJpYWJsZU5hbWUsIHNvdXJjZUlEKTsKKyAgICByZXR1cm4gbV9oaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXItPmdldFR5cGVzRm9yVmFyaWFibGVJbkF0T2Zmc2V0KG9mZnNldCwgdmFyaWFibGVO
YW1lLCBzb3VyY2VJRCk7CiB9CiAKIHZvaWQgVk06OnVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxlU3RhdGUoKQpAQCAtOTU5LDExICs5NTksMTEgQEAgdm9pZCBWTTo6ZHVtcEhpZ2hGaWRlbGl0
eVByb2ZpbGluZ1R5cGVzKAogICAgIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlciogcHJvZmlsZXIg
PSBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5nZXQoKTsKICAgICBmb3IgKEJhZzxUeXBlTG9j
YXRpb24+OjppdGVyYXRvciBpdGVyID0gbV9sb2NhdGlvbkluZm8uYmVnaW4oKTsgISFpdGVyOyAr
K2l0ZXIpIHsKICAgICAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9ICppdGVyOwotICAgICAg
ICBkYXRhTG9nRigiW0xpbmUsIENvbHVtbl06OlsldSwgJXVdICIsIGxvY2F0aW9uLT5tX2xpbmUs
IGxvY2F0aW9uLT5tX2NvbHVtbik7CisgICAgICAgIGRhdGFMb2dGKCJbU3RhcnQsIEVuZF06Olsl
dSwgJXVdICIsIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsIGxvY2F0aW9uLT5tX2Rpdm90RW5kKTsK
ICAgICAgICAgZGF0YUxvZygiXG5cdFx0I0xvY2FsI1xuXHRcdCIsCi0gICAgICAgICAgICAgICAg
cHJvZmlsZXItPmdldExvY2FsVHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UobG9jYXRpb24tPm1fbGlu
ZSwgbG9jYXRpb24tPm1fY29sdW1uLCBsb2NhdGlvbi0+bV9saW5lLCBsb2NhdGlvbi0+bV9jb2x1
bW4sICIiLCBsb2NhdGlvbi0+bV9zb3VyY2VJRCkucmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksCisg
ICAgICAgICAgICAgICAgcHJvZmlsZXItPmdldExvY2FsVHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0
KGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsICIiLCBsb2NhdGlvbi0+bV9zb3VyY2VJRCkucmVwbGFj
ZSgiXG4iLCAiXG5cdFx0IiksCiAgICAgICAgICAgICAgICAgIlxuXHRcdCNHbG9iYWwjXG5cdFx0
IiwKLSAgICAgICAgICAgICAgICBwcm9maWxlci0+Z2V0R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUlu
UmFuZ2UobG9jYXRpb24tPm1fbGluZSwgbG9jYXRpb24tPm1fY29sdW1uLCBsb2NhdGlvbi0+bV9s
aW5lLCBsb2NhdGlvbi0+bV9jb2x1bW4sICIiLCBsb2NhdGlvbi0+bV9zb3VyY2VJRCkucmVwbGFj
ZSgiXG4iLCAiXG5cdFx0IiksCisgICAgICAgICAgICAgICAgcHJvZmlsZXItPmdldEdsb2JhbFR5
cGVzRm9yVmFyaWFibGVBdE9mZnNldChsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0LCAiIiwgbG9jYXRp
b24tPm1fc291cmNlSUQpLnJlcGxhY2UoIlxuIiwgIlxuXHRcdCIpLAogICAgICAgICAgICAgICAg
ICJcbiIpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2
aXNpb24gMTcwNjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29y
a2luZyBjb3B5KQpAQCAtNTE2LDcgKzUxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBC
dWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVjdXRhYmxlcygpIHsgcmV0dXJuIG1fYnVpbHRp
bkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKICAgICAgICAgYm9vbCBpc1Byb2ZpbGluZ1R5cGVzV2l0
aEhpZ2hGaWRlbGl0eSgpIHsgcmV0dXJuICEhbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI7IH0K
LSAgICAgICAgU3RyaW5nIGdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0
TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVu
ZENvbHVtbiwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNl
SUQpOworICAgICAgICBTdHJpbmcgZ2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0KHVuc2lnbmVk
IGRpdm90LCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VJ
RCk7CiAgICAgICAgIEhpZ2hGaWRlbGl0eUxvZyogaGlnaEZpZGVsaXR5TG9nKCkgeyByZXR1cm4g
bV9oaWdoRmlkZWxpdHlMb2cuZ2V0KCk7IH0KICAgICAgICAgSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyKiBoaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKSB7IHJldHVybiBtX2hpZ2hGaWRlbGl0eVR5
cGVQcm9maWxlci5nZXQoKTsgfQogICAgICAgICB2b2lkIHVwZGF0ZUhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlU3RhdGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234237</attachid>
            <date>2014-07-01 20:34:25 -0700</date>
            <delta_ts>2014-07-03 11:14:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>80306</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwNjg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBA
QAorMjAxNC0wNy0wMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBkZWJ1Z2dlciBzaG91bGQgYmUgYWJsZSB0byBzaG93IHZhcmlhYmxl
IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzMzOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b3JlIG9wZXJhdGlvbnMgYXJlIG5vdyBiZWluZyByZWNvcmRlZCBieSB0aGUgcHJvZmlsZV90eXBl
c193aXRoX2hpZ2hfZmlkZWxpdHkgCisgICAgICAgIG9wY29kZS4gU3BlY2lmaWNhbGx5OiBmdW5j
dGlvbiBwYXJhbWV0ZXJzLCBmdW5jdGlvbiByZXR1cm4gdmFsdWVzLAorICAgICAgICBmdW5jdGlv
biAndGhpcycgdmFsdWUsIGdldF9ieV9pZCwgZ2V0X2J5X3ZhbHVlLCByZXNvbHZlIG5vZGVzLCBm
dW5jdGlvbiByZXR1cm4gCisgICAgICAgIHZhbHVlcyBhdCB0aGUgY2FsbCBzaXRlLiBBZGRlZCBt
b3JlIGZsYWdzIHRvIHRoZSBwcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eQorICAgICAg
ICBvcGNvZGUgc28gbW9yZSBmb2N1c2VkIHRhc2tzIGNhbiB0YWtlIHBsYWNlIHdoZW4gdGhlIGlu
c3RydWN0aW9uIGlzCisgICAgICAgIGJlaW5nIGxpbmtlZCBpbiBDb2RlQmxvY2suIFJlLXdvcmtl
ZCB0aGUgdHlwZSBwcm9maWxlciB0byBzZWFyY2ggCisgICAgICAgIHRocm91Z2ggY2hhcmFjdGVy
IG9mZnNldCByYW5nZXMgd2hlbiBhc2tlZCBmb3IgdGhlIHR5cGUgb2YgYW4gZXhwcmVzc2lvbgor
ICAgICAgICBhdCBhIGdpdmVuIG9mZnNldC4gUmVtb3ZlZCByZWR1bmRhbnQgY2FsbHMgdG8gU3Ry
dWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlCisgICAgICAgIGluIEhpZ2hGaWRlbGl0eUxvZyBhbmQg
VHlwZVNldCBieSBjYWNoaW5nIGNhbGxzIGJhc2VkIG9uIFN0cnVjdHVyZUlELgorCisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2NvcGVEZXBlbmRlbnRQcm9maWxlKToKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpyZXR1
cm5TdGF0ZW1lbnRUeXBlU2V0KToKKyAgICAgICAgKiBieXRlY29kZS9UeXBlTG9jYXRpb24uaDoK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpoaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZv
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRk
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVFeHByZXNzaW9uSW5mbyk6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmUp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByb2ZpbGVUeXBlc1dpdGhI
aWdoRmlkZWxpdHkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZy
b21TY29wZVdpdGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRUb1Njb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRU
b1Njb3BlV2l0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFs
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhw
cmVzc2lvbkluZm8pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAoSlNDOjpSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
QnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG90QWNj
ZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1
ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXRSZXNvbHZlKToKKyAgICAg
ICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXRCcmFja2V0KToKKyAgICAgICAgKEpTQzo6UG9zdGZp
eE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZSk6
CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRCcmFja2V0KToKKyAgICAgICAgKEpTQzo6
UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5O
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRS
dW50aW1lVHlwZUZvclZhcmlhYmxlQXRPZmZzZXQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlRm9yVmFyaWFibGVJblRleHRSYW5nZSk6
IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29uOgorICAgICAg
ICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZy
b21TY29wZUNvbW1vbik6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVD
TCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0eUxv
Zy5jcHA6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eUxvZzo6cHJvY2Vzc0hpZ2hGaWRlbGl0
eUxvZyk6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eUxvZzo6YWN0dWFsbHlQcm9jZXNzTG9n
VGhyZWFkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6OnJlY29yZFR5
cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0hp
Z2hGaWRlbGl0eUxvZy5oOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlMb2c6OnJlY29yZFR5
cGVJbmZvcm1hdGlvbkZvckxvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0
eVR5cGVQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
cjo6Z2V0VHlwZXNGb3JWYXJpYWJsZUluQXRPZmZzZXQpOgorICAgICAgICAoSlNDOjpIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXI6OmdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVBdE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYWxUeXBlc0ZvclZh
cmlhYmxlQXRPZmZzZXQpOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6
Omluc2VydE5ld0xvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6SGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyOjpmaW5kTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXI6OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5n
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0
TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Okhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYXRpb25CYXNlZEhhc2gpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmg6CisgICAgICAgIChK
U0M6OkxvY2F0aW9uS2V5OjpMb2NhdGlvbktleSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Okxv
Y2F0aW9uS2V5OjpoYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TG9jYXRpb25LZXk6Om9w
ZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAg
ICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6VHlwZVNl
dCk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OmFkZFR5cGVGb3JWYWx1ZSk6CisgICAgICAgIChK
U0M6OlR5cGVTZXQ6OnNlZW5UeXBlcyk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OnJlbW92ZUR1
cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
VHlwZVNldC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6
Z2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Vk06OmR1bXBIaWdo
RmlkZWxpdHlQcm9maWxpbmdUeXBlcyk6CisgICAgICAgIChKU0M6OlZNOjpnZXRUeXBlc0ZvclZh
cmlhYmxlSW5SYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE0
LTA3LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbZnRsb3B0
XSBEZWJ1Z2dlckNhbGxGcmFtZTo6c2NvcGUoKSBzaG91bGQgcmV0dXJuIGEgRGVidWdnZXJTY29w
ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24JKHJldmlzaW9uIDE3MDY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw3IEBA
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXh0X3BuYW1lIiwgImxlbmd0aCIgOiA3IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXNvbHZlX3Njb3BlIiwgImxlbmd0aCIgOiA2
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfZnJvbV9zY29wZSIsICJsZW5ndGgi
IDogOCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2Zyb21fc2NvcGVfd2l0aF9w
cm9maWxlIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRf
dG9fc2NvcGUiLCAibGVuZ3RoIiA6IDcgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1
dF90b19zY29wZV93aXRoX3Byb2ZpbGUiLCAibGVuZ3RoIiA6IDggfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX3B1c2hfd2l0aF9zY29wZSIsICJsZW5ndGgiIDogMiB9LApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlz
aW9uIDE3MDY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfaW5pdF9nbG9iYWxfY29uc3Rfbm9wOgog
ICAgIGNhc2Ugb3BfaW5pdF9nbG9iYWxfY29uc3Q6CiAgICAgY2FzZSBvcF9wdXNoX25hbWVfc2Nv
cGU6CisgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZV93aXRoX3Byb2ZpbGU6CiAgICAgY2FzZSBv
cF9nZXRfZnJvbV9zY29wZToKICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToKICAgICBjYXNlIG9w
X2dldF9ieV9pZDoKQEAgLTMxMyw2ICszMTQsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsCiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CiAgICAgY2FzZSBvcF9j
YWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczoKKyAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlX3dpdGhfcHJvZmlsZToKICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3Bl
OgogICAgIGNhc2Ugb3BfY2FsbDoKICAgICBjYXNlIG9wX2NhbGxfZXZhbDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNzA2
ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY2NSw2ICsxNjY1LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2Ny
aXB0RXhlY3V0YWJsZSogbwogICAgICwgbV9vc3JFeGl0Q291bnRlcigwKQogICAgICwgbV9vcHRp
bWl6YXRpb25EZWxheUNvdW50ZXIoMCkKICAgICAsIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50
ZXIoMCkKKyAgICAsIG1fcmV0dXJuU3RhdGVtZW50VHlwZVNldChudWxscHRyKQogI2lmIEVOQUJM
RShKSVQpCiAgICAgLCBtX2NhcGFiaWxpdHlMZXZlbFN0YXRlKERGRzo6Q2FwYWJpbGl0eUxldmVs
Tm90U2V0KQogI2VuZGlmCkBAIC0xODk4LDExICsxODk5LDEzIEBAIENvZGVCbG9jazo6Q29kZUJs
b2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZV93aXRoX3Byb2ZpbGU6CiAgICAgICAgIGNh
c2Ugb3BfZ2V0X2Zyb21fc2NvcGU6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOworICAgICAg
ICAgICAgaW50IG9mZnNldCA9IChwY1swXS51Lm9wY29kZSA9PSBvcF9nZXRfZnJvbV9zY29wZV93
aXRoX3Byb2ZpbGUgPyAyIDogMSk7CisgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gb2Zmc2V0XS51Lm9wZXJhbmRdOwogICAg
ICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwogICAgICAg
ICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVj
dGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyBvcExlbmd0aCAtIG9mZnNldF0gPSBwcm9maWxlOwogCiAgICAgICAgICAgICAvLyBn
ZXRfZnJvbV9zY29wZSBkc3QsIHNjb3BlLCBpZCwgUmVzb2x2ZU1vZGVBbmRUeXBlLCBTdHJ1Y3R1
cmUsIE9wZXJhbmQKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRp
ZmllcihwY1szXS51Lm9wZXJhbmQpOwpAQCAtMTkxNSw2ICsxOTE4LDE0IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgICAgIGVsc2UgaWYgKG9wLnN0
cnVjdHVyZSkKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUuc3RydWN0dXJl
LnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5zdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihv
cC5vcGVyYW5kKTsKKworICAgICAgICAgICAgaWYgKHBjWzBdLnUub3Bjb2RlID09IG9wX2dldF9m
cm9tX3Njb3BlX3dpdGhfcHJvZmlsZSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBmb3JtYXQg
b2YgdGhpcyBpbnN0cnVjdGlvbiBpczogZ2V0X2Zyb21fc2NvcGVfd2l0aF9wcm9maWxlIGRzdCwg
c2NvcGUsIGlkLCBSZXNvbHZlTW9kZUFuZFR5cGUsIFN0cnVjdHVyZSwgT3BlcmFuZCwgLi4uLCBU
eXBlTG9jYXRpb24KKyAgICAgICAgICAgICAgICBzaXplX3QgaW5zdHJ1Y3Rpb25PZmZzZXQgPSBp
ICsgb3BMZW5ndGggLSAxOworICAgICAgICAgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24g
PSB2bSgpLT5uZXh0TG9jYXRpb24oKTsKKyAgICAgICAgICAgICAgICBzY29wZURlcGVuZGVudFBy
b2ZpbGUob3AsIGlkZW50LCBpbnN0cnVjdGlvbk9mZnNldCwgbG9jYXRpb24pOworICAgICAgICAg
ICAgICAgIGluc3RydWN0aW9uc1tpICsgOF0udS5sb2NhdGlvbiA9IGxvY2F0aW9uOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTkzNyw2NSArMTk0
OCw1OSBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAKICAgICAg
ICAgICAgIGlmIChwY1swXS51Lm9wY29kZSA9PSBvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxl
KSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGlzIGluc3RydWN0aW9uIGlz
OiBwdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlIHNjb3BlLCBpZCwgdmFsdWUsIFJlc29sdmVNb2Rl
QW5kVHlwZSwgU3RydWN0dXJlLCBPcGVyYW5kLCBUeXBlTG9jYXRpb24qCi0gICAgICAgICAgICAg
ICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IHZtKCktPm5leHRMb2NhdGlvbigpOwogICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnN0cnVjdGlvbk9mZnNldCA9IGkgKyBvcExlbmd0aCAtIDE7Ci0g
ICAgICAgICAgICAgICAgaW50IGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0OyAKLSAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsaW5lID0gMCwgY29sdW1uID0gMDsKLSAgICAgICAgICAgICAg
ICBleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChpbnN0cnVjdGlvbk9mZnNldCwgZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7Ci0KLSAgICAgICAgICAg
ICAgICBsb2NhdGlvbi0+bV9saW5lID0gbGluZTsKLSAgICAgICAgICAgICAgICBsb2NhdGlvbi0+
bV9jb2x1bW4gPSBjb2x1bW47Ci0gICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fc291cmNlSUQg
PSBtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKTsKLQotICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBoYW5kbGUgb3RoZXIgdmFsdWVzIGZvciBvcC50eXBlIGhlcmUsIGFuZCBhbHNvIGNvbnNp
ZGVyIHdoYXQgdG8gZG8gd2hlbiB3ZSBjYW4ndCBzdGF0aWNhbGx5IGRldGVybWluZSB0aGUgZ2xv
YmFsSUQKLSAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSAwOwotICAg
ICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIpIAotICAgICAgICAgICAgICAg
ICAgICBzeW1ib2xUYWJsZSA9IG9wLmFjdGl2YXRpb24tPnN5bWJvbFRhYmxlKCk7Ci0gICAgICAg
ICAgICAgICAgZWxzZSBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIpCi0gICAgICAgICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlID0gbV9nbG9iYWxPYmplY3QuZ2V0KCktPnN5bWJvbFRhYmxlKCk7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5t
X2xvY2spOwotICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlE
ID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCks
ICp2bSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCA9
c3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGlkZW50LmltcGwo
KSwgKnZtKCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBs
b2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEID0gSGlnaEZpZGVsaXR5Tm9HbG9iYWxJREV4aXN0
czsKLQotICAgICAgICAgICAgICAgIHZtKCktPmhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcigpLT5p
bnNlcnROZXdMb2NhdGlvbihsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgVHlwZUxvY2F0aW9u
KiBsb2NhdGlvbiA9IHZtKCktPm5leHRMb2NhdGlvbigpOworICAgICAgICAgICAgICAgIHNjb3Bl
RGVwZW5kZW50UHJvZmlsZShvcCwgaWRlbnQsIGluc3RydWN0aW9uT2Zmc2V0LCBsb2NhdGlvbik7
CiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA3XS51LmxvY2F0aW9uID0gbG9jYXRp
b247CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHk6IHsKLQorICAgICAg
ICAgICAgc2l6ZV90IGluc3RydWN0aW9uT2Zmc2V0ID0gaSArIG9wTGVuZ3RoIC0gMTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGRpdm90U3RhcnQsIGRpdm90RW5kOworICAgICAgICAgICAgYm9vbCBz
aG91bGRBbmFseXplID0gbV91bmxpbmtlZENvZGUtPmhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlRXhw
cmVzc2lvbkluZm9Gb3JCeXRlY29kZU9mZnNldChpbnN0cnVjdGlvbk9mZnNldCwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQpOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rl
cihwY1sxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
ID0gbV9zeW1ib2xUYWJsZS5nZXQoKTsKICAgICAgICAgICAgIFR5cGVMb2NhdGlvbiogbG9jYXRp
b24gPSB2bSgpLT5uZXh0TG9jYXRpb24oKTsKLSAgICAgICAgICAgIHNpemVfdCBpbnN0cnVjdGlv
bk9mZnNldCA9IGkgKyBvcExlbmd0aCAtIDE7Ci0gICAgICAgICAgICBpbnQgZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQ7IAotICAgICAgICAgICAgdW5zaWduZWQgbGluZSA9IDAsIGNvbHVt
biA9IDA7Ci0gICAgICAgICAgICBleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChpbnN0
cnVjdGlvbk9mZnNldCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVt
bik7CisgICAgICAgICAgICBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0ID0gZGl2b3RTdGFydDsKKyAg
ICAgICAgICAgIGxvY2F0aW9uLT5tX2Rpdm90RW5kID0gZGl2b3RFbmQ7CisgICAgICAgICAgICBs
b2NhdGlvbi0+bV9zb3VyY2VJRCA9IG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpOwogCi0g
ICAgICAgICAgICBpbnQgaGFzR2xvYmFsSURGbGFnID0gcGNbM10udS5vcGVyYW5kOwotICAgICAg
ICAgICAgaWYgKGhhc0dsb2JhbElERmxhZykgeworICAgICAgICAgICAgUHJvZmlsZVR5cGVzV2l0
aEhpZ2hGaWRlbGl0eUJ5dGVjb2RlRmxhZyBmbGFnID0gc3RhdGljX2Nhc3Q8UHJvZmlsZVR5cGVz
V2l0aEhpZ2hGaWRlbGl0eUJ5dGVjb2RlRmxhZz4ocGNbM10udS5vcGVyYW5kKTsKKyAgICAgICAg
ICAgIHN3aXRjaCAoZmxhZykgeworICAgICAgICAgICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29k
ZUhhc0dsb2JhbElEOiB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xv
YmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclJlZ2lzdGVyKGxvY2tlciwg
dmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpLCAqdm0oKSk7CiAgICAgICAgICAgICAgICAgbG9jYXRp
b24tPm1fZ2xvYmFsVHlwZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9yUmVnaXN0
ZXIobG9ja2VyLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCksICp2bSgpKTsKLSAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQ6IAorICAgICAg
ICAgICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZUZ1bmN0aW9uQXJndW1lbnQ6CisgICAgICAg
ICAgICBjYXNlIFByb2ZpbGVUeXBlc0J5dGVjb2RlRnVuY3Rpb25UaGlzT2JqZWN0OiB7CiAgICAg
ICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9IEhpZ2hGaWRlbGl0eU5v
R2xvYmFsSURFeGlzdHM7Ci0gICAgICAgICAgICAKLQotICAgICAgICAgICAgbG9jYXRpb24tPm1f
bGluZSA9IGxpbmU7Ci0gICAgICAgICAgICBsb2NhdGlvbi0+bV9jb2x1bW4gPSBjb2x1bW47Ci0g
ICAgICAgICAgICBsb2NhdGlvbi0+bV9zb3VyY2VJRCA9IG1fb3duZXJFeGVjdXRhYmxlLT5zb3Vy
Y2VJRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY2FzZSBQcm9maWxlVHlwZXNCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50OiB7Cisg
ICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNldCA9IHJldHVyblN0YXRlbWVu
dFR5cGVTZXQoKTsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlE
ID0gSGlnaEZpZGVsaXR5UmV0dXJuU3RhdGVtZW50OworICAgICAgICAgICAgICAgIGxvY2F0aW9u
LT5tX2Rpdm90Rm9yRnVuY3Rpb25PZmZzZXRJZlJldHVyblN0YXRlbWVudCA9IG1fc291cmNlT2Zm
c2V0OyAKKyAgICAgICAgICAgICAgICBpZiAoIXNob3VsZEFuYWx5emUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQmVjYXVzZSBzb21lIHJldHVybiBzdGF0ZW1lbnRzIGFyZSBhZGRlZCBpbXBs
aWNpdGx5ICh0byByZXR1cm4gdW5kZWZpbmVkIGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiksIGFu
ZCB0aGVzZSBub2RlcyBkb24ndCBlbWl0IGV4cHJlc3Npb24gcmFuZ2VzLCBnaXZlIHRoZW0gc29t
ZSByYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB0aGlzIGRpdm90IGlz
IG9uIHRoZSBvcGVuIGJyYWNlIG9mIHRoZSBmdW5jdGlvbi4gCisgICAgICAgICAgICAgICAgICAg
IGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQgPSBsb2NhdGlvbi0+bV9kaXZvdEVuZCA9IGxvY2F0aW9u
LT5tX2Rpdm90Rm9yRnVuY3Rpb25PZmZzZXRJZlJldHVyblN0YXRlbWVudDsKKyAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQW5hbHl6ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICB2bSgpLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+aW5zZXJ0TmV3TG9jYXRpb24o
bG9jYXRpb24pOworICAgICAgICAgICAgaWYgKHNob3VsZEFuYWx5emUpCisgICAgICAgICAgICAg
ICAgdm0oKS0+aGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKCktPmluc2VydE5ld0xvY2F0aW9uKGxv
Y2F0aW9uKTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgMl0udS5sb2NhdGlvbiA9IGxv
Y2F0aW9uOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotCiAgICAgICAgIGNhc2Ug
b3BfY2FwdHVyZWRfbW92OgogICAgICAgICBjYXNlIG9wX25ld19jYXB0dXJlZF9mdW5jOiB7CiAg
ICAgICAgICAgICBpZiAocGNbM10udS5pbmRleCA9PSBVSU5UX01BWCkgewpAQCAtMjQ2Niw2ICsy
NDcxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAg
ICAgICAgICAgIGFjdGl2YXRpb24uY2xlYXIoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGVfd2l0aF9wcm9m
aWxlOgogICAgICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZToKICAgICAgICAgICAgIGNh
c2Ugb3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZToKICAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X3RvX3Njb3BlOiB7CkBAIC0zODc3LDQgKzM4ODMsMzAgQEAgREZHOjpDYXBhYmlsaXR5TGV2ZWwg
Q29kZUJsb2NrOjpjYXBhYmlsaQogfQogI2VuZGlmCiAKK3ZvaWQgQ29kZUJsb2NrOjpzY29wZURl
cGVuZGVudFByb2ZpbGUoUmVzb2x2ZU9wIG9wLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgc2l6
ZV90IGluc3RydWN0aW9uT2Zmc2V0LCBUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQoreworICAgIHVu
c2lnbmVkIGRpdm90U3RhcnQsIGRpdm90RW5kOworICAgIGJvb2wgc2hvdWxkQW5hbHl6ZSA9IG1f
dW5saW5rZWRDb2RlLT5oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvRm9yQnl0
ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKKyAg
ICBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0ID0gZGl2b3RTdGFydDsKKyAgICBsb2NhdGlvbi0+bV9k
aXZvdEVuZCA9IGRpdm90RW5kOworICAgIGxvY2F0aW9uLT5tX3NvdXJjZUlEID0gbV9vd25lckV4
ZWN1dGFibGUtPnNvdXJjZUlEKCk7CisKKyAgICAvLyBGSVhNRTogaGFuZGxlIG90aGVyIHZhbHVl
cyBmb3Igb3AudHlwZSBoZXJlLCBhbmQgYWxzbyBjb25zaWRlciB3aGF0IHRvIGRvIHdoZW4gd2Ug
Y2FuJ3Qgc3RhdGljYWxseSBkZXRlcm1pbmUgdGhlIGdsb2JhbElECisgICAgU3ltYm9sVGFibGUq
IHN5bWJvbFRhYmxlID0gbnVsbHB0cjsKKyAgICBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyKSAK
KyAgICAgICAgc3ltYm9sVGFibGUgPSBvcC5hY3RpdmF0aW9uLT5zeW1ib2xUYWJsZSgpOworICAg
IGVsc2UgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyKQorICAgICAgICBzeW1ib2xUYWJsZSA9IG1f
Z2xvYmFsT2JqZWN0LmdldCgpLT5zeW1ib2xUYWJsZSgpOworICAgIAorICAgIGlmIChzeW1ib2xU
YWJsZSkgeworICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+
bV9sb2NrKTsKKyAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRh
YmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7Cisg
ICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQgPSBzeW1ib2xUYWJsZS0+Z2xvYmFsVHlw
ZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPSBIaWdoRmlkZWxpdHlOb0ds
b2JhbElERXhpc3RzOworCisgICAgaWYgKHNob3VsZEFuYWx5emUpCisgICAgICAgIHZtKCktPmhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlcigpLT5pbnNlcnROZXdMb2NhdGlvbihsb2NhdGlvbik7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTcwNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBA
CiAjaW5jbHVkZSAiUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oIgogI2luY2x1ZGUgIlJlZ0V4cE9i
amVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCisjaW5jbHVkZSAiVHlwZVNl
dC5oIgogI2luY2x1ZGUgIlVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCIKICNpbmNsdWRlICJWYWx1
ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTk0Miw2ICs5NDMs
MTMgQEAgcHVibGljOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBlbmRWYWxpZGF0
aW9uRGlkRmFpbCgpOwogCiAgICAgYm9vbCBpc0tub3duVG9CZUxpdmVEdXJpbmdHQygpOyAvLyBX
aWxsIG9ubHkgcmV0dXJuIHZhbGlkIHJlc3VsdHMgd2hlbiBjYWxsZWQgZHVyaW5nIEdDLiBBc3N1
bWVzIHRoYXQgeW91J3ZlIGFscmVhZHkgZXN0YWJsaXNoZWQgdGhhdCB0aGUgb3duZXIgZXhlY3V0
YWJsZSBpcyBsaXZlLgorICAgIFJlZlB0cjxUeXBlU2V0PiByZXR1cm5TdGF0ZW1lbnRUeXBlU2V0
KCkgCisgICAgeworICAgICAgICBpZiAoIW1fcmV0dXJuU3RhdGVtZW50VHlwZVNldCkKKyAgICAg
ICAgICAgIG1fcmV0dXJuU3RhdGVtZW50VHlwZVNldCA9IFR5cGVTZXQ6OmNyZWF0ZSgpOworCisg
ICAgICAgIHJldHVybiBtX3JldHVyblN0YXRlbWVudFR5cGVTZXQ7CisgICAgfQogCiAKIHByb3Rl
Y3RlZDoKQEAgLTEwMTIsNiArMTAyMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghbV9yYXJl
RGF0YSkKICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBhZG9wdFB0cihuZXcgUmFyZURhdGEpOwog
ICAgIH0KKworICAgIHZvaWQgc2NvcGVEZXBlbmRlbnRQcm9maWxlKFJlc29sdmVPcCwgY29uc3Qg
SWRlbnRpZmllciYsIHNpemVfdCwgVHlwZUxvY2F0aW9uKik7CiAgICAgCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICB2b2lkIHJlc2V0U3R1YkludGVybmFsKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwpAQCAtMTA5NCw2ICsxMTA0LDggQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IG1fbGl2ZW5lc3NBbmFseXNpczsKIAor
ICAgIFJlZlB0cjxUeXBlU2V0PiBtX3JldHVyblN0YXRlbWVudFR5cGVTZXQ7CisKICAgICBzdHJ1
Y3QgUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVHlwZUxvY2F0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1R5cGVMb2NhdGlv
bi5oCShyZXZpc2lvbiAxNzA2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VHlwZUxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogZW51bSBIaWdoRmlkZWxpdHlHbG9iYWxJREZsYWdzIHsKICAgICBIaWdoRmlk
ZWxpdHlOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbiA9IC0xLAotICAgIEhpZ2hGaWRlbGl0eU5vR2xv
YmFsSURFeGlzdHMgPSAtMgorICAgIEhpZ2hGaWRlbGl0eU5vR2xvYmFsSURFeGlzdHMgPSAtMiwK
KyAgICBIaWdoRmlkZWxpdHlSZXR1cm5TdGF0ZW1lbnQgPSAtMwogfTsKIAogY2xhc3MgVHlwZUxv
Y2F0aW9uIHsKLSAgICAgICAgICAgICAgICAgICAgICAgCiBwdWJsaWM6CiAgICAgVHlwZUxvY2F0
aW9uKCkgCiAgICAgICAgIDogbV9pbnN0cnVjdGlvblR5cGVTZXQoVHlwZVNldDo6Y3JlYXRlKCkp
CkBAIC00Niw4ICs0Niw5IEBAIHB1YmxpYzoKIAogICAgIGludDY0X3QgbV9nbG9iYWxWYXJpYWJs
ZUlEOwogICAgIGludHB0cl90IG1fc291cmNlSUQ7Ci0gICAgdW5zaWduZWQgbV9saW5lOwotICAg
IHVuc2lnbmVkIG1fY29sdW1uOworICAgIHVuc2lnbmVkIG1fZGl2b3RTdGFydDsKKyAgICB1bnNp
Z25lZCBtX2Rpdm90RW5kOworICAgIHVuc2lnbmVkIG1fZGl2b3RGb3JGdW5jdGlvbk9mZnNldElm
UmV0dXJuU3RhdGVtZW50OwogICAgIFJlZlB0cjxUeXBlU2V0PiBtX2luc3RydWN0aW9uVHlwZVNl
dDsKICAgICBSZWZQdHI8VHlwZVNldD4gbV9nbG9iYWxUeXBlU2V0OwogfTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMTcwNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA1LDYgKzQwNSwzMiBAQCB2
b2lkIFVubGlua2VkQ29kZUJsb2NrOjphZGRFeHByZXNzaW9uSW5mCiAgICAgbV9leHByZXNzaW9u
SW5mby5hcHBlbmQoaW5mbyk7CiB9CiAKK2Jvb2wgVW5saW5rZWRDb2RlQmxvY2s6OmhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvbkluZm9Gb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgdW5zaWduZWQmIHN0YXJ0RGl2b3QsIHVuc2lnbmVkJiBlbmREaXZvdCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgYXV0byBpdGVy
ID0gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUluZm9NYXAuZmluZChieXRlY29kZU9mZnNldCk7
CisgICAgaWYgKGl0ZXIgPT0gbV9oaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUluZm9NYXAuZW5kKCkp
IHsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nRigiRG9uJ3QgaGF2
ZSBhc3NpZ25tZW50IGluZm8gZm9yIG9mZnNldDoldVxuIiwgYnl0ZWNvZGVPZmZzZXQpOworICAg
ICAgICBzdGFydERpdm90ID0gVUlOVF9NQVg7CisgICAgICAgIGVuZERpdm90ID0gVUlOVF9NQVg7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgSGlnaEZpZGVsaXR5VHlw
ZVByb2ZpbGVFeHByZXNzaW9uUmFuZ2UmIHJhbmdlID0gaXRlci0+dmFsdWU7CisgICAgc3RhcnRE
aXZvdCA9IHJhbmdlLm1fc3RhcnREaXZvdDsKKyAgICBlbmREaXZvdCA9IHJhbmdlLm1fZW5kRGl2
b3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvbkluZm8odW5zaWduZWQgaW5zdHJ1Y3Rpb25P
ZmZzZXQsIHVuc2lnbmVkIHN0YXJ0RGl2b3QsIHVuc2lnbmVkIGVuZERpdm90KQoreworICAgIEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvblJhbmdlIHJhbmdlOworICAgIHJhbmdlLm1f
c3RhcnREaXZvdCA9IHN0YXJ0RGl2b3Q7CisgICAgcmFuZ2UubV9lbmREaXZvdCA9IGVuZERpdm90
OworICAgIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVJbmZvTWFwLnNldChpbnN0cnVjdGlvbk9m
ZnNldCwgcmFuZ2UpOyAgCit9CisKIHZvaWQgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkUHJvZ3Jh
bUNvZGVCbG9jayo+KGNlbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE3MDY4NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzMsNiArMjczLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhwcmVzc2lvbklu
Zm8odW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQsIGludCBkaXZvdCwKICAgICAgICAgaW50IHN0
YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1bW4p
OwogCisgICAgdm9pZCBhZGRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZUV4cHJlc3Npb25JbmZvKHVu
c2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0LCB1bnNpZ25lZCBzdGFydERpdm90LCB1bnNpZ25lZCBl
bmREaXZvdCk7CisKICAgICBib29sIGhhc0V4cHJlc3Npb25JbmZvKCkgeyByZXR1cm4gbV9leHBy
ZXNzaW9uSW5mby5zaXplKCk7IH0KIAogICAgIC8vIFNwZWNpYWwgcmVnaXN0ZXJzCkBAIC00NjUs
NiArNDY3LDggQEAgcHVibGljOgogICAgIHZvaWQgZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVP
ZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCYgZGl2b3QsCiAgICAgICAgIGludCYg
c3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNv
bHVtbik7CiAKKyAgICBib29sIGhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvbkluZm9G
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQmIHN0YXJ0
RGl2b3QsIHVuc2lnbmVkJiBlbmREaXZvdCk7CisKICAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcywgdW5zaWduZWQgZmly
c3RMaW5lLCB1bnNpZ25lZCBsaW5lQ291bnQsIHVuc2lnbmVkIGVuZENvbHVtbikKICAgICB7CiAg
ICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKQEAgLTU3Niw2ICs1ODAsMTIgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBPd25QdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CiAgICAgVmVjdG9y
PEV4cHJlc3Npb25SYW5nZUluZm8+IG1fZXhwcmVzc2lvbkluZm87CisgICAgc3RydWN0IEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvblJhbmdlIHsKKyAgICAgICAgcHVibGljOgorICAg
ICAgICAgICAgdW5zaWduZWQgbV9zdGFydERpdm90OworICAgICAgICAgICAgdW5zaWduZWQgbV9l
bmREaXZvdDsKKyAgICB9OworICAgIEhhc2hNYXA8dW5zaWduZWQsIEhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlRXhwcmVzc2lvblJhbmdlPiBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlSW5mb01hcDsK
IAogcHJvdGVjdGVkOgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTcwNjg1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDUsNyArMTAwNSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TW92ZSgKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHdh
dGNoYWJsZVZhcmlhYmxlKGRzdC0+aW5kZXgoKSkpOwogCiAgICAgaWYgKCFkc3QtPmlzVGVtcG9y
YXJ5KCkgJiYgaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKLSAgICAgICAgZW1p
dFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZHN0LCB0cnVlKTsKKyAgICAgICAgZW1pdFBy
b2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZHN0LCBQcm9maWxlVHlwZXNCeXRlY29kZUhhc0ds
b2JhbElEKTsKIAogICAgIHJldHVybiBkc3Q7CiB9CkBAIC0xMTE2LDE2ICsxMTE2LDEyIEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWwKICAgICByZXR1cm4gZHN0Owog
fQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRl
bGl0eShSZWdpc3RlcklEKiByZWdpc3RlclRvUHJvZmlsZSwgYm9vbCBoYXNHbG9iYWxJRCkKK3Zv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KFJl
Z2lzdGVySUQqIHJlZ2lzdGVyVG9Qcm9maWxlLCBQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5
Qnl0ZWNvZGVGbGFnIGZsYWcpCiB7CiAgICAgZW1pdE9wY29kZShvcF9wcm9maWxlX3R5cGVzX3dp
dGhfaGlnaF9maWRlbGl0eSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlZ2lzdGVyVG9Q
cm9maWxlLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7IC8vIHBsYWNl
aG9sZGVyIGZvciBUeXBlTG9jYXRpb24KLSAgICAvLyBUaGlzIGlzIGEgZmxhZyBpbmRpY2F0aW5n
IHdoZXRoZXIgd2Ugc2hvdWxkIHRyYWNrIHRoaXMgdmFsdWUgdG8gaXRzIGdsb2JhbElEIG9yIG5v
dC4KLSAgICBpZiAoaGFzR2xvYmFsSUQpCi0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgx
KTsKLSAgICBlbHNlCi0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7IC8vIFRoaXMgaXMgYSBwbGFjZWhvbGRlciBmb3IgdGhlIFR5
cGVMb2NhdGlvbiBvYmplY3QgcG9pbnRlci4KKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmxh
Zyk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3Rl
cklEKiBkc3QsIGJvb2wgYikKQEAgLTEyNjcsMjMgKzEyNjMsNDkgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRGcgogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnJvbVNjb3BlV2l0aFByb2ZpbGUoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
ciwgUmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUpCit7CisgICAgbV9jb2RlQmxvY2stPmFkZFByb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKworICAgIFVubGlu
a2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2Zyb21f
c2NvcGVfd2l0aF9wcm9maWxlKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbChkc3Qp
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGUtPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChpZGVudGlmaWVyKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKFJlc29sdmVNb2RlQW5kVHlwZShyZXNvbHZlTW9kZSwgcmVzb2x2ZVR5cGUo
KSkub3BlcmFuZCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7IC8vIFRoaXMgaXMgYSBwbGFjZWhvbGRlciBm
b3IgYSBUeXBlTG9jYXRpb24gcG9pbnRlci4KKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRvU2NvcGUoUmVnaXN0ZXJJRCogc2NvcGUs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZXNvbHZl
TW9kZSByZXNvbHZlTW9kZSkKIHsKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCiAgICAgLy8gcHV0X3RvX3Njb3Bl
IHNjb3BlLCBpZCwgdmFsdWUsIFJlc29sdmVNb2RlQW5kVHlwZSwgU3RydWN0dXJlLCBPcGVyYW5k
Ci0gICAgaWYgKGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAgICAgIGVt
aXRPcGNvZGUob3BfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSk7Ci0gICAgZWxzZQotICAgICAg
ICBlbWl0T3Bjb2RlKG9wX3B1dF90b19zY29wZSk7CisgICAgZW1pdE9wY29kZShvcF9wdXRfdG9f
c2NvcGUpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZS0+aW5kZXgoKSk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KGlkZW50aWZpZXIpKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChSZXNvbHZlTW9kZUFuZFR5cGUocmVzb2x2ZU1vZGUsIHJlc29sdmVUeXBlKCkpLm9wZXJh
bmQoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKLSAgICBpZiAoaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkK
LSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIHJldHVybiB2YWx1ZTsKK30K
KworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlV2l0aFByb2Zp
bGUoUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIFJlZ2lz
dGVySUQqIHZhbHVlLCBSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSkKK3sKKyAgICBtX2NvZGVCbG9j
ay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwor
CisgICAgZW1pdE9wY29kZShvcF9wdXRfdG9fc2NvcGVfd2l0aF9wcm9maWxlKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChhZGRDb25zdGFudChpZGVudGlmaWVyKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHZhbHVlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoUmVzb2x2ZU1vZGVB
bmRUeXBlKHJlc29sdmVNb2RlLCByZXNvbHZlVHlwZSgpKS5vcGVyYW5kKCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOyAvLyBUaGlzIGlzIGEgcGxhY2Vob2xkZXIgZm9yIGEg
VHlwZUxvY2F0aW9uIHBvaW50ZXIuCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0xMzUxLDkg
KzEzNzMsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
IAotICAgIGlmIChpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICBl
bWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1ZSwgZmFsc2UpOwotCiAgICAgcmV0
dXJuIHZhbHVlOwogfQogCkBAIC0xNDUxLDkgKzE0NzAsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5p
bmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJyYXlQcm9maWxlKTsKIAotICAg
IGlmIChpc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAgICAgICBlbWl0UHJv
ZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1ZSwgZmFsc2UpOwotCiAgICAgcmV0dXJuIHZh
bHVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxNzA2ODUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NSw2ICsxNTUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRyeURh
dGEqIHRyeURhdGE7CiAgICAgfTsKIAorICAgIGVudW0gUHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRl
bGl0eUJ5dGVjb2RlRmxhZyB7IAorICAgICAgICBQcm9maWxlVHlwZXNCeXRlY29kZUhhc0dsb2Jh
bElELAorICAgICAgICBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsCisg
ICAgICAgIFByb2ZpbGVUeXBlc0J5dGVjb2RlRnVuY3Rpb25Bcmd1bWVudCwKKyAgICAgICAgUHJv
ZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvblRoaXNPYmplY3QsCisgICAgICAgIFByb2ZpbGVUeXBl
c0J5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQgIAorICAgIH07CisKICAgICBjbGFzcyBC
eXRlY29kZUdlbmVyYXRvciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKQEAgLTMxNiw2ICszMjQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgbV9jb2RlQmxvY2stPmFkZEV4cHJlc3Npb25JbmZvKGluc3RydWN0aW9uT2Zmc2V0LCBk
aXZvdE9mZnNldCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbGluZSwgY29sdW1uKTsKICAgICAg
ICAgfQogCisgICAgICAgIHZvaWQgZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNz
aW9uSW5mbyhjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnREaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGVuZERpdm90KQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBzdGFydCA9
IHN0YXJ0RGl2b3Qub2Zmc2V0ICsgMTsgLy8gUmFuZ2VzIGFyZSBpbmNsdXNpdmUgb2YgdGhlaXIg
ZW5kcG9pbnRzLCBBTkQgMSBpbmRleGVkLgorICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gZW5k
RGl2b3Qub2Zmc2V0OyAvLyBFbmQgUmFuZ2VzIGFscmVhZHkgZ28gb25lIHBhc3QgdGhlIGluY2x1
c2l2ZSByYW5nZSwgc28gbm8gbmVlZCB0byBkbyArIDEgLSAxLgorICAgICAgICAgICAgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpbnN0cnVjdGlvbnMoKS5zaXplKCkgLSAxOworICAgICAg
ICAgICAgbV9jb2RlQmxvY2stPmFkZEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlRXhwcmVzc2lvbklu
Zm8oaW5zdHJ1Y3Rpb25PZmZzZXQsIHN0YXJ0LCBlbmQpOworICAgICAgICB9CisKICAgICAgICAg
QUxXQVlTX0lOTElORSBib29sIGxlZnRIYW5kU2lkZU5lZWRzQ29weShib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIGJvb2wgcmlnaHRJc1B1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biAobV9jb2RlVHlwZSAhPSBGdW5jdGlvbkNvZGUgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNj
b3BlQ2hhaW4oKSB8fCByaWdodEhhc0Fzc2lnbm1lbnRzKSAmJiAhcmlnaHRJc1B1cmU7CkBAIC0z
MzIsNyArMzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZW1pdE5v
ZGUobik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGVtaXRQcm9maWxlVHlwZXNXaXRoSGln
aEZpZGVsaXR5KFJlZ2lzdGVySUQqIGRzdCwgYm9vbCk7CisgICAgICAgIHZvaWQgZW1pdFByb2Zp
bGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoUmVnaXN0ZXJJRCogZHN0LCBQcm9maWxlVHlwZXNXaXRo
SGlnaEZpZGVsaXR5Qnl0ZWNvZGVGbGFnKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9h
ZChSZWdpc3RlcklEKiBkc3QsIGJvb2wpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZChS
ZWdpc3RlcklEKiBkc3QsIGRvdWJsZSk7CkBAIC0zOTksNyArNDE1LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlKCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRSZXNvbHZlU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJik7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRGcm9tU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBzY29wZSwgY29uc3QgSWRlbnRpZmllciYsIFJlc29sdmVNb2RlKTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEdldEZyb21TY29wZVdpdGhQcm9maWxlKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IElkZW50aWZpZXImLCBSZXNvbHZlTW9kZSk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25z
dCBJZGVudGlmaWVyJiwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlc29sdmVNb2RlKTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFB1dFRvU2NvcGVXaXRoUHJvZmlsZShSZWdpc3RlcklEKiBzY29wZSwg
Y29uc3QgSWRlbnRpZmllciYsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZXNvbHZlTW9kZSk7CiAKICAg
ICAgICAgUGFzc1JlZlB0cjxMYWJlbD4gZW1pdExhYmVsKExhYmVsKik7CiAgICAgICAgIHZvaWQg
ZW1pdExvb3BIaW50KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxNzA2ODUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1MiwxMyArMTUyLDIzIEBAIFJlZ2lzdGVySUQqIFJlc29sdmVOb2RlOjplbWl0Qnl0
ZWNvZGUoQnkKICAgICBpZiAoTG9jYWwgbG9jYWwgPSBnZW5lcmF0b3IubG9jYWwobV9pZGVudCkp
IHsKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dp
dGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlw
ZXNXaXRoSGlnaEZpZGVsaXR5KGxvY2FsLmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZUhhc0ds
b2JhbElEKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGluZ0V4cHJlc3Npb25JbmZvKG1fcG9zaXRpb24sIEpTVGV4dFBvc2l0aW9uKC0xLCBtX3Bvc2l0
aW9uLm9mZnNldCArIG1faWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgbG9jYWwuZ2V0
KCkpOwogICAgIH0KICAgICAKICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdCA9IG1fc3RhcnQgKyBt
X2lkZW50Lmxlbmd0aCgpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qs
IG1fc3RhcnQsIGRpdm90KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIG1faWRl
bnQpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbihkc3QpLCBzY29wZS5nZXQoKSwgbV9pZGVudCwgVGhyb3dJZk5vdEZvdW5k
KTsKKyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5
cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlV2l0aFByb2ZpbGUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc2Nv
cGUuZ2V0KCksIG1faWRlbnQsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKG1fcG9zaXRpb24sIEpT
VGV4dFBvc2l0aW9uKC0xLCBtX3Bvc2l0aW9uLm9mZnNldCArIG1faWRlbnQubGVuZ3RoKCksIC0x
KSk7CisgICAgfSBlbHNlCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3Bl
KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBU
aHJvd0lmTm90Rm91bmQpOworICAgIHJldHVybiByZXQ7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBBcnJheU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCkBAIC0zNzQsNyArMzg0LDEzIEBAIFJlZ2lzdGVySUQqIEJyYWNrZXRBY2Nlc3Nvck5v
ZGU6OmVtaXRCeXQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIG1f
c3Vic2NyaXB0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkg
PSBnZW5lcmF0b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQpOwogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpLCBwcm9wZXJ0eSk7CisgICAgUmVnaXN0ZXJJRCogZmluYWxEZXN0ID0gZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5l
cmF0b3IuZW1pdEdldEJ5VmFsKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOworICAg
IGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkoZmluYWxEZXN0
LCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KKyAgICByZXR1cm4gcmV0OwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRG90QWNjZXNzb3JOb2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zOTQsNyArNDEwLDEzIEBAIFJlZ2lzdGVySUQqIERvdEFj
Y2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2QKIG5vbkFyZ3VtZW50c1BhdGg6CiAgICAgUmVnaXN0ZXJJ
RCogYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCksIGJhc2UsIG1faWRlbnQpOworICAgIFJlZ2lzdGVySUQqIGZpbmFsRGVzdCA9IGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CisgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZSwgbV9pZGVudCk7CisgICAgaWYgKGdlbmVyYXRv
ci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShmaW5hbERlc3QsIFByb2ZpbGVUeXBl
c0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SGln
aEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgfQorICAgIHJldHVybiByZXQ7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBBcmd1bWVudExpc3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCkBAIC00NzMsNyArNDk1LDEyIEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9k
ZTo6ZW1pdEIKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOwogICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFs
dWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLmlz
UHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxl
VHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgIH0KKyAgICByZXR1cm4gcmV0OwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDg5LDcgKzUxNiwxMiBAQCBSZWdpc3RlcklEKiBGdW5j
dGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgLy8gVGhp
cyBwYXNzZXMgTm9FeHBlY3RlZEZ1bmN0aW9uIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgaWYgdGhl
IGZ1bmN0aW9uIGlzIGluIGEKICAgICAgICAgLy8gbG9jYWwgdmFyaWFibGUsIHRoZW4gaXQncyBu
b3Qgb25lIG9mIG91ciBidWlsdC1pbiBjb25zdHJ1Y3RvcnMuCi0gICAgICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZh
bHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGlmIChnZW5lcmF0
b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHJldHVyblZhbHVlLmdldCgp
LCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0Owog
ICAgIH0KIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOwpAQCAtNTAwLDcgKzUzMiwxMiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNv
bHZlTm9kZTo6ZW1pCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwg
ZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUo
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRHZXRGcm9tU2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
bV9pZGVudCwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxs
KHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIFJlZ2lzdGVy
SUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQo
KSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGln
aEZpZGVsaXR5KCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGln
aEZpZGVsaXR5KHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RI
YXZlR2xvYmFsSUQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KKyAg
ICByZXR1cm4gcmV0OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVu
Y3Rpb25DYWxsQnJhY2tldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA
QCAtNTE0LDcgKzU1MSwxMiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6
ZW1pCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxs
QXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFs
dWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGdlbmVyYXRv
ci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShyZXR1cm5WYWx1ZS5nZXQoKSwgUHJv
ZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElEKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQ2FsbERvdE5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTI3LDcgKzU2OSwxMiBAQCBSZWdpc3RlcklEKiBGdW5j
dGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4
cHJlc3Npb25FbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgp
LCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKLSAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5W
YWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZ2VuZXJh
dG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHJldHVyblZhbHVlLmdldCgpLCBQ
cm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgIH0KKyAgICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgUmVn
aXN0ZXJJRCogZ2V0QXJndW1lbnRCeVZhbChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGRz
dCwgSlNUZXh0UG9zaXRpb24gZGl2b3QsIEpTVGV4dFBvc2l0aW9uIGRpdm90U3RhcnQsIEpTVGV4
dFBvc2l0aW9uIGRpdm90RW5kKQpAQCAtNTk3LDYgKzY0NCwxMCBAQCBSZWdpc3RlcklEKiBDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pCiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIH0KKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5n
VHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZXNXaXRoSGlnaEZpZGVsaXR5KHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxlVHlwZXNCeXRl
Y29kZURvZXNOb3RIYXZlR2xvYmFsSUQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTcwNyw2ICs3
NTgsMTAgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAg
ICB9CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgp
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShy
ZXR1cm5WYWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElE
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVz
c2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlLmdldCgpOwogfQogCkBAIC03NDcsOSArODAyLDkgQEAgUmVnaXN0ZXJJRCogUG9z
dGZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dAogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUb051
bWJlcih0ZW1wRHN0LmdldCgpLCBsb2NhbFJlZyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE1vdmUodGVtcERzdFNyYy5nZXQoKSwgbG9jYWxSZWcpOwogICAgICAgICAgICAgZW1pdEluY09y
RGVjKGdlbmVyYXRvciwgdGVtcERzdFNyYy5nZXQoKSwgbV9vcGVyYXRvcik7Ci0gICAgICAgICAg
ICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCi0gICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGxvY2Fs
UmVnLCB0ZW1wRHN0U3JjLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9m
aWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRlbXBEc3QuZ2V0KCk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QpLCBsb2NhbFJlZywgbV9vcGVyYXRvcik7CkBAIC03NTksNyAr
ODE0LDEyIEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXQKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIGlkZW50KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFs
dWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHNjb3BlLmdldCgpLCBpZGVudCwgVGhyb3dJZk5vdEZvdW5kKTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwotICAgIGdlbmVy
YXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpLCBUaHJv
d0lmTm90Rm91bmQpOworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdo
RmlkZWxpdHkoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGVXaXRoUHJvZmls
ZShzY29wZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpLCBUaHJvd0lmTm90Rm91bmQpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5m
byhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0gZWxzZQorICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQoKSwgVGhyb3dJ
Zk5vdEZvdW5kKTsKKwogICAgIHJldHVybiBvbGRWYWx1ZS5nZXQoKTsKIH0KIApAQCAtNzgxLDYg
Kzg0MSwxMCBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQoQnl0CiAgICAg
UmVnaXN0ZXJJRCogb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHku
Z2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KHZhbHVlLmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RI
YXZlR2xvYmFsSUQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9m
aWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KICAg
ICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1
ZSk7CiB9CiAKQEAgLTgwMSw2ICs4NjUsMTAgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVt
aXREb3QoQnl0ZWNvZAogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRl
YyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCks
IG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFz
ZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpKTsKKyAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmls
aW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHZhbHVlLmdldCgpLCBQcm9maWxlVHlwZXNCeXRlY29k
ZURvZXNOb3RIYXZlR2xvYmFsSUQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0
eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwor
ICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0
LCBvbGRWYWx1ZSk7CiB9CiAKQEAgLTkyMSw5ICs5ODksOSBAQCBSZWdpc3RlcklEKiBQcmVmaXhO
b2RlOjplbWl0UmVzb2x2ZShCeXRlCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVt
cERzdCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TW92ZSh0ZW1wRHN0LmdldCgpLCBsb2NhbFJlZyk7CiAgICAgICAgICAgICBlbWl0
SW5jT3JEZWMoZ2VuZXJhdG9yLCB0ZW1wRHN0LmdldCgpLCBtX29wZXJhdG9yKTsKLSAgICAgICAg
ICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKLSAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUobG9j
YWxSZWcsIHRlbXBEc3QuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc1Byb2Zp
bGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0
aW9uSWZOZWVkZWQoZHN0LCB0ZW1wRHN0LmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBlbWl0
SW5jT3JEZWMoZ2VuZXJhdG9yLCBsb2NhbFJlZywgbV9vcGVyYXRvcik7CkBAIC05MzQsNyArMTAw
MiwxMSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZShCeXRlCiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBpZGVudCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBzY29wZS5nZXQoKSwgaWRlbnQsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgZW1pdEluY09y
RGVjKGdlbmVyYXRvciwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwotICAgIGdlbmVyYXRvci5l
bWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpLCBUaHJvd0lmTm90
Rm91bmQpOworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxp
dHkoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGVXaXRoUHJvZmlsZShzY29w
ZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpLCBUaHJvd0lmTm90Rm91bmQpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0gZWxzZSAKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCBpZGVudCwgdmFsdWUuZ2V0KCksIFRocm93SWZOb3RG
b3VuZCk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRz
dCwgdmFsdWUuZ2V0KCkpOwogfQogCkBAIC05NTQsNiArMTAyNiwxMCBAQCBSZWdpc3RlcklEKiBQ
cmVmaXhOb2RlOjplbWl0QnJhY2tldChCeXRlCiAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwg
dmFsdWUsIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5
VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7CisgICAgaWYgKGdlbmVyYXRv
ci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eSh2YWx1ZSwgUHJvZmlsZVR5cGVzQnl0
ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElEKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRIaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKKyAgICB9CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVk
KGRzdCwgcHJvcERzdC5nZXQoKSk7CiB9CiAKQEAgLTk3Miw2ICsxMDQ4LDEwIEBAIFJlZ2lzdGVy
SUQqIFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGUKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJh
dG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlJZChiYXNlLmdldCgpLCBpZGVudCwgdmFsdWUpOworICAgIGlmIChnZW5lcmF0b3IuaXNQ
cm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlkZWxpdHkodmFsdWUsIFByb2ZpbGVUeXBlc0J5dGVjb2Rl
RG9lc05vdEhhdmVHbG9iYWxJRCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgfQogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3Qs
IHByb3BEc3QuZ2V0KCkpOwogfQogCkBAIC0xNDI0LDkgKzE1MDQsOSBAQCBSZWdpc3RlcklEKiBS
ZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmVzdWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRNb3ZlKHJlc3VsdC5nZXQoKSwgbG9jYWwuZ2V0KCkpOwogICAgICAgICAgICAgZW1p
dFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgcmVzdWx0LmdldCgpLCByZXN1bHQuZ2V0
KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3du
VHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKLSAgICAgICAgICAgIGlmIChn
ZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkKLSAgICAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCks
IG5ld0Rpdm90KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2NhbC5nZXQoKSwg
cmVzdWx0LmdldCgpKTsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hG
aWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVl
ZGVkKGRzdCwgcmVzdWx0LmdldCgpKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE0MzgsNyAr
MTUxOCwxMyBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCCiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBtX2lkZW50KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIHNjb3BlLmdldCgpLCBtX2lkZW50LCBUaHJvd0lmTm90Rm91bmQpOwogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXN1bHQgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCks
IG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlw
ZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpLCB0aGlzKTsKLSAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgpLCBtX2lkZW50LCByZXN1bHQuZ2V0KCks
IFRocm93SWZOb3RGb3VuZCk7CisgICAgUmVnaXN0ZXJJRCogcmV0OyAKKyAgICBpZiAoZ2VuZXJh
dG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgcmV0ID0g
Z2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlV2l0aFByb2ZpbGUoc2NvcGUuZ2V0KCksIG1faWRlbnQs
IHJlc3VsdC5nZXQoKSwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRI
aWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRUb1Nj
b3BlKHNjb3BlLmdldCgpLCBtX2lkZW50LCByZXN1bHQuZ2V0KCksIFRocm93SWZOb3RGb3VuZCk7
CisgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEFzc2lnblJlc29sdmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC0xNDUzLDkgKzE1MzksOSBAQCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5
dGVjCiAgICAgICAgIGlmIChsb2NhbC5pc0NhcHR1cmVkKCkgfHwgZ2VuZXJhdG9yLmlzUHJvZmls
aW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0ZW1wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKHRlbXBEc3QuZ2V0KCksIG1fcmlnaHQpOwotICAgICAgICAg
ICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKQotICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShsb2Nh
bC5nZXQoKSwgdGVtcERzdC5nZXQoKSk7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJv
ZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGlu
YXRpb25JZk5lZWRlZChkc3QsIHRlbXBEc3QuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShsb2NhbC5nZXQoKSwgbV9yaWdo
dCk7CkBAIC0xNDY5LDcgKzE1NTUsMTMgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6
OmVtaXRCeXRlYwogICAgICAgICBkc3QgPSAwOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1
bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3JpZ2h0KTsKICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgbV9pZGVudCwgcmVz
dWx0LmdldCgpLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBE
b05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgUmVnaXN0ZXJJRCogcmV0OworICAgIGlmIChnZW5l
cmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICByZXQg
PSBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGVXaXRoUHJvZmlsZShzY29wZS5nZXQoKSwgbV9pZGVu
dCwgcmVzdWx0LmdldCgpLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91
bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZp
ZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CisgICAgfSBlbHNlCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShz
Y29wZS5nZXQoKSwgbV9pZGVudCwgcmVzdWx0LmdldCgpLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2Rl
KCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgcmV0dXJu
IHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkRvdE5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0ODIsNiArMTU3NCwx
MCBAQCBSZWdpc3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUoCiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIFJlZ2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25v
cmVkUmVzdWx0KCkpID8gcmVzdWx0IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVk
ZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQpLCByZXN1bHQpOwogICAgIGdlbmVy
YXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0KTsKKyAg
ICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KGZvcndhcmRS
ZXN1bHQsIFByb2ZpbGVUeXBlc0J5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25JbmZvKGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgfQogICAgIHJldHVybiBnZW5lcmF0b3IubW92
ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGZvcndhcmRSZXN1bHQpOwogfQogCkBAIC0xNDk2
LDcgKzE1OTIsMTIgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlYwog
ICAgIFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChn
ZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2
YWx1ZS5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6
OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkpOwogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVu
dCwgdXBkYXRlZFZhbHVlKTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdFB1
dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKKyAgICBpZiAoZ2VuZXJh
dG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpIHsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZXNXaXRoSGlnaEZpZGVsaXR5KHVwZGF0ZWRWYWx1ZSwgUHJvZmls
ZVR5cGVzQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElEKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkVycm9yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAQCAtMTUxOCw2ICsxNjE5LDEwIEBAIFJlZ2lzdGVySUQqIEFzc2lnbkJy
YWNrZXROb2RlOjplbWl0Qnl0ZWMKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogZm9yd2Fy
ZFJlc3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgPyByZXN1bHQgOiBn
ZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKHJlc3VsdCksIHJlc3VsdCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdl
dCgpLCBwcm9wZXJ0eS5nZXQoKSwgZm9yd2FyZFJlc3VsdCk7CisgICAgaWYgKGdlbmVyYXRvci5p
c1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShmb3J3YXJkUmVzdWx0LCBQcm9maWxlVHlw
ZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEhp
Z2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOworICAgIH0KICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZO
ZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKIH0KIApAQCAtMTUzNCw2ICsxNjM5LDEwIEBAIFJl
Z2lzdGVySUQqIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEIKIAogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB1cGRh
dGVkVmFsdWUpOworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoKSkgeworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkodXBkYXRlZFZhbHVlLCBQcm9maWxlVHlwZXNCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFs
SUQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxpbmdFeHBy
ZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIH0KIAogICAgIHJldHVy
biB1cGRhdGVkVmFsdWU7CiB9CkBAIC0yMDIyLDYgKzIxMzEsMTAgQEAgdm9pZCBSZXR1cm5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZQogICAgICAgICBkc3QgPSAwOwogCiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fdmFsdWUpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7
CisgICAgaWYgKGdlbmVyYXRvci5pc1Byb2ZpbGluZ1R5cGVzV2l0aEhpZ2hGaWRlbGl0eSgpKSB7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGVzV2l0aEhpZ2hGaWRlbGl0eShyZXR1
cm5SZWdpc3Rlci5nZXQoKSwgUHJvZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRl
bWVudCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4
cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgfQogICAgIGlmIChn
ZW5lcmF0b3Iuc2NvcGVEZXB0aCgpKSB7CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0
KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFBvcFNjb3BlcygwKTsKQEAgLTIzNDksNiArMjQ2
MiwyMiBAQCB2b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lCiAKIHZvaWQg
RnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqKQogeworICAgIGlmIChnZW5lcmF0b3IuaXNQcm9maWxpbmdUeXBlc1dp
dGhIaWdoRmlkZWxpdHkoKSkgeworICAgICAgICBKU1RleHRQb3NpdGlvbiBzdGFydCgtMSwgbV9z
dGFydFN0YXJ0T2Zmc2V0LCAtMSk7IC8vIFRoaXMgZGl2b3QgaXMgYXQgdGhlIG9wZW4gYnJhY2Ug
b2YgdGhlIGZ1bmN0aW9uLgorICAgICAgICBKU1RleHRQb3NpdGlvbiBlbmQoLTEsIG1fc3RhcnRT
dGFydE9mZnNldCArIDEsIC0xKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZXNX
aXRoSGlnaEZpZGVsaXR5KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvZmlsZVR5cGVzQnl0
ZWNvZGVGdW5jdGlvblRoaXNPYmplY3QpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEhpZ2hGaWRl
bGl0eVR5cGVQcm9maWxpbmdFeHByZXNzaW9uSW5mbyhzdGFydCwgZW5kKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3BhcmFtZXRlcnMtPnNpemUoKTsgaSsrKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIERlc3RydWN0dXJpbmcgYXNzaWdubWVudHMgaW50byBhcmd1
bWVudHMuCisgICAgICAgICAgICBpZiAoIW1fcGFyYW1ldGVycy0+YXQoaSktPmlzQmluZGluZ05v
ZGUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEJpbmRpbmdOb2Rl
KiBwYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxCaW5kaW5nTm9kZSo+KG1fcGFyYW1ldGVycy0+YXQo
aSkpOworICAgICAgICAgICAgUmVnaXN0ZXJJRCByZWcoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNl
dChpKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkoJnJlZywgUHJvZmlsZVR5cGVzQnl0ZWNvZGVGdW5jdGlvbkFyZ3VtZW50KTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZ0V4cHJlc3Npb25J
bmZvKHBhcmFtZXRlci0+ZGl2b3RTdGFydCgpLCBwYXJhbWV0ZXItPmRpdm90RW5kKCkpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxs
RnJhbWUsIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGluZVN0YXJ0T2Zm
c2V0KCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iu
aWdub3JlZFJlc3VsdCgpKTsKIApAQCAtMjM2NSw2ICsyNDk0LDggQEAgdm9pZCBGdW5jdGlvbkJv
ZHlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZQogICAgIC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3
ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KICAgICBpZiAoIXJldHVybk5vZGUpIHsK
ICAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpID8gZ2Vu
ZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVk
KCkpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVs
aXR5KCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlc1dpdGhIaWdoRmlk
ZWxpdHkocjAsIFByb2ZpbGVUeXBlc0J5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAv
LyBEbyBub3QgZW1pdCBleHByZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0
J3Mgbm90IGluIHRoZSB1c2VyJ3Mgc291cmNlIGNvZGUuCiAgICAgICAgIEFTU0VSVChzdGFydE9m
ZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5l
U3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAkocmV2aXNpb24gMTcwNjg1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDEwICsxOTEsMTAgQEAgdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OnJ1bihFcnJvclN0cgogewogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0UnVudGltZVR5cGVGb3JWYXJpYWJsZUluVGV4dFJhbmdlKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBpbl92YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5faWQsIGludCBp
bl9zdGFydExpbmUsIGludCBpbl9zdGFydENvbHVtbiwgaW50IGluX2VuZExpbmUsIGludCBpbl9l
bmRDb2x1bW4sIFN0cmluZyogb3V0X3R5cGVzKSAKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpnZXRSdW50aW1lVHlwZUZvclZhcmlhYmxlQXRPZmZzZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGluX3ZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBpbl9pZCwgaW50IGluX2Rpdm90
LCBTdHJpbmcqIG91dF90eXBlcykgCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsVk0oKTsKLSAgICBT
dHJpbmcgdHlwZXModm0uZ2V0VHlwZXNGb3JWYXJpYWJsZUluUmFuZ2UoaW5fc3RhcnRMaW5lLCBp
bl9zdGFydENvbHVtbiwgaW5fZW5kTGluZSwgaW5fZW5kQ29sdW1uLCBpbl92YXJpYWJsZU5hbWUs
IGluX2lkKSk7CisgICAgU3RyaW5nIHR5cGVzKHZtLmdldFR5cGVzRm9yVmFyaWFibGVBdE9mZnNl
dChpbl9kaXZvdCwgaW5fdmFyaWFibGVOYW1lLCBpbl9pZCkpOwogICAgICpvdXRfdHlwZXMgPSB0
eXBlczsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUnVudGltZUFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgJKHJldmlzaW9uIDE3
MDY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9w
ZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURl
c2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0
dWFsIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0
cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSdW50aW1lVHlwZUZvclZhcmlh
YmxlSW5UZXh0UmFuZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGluX3ZhcmlhYmxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBpbl9pZCwgaW50IGluX3N0YXJ0TGluZSwgaW50IGluX3N0YXJ0Q29s
dW1uLCBpbnQgaW5fZW5kTGluZSwgaW50IGluX2VuZENvbHVtbiwgU3RyaW5nKiBvdXRfdHlwZXMp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRSdW50aW1lVHlwZUZvclZhcmlhYmxlQXRP
ZmZzZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGluX3ZhcmlhYmxlTmFtZSwgY29uc3Qg
U3RyaW5nJiBpbl9pZCwgaW50IGluX2Rpdm90LCBTdHJpbmcqIG91dF90eXBlcykgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHNldFNjcmlwdERlYnVnU2VydmVyKFNjcmlwdERlYnVnU2VydmVyKiBzY3Jp
cHREZWJ1Z1NlcnZlcikgeyBtX3NjcmlwdERlYnVnU2VydmVyID0gc2NyaXB0RGVidWdTZXJ2ZXI7
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SdW50
aW1lLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9w
cm90b2NvbC9SdW50aW1lLmpzb24JKHJldmlzaW9uIDE3MDY4NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUnVudGltZS5qc29uCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTgsMTQgKzE5OCwxMSBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVz
IHJlcG9ydGluZyBvZiBleGVjdXRpb24gY29udGV4dHMgY3JlYXRpb24uIgogICAgICAgICB9LAog
ICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJnZXRSdW50aW1lVHlwZUZvclZhcmlhYmxl
SW5UZXh0UmFuZ2UiLAorICAgICAgICAgICAgIm5hbWUiOiAiZ2V0UnVudGltZVR5cGVGb3JWYXJp
YWJsZUF0T2Zmc2V0IiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAidmFyaWFibGVOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlZhcmlhYmxlIHdlIHdhbnQgdHlwZSBpbmZyb21hdGlvbiBmb3IuIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlSUQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3Jp
cHRpb24iOiAic291cmNlSUQgdW5pcXVlbHkgaWRlbnRpZnlpbmcgYSBzY3JpcHQiIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFydExpbmUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRl
c2NyaXB0aW9uIjogInN0YXJ0IGxpbmUgZm9yIHZhcmlhYmxlIG5hbWUiIH0sCi0gICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzdGFydENvbHVtbiIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3Jp
cHRpb24iOiAic3RhcnQgY29sdW1uIGZvciB2YXJpYWJsZSBuYW1lIiB9LAotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiZW5kTGluZSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24i
OiAiZW5kIGxpbmUgZm9yIHZhcmlhYmxlIG5hbWUiIH0sCi0gICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJlbmRDb2x1bW4iLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogImVuZCBj
b2x1bW4gZm9yIHZhcmlhYmxlIG5hbWUiIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRp
dm90IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJjaGFyYWN0ZXIgb2Zmc2V0
IGZvciBhc3NpZ25tZW50IHJhbmdlIiB9CiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgInJl
dHVybnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlcyIsICJ0eXBlIjogInN0
cmluZyIsICJkZXNjcmlwdGlvbiI6ICJUeXBlcyBmb3IgcmVxdWVzdGVkIHZhcmlhYmxlLiIgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CShyZXZpc2lvbiAxNzA2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDA4LDkgKzE0MDgsOCBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zCiAgICAgTExJTlRfUkVUVVJOKEpTU2Nv
cGU6OnJlc29sdmUoZXhlYywgZXhlYy0+c2NvcGUoKSwgaWRlbnQpKTsKIH0KIAotTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tX3Njb3BlKQorc3RhdGljIEpTVmFsdWUgZ2V0
RnJvbVNjb3BlQ29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBWTSYgdm0p
CiB7Ci0gICAgTExJTlRfQkVHSU4oKTsKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGV4
ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CiAgICAgSlNPYmpl
Y3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKICAg
ICBSZXNvbHZlTW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUocGNbNF0udS5vcGVyYW5kKTsKQEAgLTE0
MTgsOCArMTQxNyw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV8K
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSk7CiAgICAgaWYgKCFzY29wZS0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgewogICAgICAgICBpZiAobW9kZUFuZFR5cGUubW9k
ZSgpID09IFRocm93SWZOb3RGb3VuZCkKLSAgICAgICAgICAgIExMSU5UX1JFVFVSTihleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhl
YywgaWRlbnQpKSk7Ci0gICAgICAgIExMSU5UX1JFVFVSTihqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVuZGVm
aW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgfQogCiAgICAgLy8gQ292ZXJzIGltcGxpY2l0IGdsb2JhbHMuIFNpbmNlIHRo
ZXkgZG9uJ3QgZXhpc3QgdW50aWwgdGhleSBmaXJzdCBleGVjdXRlLCB3ZSBkaWRuJ3Qga25vdyBo
b3cgdG8gY2FjaGUgdGhlbSBhdCBjb21waWxlIHRpbWUuCkBAIC0xNDMyLDcgKzE0MzEsMjMgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tXwogICAgICAgICB9CiAgICAg
fQogCi0gICAgTExJTlRfUkVUVVJOKHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpKTsKKyAgICBy
ZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfZnJvbV9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IEpTVmFsdWUgdmFsdWUgPSBnZXRGcm9tU2NvcGVDb21tb24oZXhlYywgcGMsIHZtKTsKKyAgICBM
TElOVF9SRVRVUk4odmFsdWUpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Z2V0X2Zyb21fc2NvcGVfd2l0aF9wcm9maWxlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IGdldEZyb21TY29wZUNvbW1vbihleGVjLCBwYywgdm0pOworICAgIFR5
cGVMb2NhdGlvbiogbG9jYXRpb24gPSBwY1s4XS51LmxvY2F0aW9uOworICAgIHZtLmhpZ2hGaWRl
bGl0eUxvZygpLT5yZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbih2YWx1ZSwgbG9jYXRp
b24pOworICAgIExMSU5UX1JFVFVSTih2YWx1ZSk7CiB9CiAKIHN0YXRpYyBKU09iamVjdCogcHV0
VG9TY29wZUNvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgVk0mIHZtKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJl
dmlzaW9uIDE3MDY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDcgQEAgTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcgogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9oYW5kbGVfZXhjZXB0aW9uKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2dldF9mcm9tX3Njb3BlKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZ2V0X2Zyb21fc2NvcGVfd2l0aF9wcm9maWxlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlX3dpdGhfcHJvZmlsZSk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE3MDY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTI0MCwz
ICsxMjQwLDggQEAgX2xsaW50X29wX3B1dF90b19zY29wZV93aXRoX3Byb2ZpbGU6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF90b19z
Y29wZV93aXRoX3Byb2ZpbGUpCiAgICAgZGlzcGF0Y2goOCkKKworX2xsaW50X29wX2dldF9mcm9t
X3Njb3BlX3dpdGhfcHJvZmlsZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2Zyb21fc2NvcGVfd2l0aF9wcm9maWxlKQorICAgIGRp
c3BhdGNoKDkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxp
dHlMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hp
Z2hGaWRlbGl0eUxvZy5jcHAJKHJldmlzaW9uIDE3MDY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eUxvZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDIy
ICs1Myw2IEBAIEhpZ2hGaWRlbGl0eUxvZzo6fkhpZ2hGaWRlbGl0eUxvZygpCiAgICAgZGVsZXRl
W10gbV9uZXh0QnVmZmVyOwogfQogCi12b2lkIEhpZ2hGaWRlbGl0eUxvZzo6cmVjb3JkVHlwZUlu
Zm9ybWF0aW9uRm9yTG9jYXRpb24oSlNWYWx1ZSB2LCBUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQot
ewotICAgIEFTU0VSVChtX2xvZ1N0YXJ0UHRyKTsKLSAgICBBU1NFUlQobV9jdXJyZW50T2Zmc2V0
IDwgbV9oaWdoRmlkZWxpdHlMb2dTaXplKTsKLQotICAgIExvZ0VudHJ5KiBlbnRyeSA9IG1fbG9n
U3RhcnRQdHIgKyBtX2N1cnJlbnRPZmZzZXQ7Ci0KLSAgICBlbnRyeS0+bG9jYXRpb24gPSBsb2Nh
dGlvbjsKLSAgICBlbnRyeS0+dmFsdWUgPSB2OwotICAgIGVudHJ5LT5zdHJ1Y3R1cmUgPSAodi5p
c0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpIDogbnVsbHB0cik7Ci0KLSAgICBtX2N1
cnJlbnRPZmZzZXQgKz0gMTsKLSAgICBpZiAobV9jdXJyZW50T2Zmc2V0ID09IG1faGlnaEZpZGVs
aXR5TG9nU2l6ZSkKLSAgICAgICAgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyh0cnVlLCAiTG9nIEZ1
bGwiKTsKLX0KLQogdm9pZCBIaWdoRmlkZWxpdHlMb2c6OnByb2Nlc3NIaWdoRmlkZWxpdHlMb2co
Ym9vbCBhc3luY2hyb25vdXNseSwgU3RyaW5nIHJlYXNvbikKIHsKICAgICAvLyBUaGlzIHNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIGV4ZWN1dGlvbiB0aHJlYWQuCkBAIC04NSw5
ICs2OSw3IEBAIHZvaWQgSGlnaEZpZGVsaXR5TG9nOjpwcm9jZXNzSGlnaEZpZGVsaXQKICAgICBk
YXRhLT5tX2xvY2tlciA9IGxvY2tlcjsKIAogICAgIG1fY3VycmVudE9mZnNldCA9IDA7Ci0gICAg
TG9nRW50cnkqIHRlbXAgPSBtX2xvZ1N0YXJ0UHRyOwotICAgIG1fbG9nU3RhcnRQdHIgPSBtX25l
eHRCdWZmZXI7Ci0gICAgbV9uZXh0QnVmZmVyID0gdGVtcDsKKyAgICBzdGQ6OnN3YXAobV9sb2dT
dGFydFB0ciwgbV9uZXh0QnVmZmVyKTsKICAgICAKICAgICBpZiAoYXN5bmNocm9ub3VzbHkpCiAg
ICAgICAgIGNyZWF0ZVRocmVhZChhY3R1YWxseVByb2Nlc3NMb2dUaHJlYWRGdW5jdGlvbiwgZGF0
YSwgIlByb2Nlc3NIaWdoRmlkZWxpdHlMb2ciKTsKQEAgLTk3LDE5ICs3OSwyOCBAQCB2b2lkIEhp
Z2hGaWRlbGl0eUxvZzo6cHJvY2Vzc0hpZ2hGaWRlbGl0CiAKIHZvaWQgSGlnaEZpZGVsaXR5TG9n
OjphY3R1YWxseVByb2Nlc3NMb2dUaHJlYWRGdW5jdGlvbih2b2lkKiBhcmcpCiB7Ci0gICAgZG91
YmxlIGJlZm9yZSAgPSBjdXJyZW50VGltZU1TKCk7CisgICAgZG91YmxlIGJlZm9yZSA9IGN1cnJl
bnRUaW1lTVMoKTsKICAgICBUaHJlYWREYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VGhyZWFkRGF0
YSo+KGFyZyk7CiAgICAgTG9nRW50cnkqIGVudHJ5ID0gZGF0YS0+bV9wcm9jZXNzTG9nUHRyOwor
ICAgIEhhc2hNYXA8U3RydWN0dXJlSUQsIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+IHNlZW5TaGFw
ZXM7CiAgICAgc2l6ZV90IHByb2Nlc3NMb2dUb09mZnNldCA9IGRhdGEtPm1fcHJvY2Nlc3NMb2dU
b09mZnNldDsgCiAgICAgc2l6ZV90IGkgPSAwOwogICAgIHdoaWxlIChpIDwgcHJvY2Vzc0xvZ1Rv
T2Zmc2V0KSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZW50cnktPnN0cnVjdHVy
ZSA/IGVudHJ5LT5zdHJ1Y3R1cmUgOiBudWxscHRyOworICAgICAgICBTdHJ1Y3R1cmVJRCBpZCA9
IGVudHJ5LT5zdHJ1Y3R1cmVJRDsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBzaGFw
ZTsgCi0gICAgICAgIGlmIChzdHJ1Y3R1cmUpCi0gICAgICAgICAgICBzaGFwZSA9IHN0cnVjdHVy
ZS0+dG9TdHJ1Y3R1cmVTaGFwZSgpOworICAgICAgICBpZiAoaWQpIHsKKyAgICAgICAgICAgIGF1
dG8gaXRlciA9IHNlZW5TaGFwZXMuZmluZChpZCk7CisgICAgICAgICAgICBpZiAoaXRlciA9PSBz
ZWVuU2hhcGVzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgc2hhcGUgPSBlbnRyeS0+dmFsdWUu
YXNDZWxsKCktPnN0cnVjdHVyZSgpLT50b1N0cnVjdHVyZVNoYXBlKCk7CisgICAgICAgICAgICAg
ICAgc2VlblNoYXBlcy5zZXQoaWQsIHNoYXBlKTsKKyAgICAgICAgICAgIH0gZWxzZSAKKyAgICAg
ICAgICAgICAgICBzaGFwZSA9IGl0ZXItPnZhbHVlOworICAgICAgICB9CisKICAgICAgICAgaWYg
KGVudHJ5LT5sb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0KQotICAgICAgICAgICAgZW50cnktPmxv
Y2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmFkZFR5cGVGb3JWYWx1ZShlbnRyeS0+dmFsdWUsIHNo
YXBlKTsKLSAgICAgICAgZW50cnktPmxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldC0+YWRk
VHlwZUZvclZhbHVlKGVudHJ5LT52YWx1ZSwgc2hhcGUpOworICAgICAgICAgICAgZW50cnktPmxv
Y2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPmFkZFR5cGVGb3JWYWx1ZShlbnRyeS0+dmFsdWUsIHNo
YXBlLCBpZCk7CisgICAgICAgIGVudHJ5LT5sb2NhdGlvbi0+bV9pbnN0cnVjdGlvblR5cGVTZXQt
PmFkZFR5cGVGb3JWYWx1ZShlbnRyeS0+dmFsdWUsIHNoYXBlLCBpZCk7CisKICAgICAgICAgZW50
cnkrKzsKICAgICAgICAgaSsrOwogICAgIH0KQEAgLTExOCw3ICsxMDksNyBAQCB2b2lkIEhpZ2hG
aWRlbGl0eUxvZzo6YWN0dWFsbHlQcm9jZXNzTG9nCiAgICAgZGVsZXRlIGRhdGE7CiAgICAgZG91
YmxlIGFmdGVyID0gY3VycmVudFRpbWVNUygpOwogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBk
YXRhTG9nRigiUHJvY2Vzc2luZyB0aGUgbG9nIHRvb2s6ICclZicgbXNcbiIsIGFmdGVyIC0gYmVm
b3JlKTsKKyAgICAgICAgZGF0YUxvZ0YoIiBQcm9jZXNzaW5nIHRoZSBsb2cgdG9vazogJyVmJyBt
c1xuIiwgYWZ0ZXIgLSBiZWZvcmUpOwogfQogCiB9IC8vbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5TG9nLmgJKHJldmlz
aW9uIDE3MDY4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0
eUxvZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
cHVibGljOgogICAgICAgICBKU1ZhbHVlIHZhbHVlOwogICAgICAgICBUeXBlTG9jYXRpb24qIGxv
Y2F0aW9uOyAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgICAgIFN0cnVjdHVy
ZUlEIHN0cnVjdHVyZUlEOwogICAgIH07CiAKICAgICBIaWdoRmlkZWxpdHlMb2coKQpAQCAtNTYs
NyArNTYsMjIgQEAgcHVibGljOgogCiAgICAgfkhpZ2hGaWRlbGl0eUxvZygpOwogCi0gICAgdm9p
ZCByZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2NhdGlvbihKU1ZhbHVlIHYsIFR5cGVMb2NhdGlv
biopOworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZWNvcmRUeXBlSW5mb3JtYXRpb25Gb3JMb2Nh
dGlvbihKU1ZhbHVlIHZhbHVlLCBUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fbG9nU3RhcnRQdHIpOworICAgICAgICBBU1NFUlQobV9jdXJyZW50T2Zmc2V0
IDwgbV9oaWdoRmlkZWxpdHlMb2dTaXplKTsKKyAgICAKKyAgICAgICAgTG9nRW50cnkqIGVudHJ5
ID0gbV9sb2dTdGFydFB0ciArIG1fY3VycmVudE9mZnNldDsKKyAgICAKKyAgICAgICAgZW50cnkt
PmxvY2F0aW9uID0gbG9jYXRpb247CisgICAgICAgIGVudHJ5LT52YWx1ZSA9IHZhbHVlOworICAg
ICAgICBlbnRyeS0+c3RydWN0dXJlSUQgPSAodmFsdWUuaXNDZWxsKCkgPyB2YWx1ZS5hc0NlbGwo
KS0+c3RydWN0dXJlSUQoKSA6IDApOworICAgIAorICAgICAgICBtX2N1cnJlbnRPZmZzZXQgKz0g
MTsKKyAgICAgICAgaWYgKG1fY3VycmVudE9mZnNldCA9PSBtX2hpZ2hGaWRlbGl0eUxvZ1NpemUp
CisgICAgICAgICAgICBwcm9jZXNzSGlnaEZpZGVsaXR5TG9nKHRydWUsICJMb2cgRnVsbCIpOwor
ICAgIH0KKwogICAgIHZvaWQgcHJvY2Vzc0hpZ2hGaWRlbGl0eUxvZyhib29sIGFzeW5jaHJvbm91
c2x5ID0gZmFsc2UsIFN0cmluZyA9ICIiKTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyLmNwcAkocmV2aXNpb24gMTcwNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNTcg
KzMyLDY3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CiAKLVN0cmluZyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldFR5cGVzRm9yVmFy
aWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVu
c2lnbmVkIGVuZExpbmUgLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGNvbnN0IFN0cmluZyYgdmFyaWFi
bGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCkKK1N0cmluZyBIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXI6OmdldFR5cGVzRm9yVmFyaWFibGVJbkF0T2Zmc2V0KHVuc2lnbmVkIGRpdm90LCBjb25zdCBT
dHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpCiB7Ci0gICAgU3RyaW5nIGds
b2JhbCA9IGdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHN0YXJ0TGluZSwgc3RhcnRD
b2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7CisgICAg
U3RyaW5nIGdsb2JhbCA9IGdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVBdE9mZnNldChkaXZvdCwg
dmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7CiAgICAgaWYgKCFnbG9iYWwuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gZ2xvYmFsOwogICAgIAotICAgIHJldHVybiBnZXRMb2NhbFR5cGVzRm9yVmFy
aWFibGVJblJhbmdlKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwg
dmFyaWFibGVOYW1lLCBzb3VyY2VJRCk7CisgICAgcmV0dXJuIGdldExvY2FsVHlwZXNGb3JWYXJp
YWJsZUF0T2Zmc2V0KGRpdm90LCB2YXJpYWJsZU5hbWUsIHNvdXJjZUlEKTsKIH0KIAotV1RGOjpT
dHJpbmcgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyOjpnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxl
SW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQs
IGNvbnN0IFdURjo6U3RyaW5nJiwgaW50cHRyX3Qgc291cmNlSUQpCitTdHJpbmcgSGlnaEZpZGVs
aXR5VHlwZVByb2ZpbGVyOjpnZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXQodW5zaWdu
ZWQgZGl2b3QsIGNvbnN0IFN0cmluZyYgLCBpbnRwdHJfdCBzb3VyY2VJRCkKIHsKLSAgICBhdXRv
IGl0ZXJMb2NhdGlvbk1hcCA9IG1fZ2xvYmFsTG9jYXRpb25Ub0dsb2JhbElETWFwLmZpbmQoZ2V0
TG9jYXRpb25CYXNlZEhhc2goc291cmNlSUQsIHN0YXJ0TGluZSkpOwotICAgIGlmIChpdGVyTG9j
YXRpb25NYXAgPT0gbV9nbG9iYWxMb2NhdGlvblRvR2xvYmFsSURNYXAuZW5kKCkpCi0gICAgICAg
IHJldHVybiAiIjsKKyAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gZmluZExvY2F0aW9uKGRp
dm90LCBzb3VyY2VJRCk7CisgICAgaWYgKCFsb2NhdGlvbikKKyAgICAgICAgcmV0dXJuICAiIjsK
IAotICAgIGF1dG8gaXRlcklETWFwID0gbV9nbG9iYWxJRE1hcC5maW5kKGl0ZXJMb2NhdGlvbk1h
cC0+c2Vjb25kKTsKLSAgICBpZiAoaXRlcklETWFwID09IG1fZ2xvYmFsSURNYXAuZW5kKCkpCisg
ICAgaWYgKGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPT0gSGlnaEZpZGVsaXR5Tm9HbG9i
YWxJREV4aXN0cykKICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgcmV0dXJuIGl0ZXJJRE1hcC0+
c2Vjb25kLT5zZWVuVHlwZXMoKTsKKyAgICByZXR1cm4gbG9jYXRpb24tPm1fZ2xvYmFsVHlwZVNl
dC0+c2VlblR5cGVzKCk7CiB9CiAKLVdURjo6U3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxl
cjo6Z2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVu
c2lnbmVkICwgdW5zaWduZWQgLCB1bnNpZ25lZCAsIGNvbnN0IFdURjo6U3RyaW5nJiAsIGludHB0
cl90IHNvdXJjZUlEKQorU3RyaW5nIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0TG9jYWxU
eXBlc0ZvclZhcmlhYmxlQXRPZmZzZXQodW5zaWduZWQgZGl2b3QsIGNvbnN0IFN0cmluZyYgLCBp
bnRwdHJfdCBzb3VyY2VJRCkKIHsKLSAgICBhdXRvIGl0ZXIgPSBtX2dsb2JhbExvY2F0aW9uTWFw
LmZpbmQoZ2V0TG9jYXRpb25CYXNlZEhhc2goc291cmNlSUQsIHN0YXJ0TGluZSkpOwotICAgIGF1
dG8gZW5kID0gbV9nbG9iYWxMb2NhdGlvbk1hcC5lbmQoKTsKLSAgICBpZiAoaXRlciA9PSBlbmQp
CisgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IGZpbmRMb2NhdGlvbihkaXZvdCwgc291cmNl
SUQpOworICAgIGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybiAgIiI7CiAKLSAgICByZXR1
cm4gaXRlci0+c2Vjb25kLT5zZWVuVHlwZXMoKTsKKyAgICByZXR1cm4gbG9jYXRpb24tPm1faW5z
dHJ1Y3Rpb25UeXBlU2V0LT5zZWVuVHlwZXMoKTsKIH0KIAogdm9pZCBIaWdoRmlkZWxpdHlUeXBl
UHJvZmlsZXI6Omluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCiB7CiAg
ICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2dGKCJSZWdpc3RlcmluZyBsb2NhdGlvbjo6
IGxpbmU6JXUsIGNvbHVtbjoldVxuIiwgbG9jYXRpb24tPm1fbGluZSwgbG9jYXRpb24tPm1fY29s
dW1uKTsKLQotICAgIExvY2F0aW9uS2V5IGtleShnZXRMb2NhdGlvbkJhc2VkSGFzaChsb2NhdGlv
bi0+bV9zb3VyY2VJRCwgbG9jYXRpb24tPm1fbGluZSkpOworICAgICAgICBkYXRhTG9nRigiUmVn
aXN0ZXJpbmcgbG9jYXRpb246OiBkaXZvdFN0YXJ0OiV1LCBkaXZvdEVuZDoldVxuIiwgbG9jYXRp
b24tPm1fZGl2b3RTdGFydCwgbG9jYXRpb24tPm1fZGl2b3RFbmQpOwogCi0gICAgaWYgKGxvY2F0
aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgIT0gSGlnaEZpZGVsaXR5Tm9HbG9iYWxJREV4aXN0cykg
eyAKLSAgICAgICAgLy8gQnVpbGQgdGhlIG1hcHBpbmcgcmVsYXRpb25zaGlwcyBNYXAxOmtleT0+
Z2xvYmFsSWQsIE1hcDI6Z2xvYmFsSUQ9PlR5cGVTZXQgCi0gICAgICAgIG1fZ2xvYmFsTG9jYXRp
b25Ub0dsb2JhbElETWFwW2tleV0gPSBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEOwotICAg
ICAgICBtX2dsb2JhbElETWFwW2xvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSURdID0gbG9jYXRp
b24tPm1fZ2xvYmFsVHlwZVNldDsKKyAgICBpZiAoIW1fYnVja2V0TWFwLmNvbnRhaW5zKGxvY2F0
aW9uLT5tX3NvdXJjZUlEKSkgeworICAgICAgICBWZWN0b3I8VHlwZUxvY2F0aW9uKj4gYnVja2V0
OworICAgICAgICBtX2J1Y2tldE1hcC5zZXQobG9jYXRpb24tPm1fc291cmNlSUQsIGJ1Y2tldCk7
CiAgICAgfQogCi0gICAgbV9nbG9iYWxMb2NhdGlvbk1hcFtrZXldID0gbG9jYXRpb24tPm1faW5z
dHJ1Y3Rpb25UeXBlU2V0OworICAgIFZlY3RvcjxUeXBlTG9jYXRpb24qPiYgYnVja2V0ID0gbV9i
dWNrZXRNYXAuZmluZChsb2NhdGlvbi0+bV9zb3VyY2VJRCktPnZhbHVlOworICAgIGJ1Y2tldC5h
cHBlbmQobG9jYXRpb24pOwogfQogCi1Mb2NhdGlvbktleSBIaWdoRmlkZWxpdHlUeXBlUHJvZmls
ZXI6OmdldExvY2F0aW9uQmFzZWRIYXNoKGludHB0cl90IGlkLCB1bnNpZ25lZCBsaW5lKQorVHlw
ZUxvY2F0aW9uKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmZpbmRMb2NhdGlvbih1bnNpZ25l
ZCBkaXZvdCwgaW50cHRyX3Qgc291cmNlSUQpCiB7Ci0gICAgcmV0dXJuIExvY2F0aW9uS2V5KGlk
LCBsaW5lLCAxKTsKKyAgICBBU1NFUlQobV9idWNrZXRNYXAuY29udGFpbnMoc291cmNlSUQpKTsg
CisKKyAgICBWZWN0b3I8VHlwZUxvY2F0aW9uKj4mIGJ1Y2tldCA9IG1fYnVja2V0TWFwLmZpbmQo
c291cmNlSUQpLT52YWx1ZTsKKyAgICB1bnNpZ25lZCBkaXN0YW5jZSA9IFVJTlRfTUFYOyAvLyBC
ZWNhdXNlIGFzc2lnbm1lbnRzIG1heSBiZSBuZXN0ZWQsIG1ha2Ugc3VyZSB3ZSBmaW5kIHRoZSBj
bG9zZXN0IGVuY2xvc2luZyBhc3NpZ25tZW50IHRvIHRoaXMgY2hhcmFjdGVyIG9mZnNldC4KKyAg
ICBUeXBlTG9jYXRpb24qIGJlc3RNYXRjaCA9IG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9
IDAsIHNpemUgPSBidWNrZXQuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFR5cGVM
b2NhdGlvbiogbG9jYXRpb24gPSBidWNrZXQuYXQoaSk7CisgICAgICAgIGlmIChsb2NhdGlvbi0+
bV9kaXZvdFN0YXJ0IDw9IGRpdm90ICYmIGRpdm90IDw9IGxvY2F0aW9uLT5tX2Rpdm90RW5kICYm
IGxvY2F0aW9uLT5tX2Rpdm90RW5kIC0gbG9jYXRpb24tPm1fZGl2b3RTdGFydCA8PSBkaXN0YW5j
ZSkgeworICAgICAgICAgICAgZGlzdGFuY2UgPSBsb2NhdGlvbi0+bV9kaXZvdEVuZCAtIGxvY2F0
aW9uLT5tX2Rpdm90U3RhcnQ7CisgICAgICAgICAgICBiZXN0TWF0Y2ggPSBsb2NhdGlvbjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBCZXN0TWF0Y2ggc2hvdWxkIG5ldmVyIGJl
IG51bGwuIFRoaXMgZG9lc24ndCBob2xkIGN1cnJlbnRseSBiZWNhdXNlIHdlIGlnbm9yZSBzb21l
IEV2YWwvV2l0aC9WYXJJbmplY3Rpb24gdmFyaWFibGUgYXNzaWdubWVudHMuCisgICAgcmV0dXJu
IGJlc3RNYXRjaDsKIH0KIAogfSAvL25hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5o
CShyZXZpc2lvbiAxNzA2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNTcgKzMxLDI1IEBA
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1ldGhvZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFR5cGVMb2NhdGlvbjsKIAotc3RydWN0IExvY2F0
aW9uS2V5IHsKLQotcHVibGljOgotICAgIExvY2F0aW9uS2V5KGludHB0cl90IHNvdXJjZUlELCB1
bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1bW4pIAotICAgICAgICA6IG1fc291cmNlSUQoc291
cmNlSUQpCi0gICAgICAgICwgbV9saW5lKGxpbmUpCi0gICAgICAgICwgbV9jb2x1bW4oY29sdW1u
KQotCi0gICAgewotICAgIH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fbGluZSArIG1fc291cmNlSUQ7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6
IEZvciBub3csIHRoaXMgaXMgYSBoYWNrLiBXZSBkbyB0aGUgZm9sbG93aW5nOiBNYXA6IklEOkxp
bmUiID0+IFR5cGVTZXQuIE9idmlvdXNseSwgdGhpcyBhc3N1bWVzIGFsbCBhc3NpZ25tZW50cyBh
cmUgb24gZGlzY3JldGUgbGluZXMsIHdoaWNoIGlzIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uLgot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMb2NhdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9zb3VyY2VJRCA9PSBvdGhlci5tX3NvdXJjZUlECi0gICAgICAg
ICAgICAgICAmJiBtX2xpbmUgPT0gb3RoZXIubV9saW5lOwotICAgIH0KLQotICAgIGludHB0cl90
IG1fc291cmNlSUQ7Ci0gICAgdW5zaWduZWQgbV9saW5lOwotICAgIHVuc2lnbmVkIG1fY29sdW1u
OwotfTsKLQogY2xhc3MgSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyIHsKIAogcHVibGljOgotICAg
IFN0cmluZyBnZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUsIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7Ci0gICAgU3Ry
aW5nIGdldEdsb2JhbFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVt
biwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGludHB0cl90IHNvdXJjZUlEKTsKLSAgICBT
dHJpbmcgZ2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZSh1bnNpZ25lZCBzdGFydExpbmUs
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRMaW5lLCB1bnNpZ25lZCBlbmRDb2x1
bW4sIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7CisgICAg
U3RyaW5nIGdldFR5cGVzRm9yVmFyaWFibGVJbkF0T2Zmc2V0KHVuc2lnbmVkIGRpdm90LCBjb25z
dCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpOworICAgIFN0cmluZyBn
ZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXQodW5zaWduZWQgZGl2b3QsIGNvbnN0IFN0
cmluZyYgdmFyaWFibGVOYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCk7CisgICAgU3RyaW5nIGdldExv
Y2FsVHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0KHVuc2lnbmVkIGRpdm90LCBjb25zdCBTdHJpbmcm
IHZhcmlhYmxlTmFtZSwgaW50cHRyX3Qgc291cmNlSUQpOwogICAgIHZvaWQgaW5zZXJ0TmV3TG9j
YXRpb24oVHlwZUxvY2F0aW9uKik7CiAgICAgCiBwcml2YXRlOgotICAgIHN0YXRpYyBMb2NhdGlv
bktleSBnZXRMb2NhdGlvbkJhc2VkSGFzaChpbnRwdHJfdCwgdW5zaWduZWQpOworICAgIFR5cGVM
b2NhdGlvbiogZmluZExvY2F0aW9uKHVuc2lnbmVkIGRpdm90LCBpbnRwdHJfdCBzb3VyY2VJRCk7
CiAKLSAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxMb2NhdGlvbktleSwgUmVmUHRyPFR5
cGVTZXQ+LCBIYXNoTWV0aG9kPExvY2F0aW9uS2V5Pj4gR2xvYmFsTG9jYXRpb25NYXA7IAotICAg
IHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPGludDY0X3QsIFJlZlB0cjxUeXBlU2V0Pj4gR2xv
YmFsSURNYXA7IAotICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPExvY2F0aW9uS2V5LCBp
bnQ2NF90LCBIYXNoTWV0aG9kPExvY2F0aW9uS2V5Pj4gR2xvYmFsTG9jYXRpb25Ub0dsb2JhbElE
TWFwOwotCi0gICAgR2xvYmFsSURNYXAgbV9nbG9iYWxJRE1hcDsKLSAgICBHbG9iYWxMb2NhdGlv
bk1hcCBtX2dsb2JhbExvY2F0aW9uTWFwOwotICAgIEdsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1h
cCBtX2dsb2JhbExvY2F0aW9uVG9HbG9iYWxJRE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50
cHRyX3QsIFZlY3RvcjxUeXBlTG9jYXRpb24qPj4gU291cmNlSURUb0xvY2F0aW9uQnVja2V0TWFw
OworICAgIFNvdXJjZUlEVG9Mb2NhdGlvbkJ1Y2tldE1hcCBtX2J1Y2tldE1hcDsKIH07CiAKIH0g
Ly9uYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAkocmV2aXNpb24gMTcwNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgUHJv
cGVydHlOYW1lQXJyYXk7CiBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiBjbGFzcyBQcm9w
ZXJ0eVRhYmxlOwogY2xhc3MgU3RydWN0dXJlQ2hhaW47CitjbGFzcyBTdHJ1Y3R1cmVTaGFwZTsK
IGNsYXNzIFNsb3RWaXNpdG9yOwogY2xhc3MgSlNTdHJpbmc7CiBzdHJ1Y3QgRHVtcENvbnRleHQ7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAkocmV2aXNp
b24gMTcwNjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBUeXBlU2V0
OjpUeXBlU2V0KCkKICAgICA6IG1fc2VlblR5cGVzKFR5cGVOb3RoaW5nKQogICAgICwgbV9zdHJ1
Y3R1cmVIaXN0b3J5KG5ldyBWZWN0b3I8UmVmUHRyPFN0cnVjdHVyZVNoYXBlPj4pCi0gICAgLCBt
X21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkoZmFsc2UpCiB7CiB9CiAKQEAg
LTY5LDM0ICs2OCwzMSBAQCBSdW50aW1lVHlwZSBUeXBlU2V0OjpnZXRSdW50aW1lVHlwZUZvclZh
CiAgICAgcmV0dXJuIHJldDsKIH0KIAotdm9pZCBUeXBlU2V0OjphZGRUeXBlRm9yVmFsdWUoSlNW
YWx1ZSB2LCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBzaGFwZSkgCit2b2lkIFR5cGVTZXQ6
OmFkZFR5cGVGb3JWYWx1ZShKU1ZhbHVlIHYsIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNo
YXBlLCBTdHJ1Y3R1cmVJRCBpZCkgCiB7CiAgICAgUnVudGltZVR5cGUgdCA9IGdldFJ1bnRpbWVU
eXBlRm9yVmFsdWUodik7CiAgICAgbV9zZWVuVHlwZXMgPSBtX3NlZW5UeXBlcyB8IHQ7CiAKLSAg
ICBpZiAoc2hhcGUpIHsKLSAgICAgICAgbV9zdHJ1Y3R1cmVIaXN0b3J5LT5hcHBlbmQoc2hhcGUp
OwotICAgICAgICBtX21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0cnVjdHVyZUhpc3RvcnkgPSB0cnVl
OwotICAgIH0KLX0KKyAgICBpZiAoaWQgJiYgc2hhcGUpIHsKKyAgICAgICAgQVNTRVJUKG1fc3Ry
dWN0dXJlSURIaXN0b3J5LmlzVmFsaWRLZXkoaWQpKTsKKyAgICAgICAgYXV0byBpdGVyID0gbV9z
dHJ1Y3R1cmVJREhpc3RvcnkuZmluZChpZCk7CisgICAgICAgIGlmIChpdGVyID09IG1fc3RydWN0
dXJlSURIaXN0b3J5LmVuZCgpKSB7CisgICAgICAgICAgICBtX3N0cnVjdHVyZUlESGlzdG9yeS5z
ZXQoaWQsIDEpOworICAgICAgICAgICAgLy8gTWFrZSBvbmUgbW9yZSBwYXNzIG1ha2luZyBzdXJl
IHRoYXQgd2UgZG9uJ3QgaGF2ZSB0aGUgc2FtZSBzaGFwZS4gKFNhbWUgc2hhcGVzIG1heSBoYXZl
IGRpZmZlcmVudCBTdHJ1Y3R1cmVJRHMpLgorICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNl
OworICAgICAgICAgICAgU3RyaW5nIGhhc2ggPSBzaGFwZS0+cHJvcGVydHlIYXNoKCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJlSGlzdG9yeS0+c2l6ZSgp
OyBpKyspIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IG9iaiA9IG1f
c3RydWN0dXJlSGlzdG9yeS0+YXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKG9iai0+cHJvcGVy
dHlIYXNoKCkgPT0gaGFzaCkgeworICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KIAotdm9pZCBUeXBlU2V0OjpyZW1vdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KCkg
Ci17Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+KiBuZXdIaXN0b3J5ID0gbmV3
IFZlY3RvcjxSZWZQdHI8U3RydWN0dXJlU2hhcGU+PjsKLSAgICBIYXNoTWFwPFN0cmluZywgYm9v
bD4gY29udGFpbmVyOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0
b3J5LT5zaXplKCk7IGkrKykgewotICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGEgPSBt
X3N0cnVjdHVyZUhpc3RvcnktPmF0KGkpOwotICAgICAgICBTdHJpbmcgaGFzaCA9IGEtPnByb3Bl
cnR5SGFzaCgpOwotICAgICAgICBhdXRvIGl0ZXIgPSBjb250YWluZXIuZmluZChoYXNoKTsKLSAg
ICAgICAgaWYgKGl0ZXIgPT0gY29udGFpbmVyLmVuZCgpKSB7Ci0gICAgICAgICAgICBjb250YWlu
ZXIuYWRkKGhhc2gsIHRydWUpOwotICAgICAgICAgICAgbmV3SGlzdG9yeS0+YXBwZW5kKGEpOwor
ICAgICAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZUhpc3Rv
cnktPmFwcGVuZChzaGFwZSk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBkZWxldGUgbV9zdHJ1
Y3R1cmVIaXN0b3J5OwotICAgIG1fc3RydWN0dXJlSGlzdG9yeSA9IG5ld0hpc3Rvcnk7Ci0gICAg
bV9taWdodEhhdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5ID0gZmFsc2U7CiB9CiAKIFN0
cmluZyBUeXBlU2V0OjpzZWVuVHlwZXMoKSAKQEAgLTEwNCw5ICsxMDAsNiBAQCBTdHJpbmcgVHlw
ZVNldDo6c2VlblR5cGVzKCkgCiAgICAgaWYgKG1fc2VlblR5cGVzID09IFR5cGVOb3RoaW5nKQog
ICAgICAgICByZXR1cm4gIihVbnJlYWNoZWQgU3RhdGVtZW50KSI7CiAKLSAgICBpZiAobV9taWdo
dEhhdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KQotICAgICAgICByZW1vdmVEdXBsaWNh
dGVzSW5TdHJ1Y3R1cmVIaXN0b3J5KCk7Ci0KICAgICBTdHJpbmdCdWlsZGVyIHNlZW47CiAKICAg
ICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlRnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZVNldC5oCShyZXZpc2lvbiAxNzA2ODUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKICNpZm5kZWYgVHlwZVNldF9oCiAjZGVmaW5lIFR5cGVTZXRfaAogCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcyLDcg
KzczLDcgQEAgY2xhc3MgVHlwZVNldCA6IHB1YmxpYyBSZWZDb3VudGVkPFR5cGVTZQogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVTZXQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUeXBlU2V0KTsgfQogICAgIFR5cGVTZXQoKTsKLSAgICB2b2lkIGFkZFR5cGVGb3JW
YWx1ZShKU1ZhbHVlIHYsIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+KTsKKyAgICB2b2lkIGFk
ZFR5cGVGb3JWYWx1ZShKU1ZhbHVlIHYsIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+LCBTdHJ1
Y3R1cmVJRCk7CiAgICAgc3RhdGljIFJ1bnRpbWVUeXBlIGdldFJ1bnRpbWVUeXBlRm9yVmFsdWUo
SlNWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHNlZW5UeXBlcygpOwogCkBA
IC04MCw5ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdWludDMyX3QgbV9zZWVuVHlwZXM7CiAgICAg
dm9pZCBkdW1wU2VlblR5cGVzKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4+
KiBtX3N0cnVjdHVyZUhpc3Rvcnk7Ci0gICAgYm9vbCBtX21pZ2h0SGF2ZUR1cGxpY2F0ZXNJblN0
cnVjdHVyZUhpc3Rvcnk7Ci0gICAgdm9pZCByZW1vdmVEdXBsaWNhdGVzSW5TdHJ1Y3R1cmVIaXN0
b3J5KCk7Ci0KKyAgICBIYXNoTWFwPFN0cnVjdHVyZUlELCB1aW50OF90PiBtX3N0cnVjdHVyZUlE
SGlzdG9yeTsKIH07CiAKIH0gLy9uYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNzA2ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNiw3ICs5MjYsNyBAQCB2b2lk
IFZNOjpzZXRFbmFibGVkUHJvZmlsZXIoTGVnYWN5UHJvZmlsCiAgICAgfQogfQogCi1TdHJpbmcg
Vk06OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuc2lnbmVkIHN0YXJ0TGluZSwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbiwgY29u
c3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlSURBc1N0cmluZykK
K1N0cmluZyBWTTo6Z2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCwg
Y29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlSURBc1N0cmlu
ZykKIHsKICAgICBpZiAoIWlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkpCiAgICAg
ICAgIHJldHVybiAiKE5vdCBQcm9maWxpbmcpIjsKQEAgLTkzNyw3ICs5MzcsNyBAQCBTdHJpbmcg
Vk06OmdldFR5cGVzRm9yVmFyaWFibGVJblJhbmdlKHVuCiAgICAgICAgIENSQVNIKCk7CiAKICAg
ICB1cGRhdGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZVN0YXRlKCk7Ci0gICAgcmV0dXJuIG1faGln
aEZpZGVsaXR5VHlwZVByb2ZpbGVyLT5nZXRUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShzdGFydExp
bmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHZhcmlhYmxlTmFtZSwgc291cmNl
SUQpOworICAgIHJldHVybiBtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci0+Z2V0VHlwZXNGb3JW
YXJpYWJsZUluQXRPZmZzZXQob2Zmc2V0LCB2YXJpYWJsZU5hbWUsIHNvdXJjZUlEKTsKIH0KIAog
dm9pZCBWTTo6dXBkYXRlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVTdGF0ZSgpCkBAIC05NTcsMTEg
Kzk1NywxMSBAQCB2b2lkIFZNOjpkdW1wSGlnaEZpZGVsaXR5UHJvZmlsaW5nVHlwZXMoCiAgICAg
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyKiBwcm9maWxlciA9IG1faGlnaEZpZGVsaXR5VHlwZVBy
b2ZpbGVyLmdldCgpOwogICAgIGZvciAoQmFnPFR5cGVMb2NhdGlvbj46Oml0ZXJhdG9yIGl0ZXIg
PSBtX2xvY2F0aW9uSW5mby5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgewogICAgICAgICBUeXBl
TG9jYXRpb24qIGxvY2F0aW9uID0gKml0ZXI7Ci0gICAgICAgIGRhdGFMb2dGKCJbTGluZSwgQ29s
dW1uXTo6WyV1LCAldV0gIiwgbG9jYXRpb24tPm1fbGluZSwgbG9jYXRpb24tPm1fY29sdW1uKTsK
KyAgICAgICAgZGF0YUxvZ0YoIltTdGFydCwgRW5kXTo6WyV1LCAldV0gIiwgbG9jYXRpb24tPm1f
ZGl2b3RTdGFydCwgbG9jYXRpb24tPm1fZGl2b3RFbmQpOwogICAgICAgICBkYXRhTG9nKCJcblx0
XHQjTG9jYWwjXG5cdFx0IiwKLSAgICAgICAgICAgICAgICBwcm9maWxlci0+Z2V0TG9jYWxUeXBl
c0ZvclZhcmlhYmxlSW5SYW5nZShsb2NhdGlvbi0+bV9saW5lLCBsb2NhdGlvbi0+bV9jb2x1bW4s
IGxvY2F0aW9uLT5tX2xpbmUsIGxvY2F0aW9uLT5tX2NvbHVtbiwgIiIsIGxvY2F0aW9uLT5tX3Nv
dXJjZUlEKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwKKyAgICAgICAgICAgICAgICBwcm9maWxl
ci0+Z2V0TG9jYWxUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXQobG9jYXRpb24tPm1fZGl2b3RTdGFy
dCwgIiIsIGxvY2F0aW9uLT5tX3NvdXJjZUlEKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwKICAg
ICAgICAgICAgICAgICAiXG5cdFx0I0dsb2JhbCNcblx0XHQiLAotICAgICAgICAgICAgICAgIHBy
b2ZpbGVyLT5nZXRHbG9iYWxUeXBlc0ZvclZhcmlhYmxlSW5SYW5nZShsb2NhdGlvbi0+bV9saW5l
LCBsb2NhdGlvbi0+bV9jb2x1bW4sIGxvY2F0aW9uLT5tX2xpbmUsIGxvY2F0aW9uLT5tX2NvbHVt
biwgIiIsIGxvY2F0aW9uLT5tX3NvdXJjZUlEKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwKKyAg
ICAgICAgICAgICAgICBwcm9maWxlci0+Z2V0R2xvYmFsVHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0
KGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsICIiLCBsb2NhdGlvbi0+bV9zb3VyY2VJRCkucmVwbGFj
ZSgiXG4iLCAiXG5cdFx0IiksCiAgICAgICAgICAgICAgICAgIlxuIik7CiAgICAgfQogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNzA2ODUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTUsNyAr
NTE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVp
bHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0K
IAogICAgICAgICBib29sIGlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZpZGVsaXR5KCkgeyByZXR1
cm4gISFtX2hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjsgfQotICAgICAgICBTdHJpbmcgZ2V0VHlw
ZXNGb3JWYXJpYWJsZUluUmFuZ2UodW5zaWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgdW5zaWduZWQgZW5kTGluZSwgdW5zaWduZWQgZW5kQ29sdW1uLCBjb25zdCBTdHJpbmcm
IHZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CisgICAgICAgIFN0cmluZyBn
ZXRUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXQodW5zaWduZWQgZGl2b3QsIGNvbnN0IFN0cmluZyYg
dmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKICAgICAgICAgSGlnaEZpZGVs
aXR5TG9nKiBoaWdoRmlkZWxpdHlMb2coKSB7IHJldHVybiBtX2hpZ2hGaWRlbGl0eUxvZy5nZXQo
KTsgfQogICAgICAgICBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIqIGhpZ2hGaWRlbGl0eVR5cGVQ
cm9maWxlcigpIHsgcmV0dXJuIG1faGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmdldCgpOyB9CiAg
ICAgICAgIHZvaWQgdXBkYXRlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVTdGF0ZSgpOwo=
</data>
<flag name="review"
          id="258783"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>